Postfix SMTP验证 - 仅在安全端口

Postfix SMTP验证 - 仅在安全端口 所以,让我们假设您的用户即将离开假期,但需要使用 您的邮件服务器...

Postfix SMTP验证 - 仅在安全端口

所以让我们假设您的用户正在度假,但需要使用您的邮件服务器从组织外部转发邮件...让我们为安全端口设置SMTP身份验证,并允许从网络外部访问该身份验证。

[yourserver = server hostname]
[your-ip =您的服务器的IP地址]

cd /etc/postfix
vi main.cf

粘贴在网络下:

####### smtp auth
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_sasl_auth_enable =   yes
smtpd_sasl_type = cyrus
local_recipient_maps =
smtpd_use_tls = yes
smtp_tls_note_starttls_offer   = yes
smtpd_tls_key_file =   /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file =   /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile =   /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header   = yes
smtpd_tls_session_cache_timeout   = 3600s
tls_random_source =   dev:/dev/urandom
########

然后:

vi master.cf

粘贴smtp

smtps   inet n   -   n   - - smtpd
      -o smtpd_sasl_auth_enable=yes
      -o smtpd_reject_unlisted_sender=yes
      -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
      -o broken_sasl_auth_clients=yes

检查smtpd.conf文件并修改它:

locate smtpd.conf
vi /usr/lib/sasl2/smtpd.conf

删除文件的内容并粘贴到其中:

pwcheck_method: saslauthd
mech_list: plain login

检查SASL可用的机制运行:

saslauthd -V

将SASL身份验证设置为在系统启动时启动:

chkconfig --levels 235 saslauthd on

设置加密密钥:

mkdir /etc/postfix/ssl
cd ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

设置用于导入Internet Explorer(用于Outlook)/ Thunderbird的客户端证书(这将禁止使用自签名证书的警告):

openssl pkcs12 -export -in smtpd.crt -inkey smtpd.key -out OutlookSMTP.p12

重新加载配置:

postfix reload

最后使用您的防火墙脚本插入相关的iptables规则以从外部访问:

$IPTABLES -A INPUT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP --destination-port 465 -j ACCEPT

或者如果您的邮件服务器位于防火墙后面(假设您的服务器的LAN地址为10.10.1.4),请在防火墙上添加这些规则:

$IPTABLES -A FORWARD -i   $EXTIF -p tcp --dport 465 -d 10.10.1.4 -o $INTIF -j ACCEPT
$IPTABLES -A FORWARD -o   $EXTIF -p tcp --sport 465 -s 10.10.1.4 -i $INTIF -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $EXTIF -p tcp -d $EXTIP2 --dport 465 -j DNAT --to 10.10.1.4:465

完成了!

测试

检查端口是否正在监听:

netstat -ntpl | grep master

tcp     0    0     127.0.0.1:10025  0.0.0.0:*      LISTEN   8366/master
tcp     0    0     0.0.0.0:465      0.0.0.0:*      LISTEN   8366/master
tcp     0    0     0.0.0.0:25       0.0.0.0:*      LISTEN    8366/master

测试TLS和AUTH是否正常工作:

telnet localhost 465

[root@ls1 postfix]# telnet localhost 465
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 yourserver ESMTP Postfix
ehlo me
250-yourserver
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
^]
telnet> quit
Connection closed.
[root@ls1 postfix]#

要进一步测试创建一个帐户并使用mmencode或以下perl脚本获取Base64 Mime密码:

#!/usr/bin/perl
use strict;
use MIME::Base64;
if ( $#ARGV !=1) {
  die "Usage: encode_sasl_plain.pl <username> <password>n";
}
print encode_base64("$ARGV[0]?$ARGV[0]?$ARGV[1]");
exit 0;

生成Mime密码:

encode_sasl_plain.pl <username> <password>

Y2FtZXJvbnMAY2FtZXJvbnMAdGVzdGluZzA4

telnet localhost 465

Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 yourserver ESMTP Postfix
ehlo me
250-yourserver
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN Y2FtZXJvbnMAY2FtZXJvbnMAdGVzdGluZzA4
235 2.0.0 Authentication successful

**如果身份验证不成功,可能需要更改/ etc / sysconfig / saslauthd/etc/init.d/saslauthd中的MECH值。

使用命令列出可能的值

saslauthd -V

并重启saslauthd:

/etc/init.d/saslauthd restart

从外部测试连接:

telnet yourserver 465

cameron@cs:~$ telnet yourserver 465
Trying your-ip...
Connected to yourserver.
Escape character is '^]'.
220 yourserver ESMTP Postfix
ehlo me
250-yourserver
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN Y2FtZXJvbnMAY2FtZXJvbnMAdGVzdGluZzA4
235 2.0.0 Authentication successful

要进一步测试,请在Evolution / Thunderbird / Outlook中设置一个帐户,并使用您先前设置的用户名和密码测试SMTP。

请记住,由于您使用的是自签名证书,因此您的电子邮件客户端将每次提示您输入不受信任的证书,以便您可以使用创建的客户端证书来抑制这些警告。

对于雷鸟,如果你真的很懒,你甚至可以安装这个插件