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。
请记住,由于您使用的是自签名证书,因此您的电子邮件客户端将每次提示您输入不受信任的证书,以便您可以使用创建的客户端证书来抑制这些警告。
对于雷鸟,如果你真的很懒,你甚至可以安装这个插件 。