Linux下Postfix邮件服务器配置与465端口使用
在Linux系统中搭建一个支持SSL加密并通过465端口发送邮件的Postfix邮件服务器,是一个常见的需求。本文将详细介绍如何配置Postfix和Dovecot,并解决云服务器25端口被封导致无法发送邮件的问题。
1. 基础环境准备
配置Dovecot SSL
编辑/etc/dovecot/conf.d/10-ssl.conf文件,确保以下内容正确:
ssl = yes
ssl_cert = </etc/pki/tls/certs/server.crt
ssl_key = </etc/pki/tls/private/server.key
配置Postfix主配置文件
编辑/etc/postfix/main.cf文件,添加或修改以下内容:
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/server.crt
smtpd_tls_key_file = /etc/pki/tls/private/server.key
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
注意:在设置mynetworks时,请确保IP地址范围格式正确。例如,172.21.0.0/28是正确的写法,而172.21.0.1/28则是错误的。
开放安全组端口
确保防火墙允许通过以下端口:25(SMTP)、110(POP3)、143(IMAP)以及465(SMTPS)。
2. 解决25端口被封问题
当云服务提供商封禁了25端口时,可以通过启用465端口来发送邮件。以下是两种可行方法:
方法一:通过transport_maps指定特定邮箱使用465端口
编辑/etc/postfix/main.cf,添加以下内容:
transport_maps = hash:/etc/postfix/transport
编辑/etc/postfix/transport文件,指定目标域名及其端口:
example.com relay-smtps:[smtp.example.com]:465
编辑/etc/postfix/master.cf,定义新的传输服务:
relay-smtps unix - - n - - smtp
-o smtp_tls_security_level=encrypt
-o smtp_tls_wrappermode=yes
更新并重载Postfix配置:
postmap /etc/postfix/transport
systemctl reload postfix
方法二:通过iptables将25端口映射到465端口
此方法适用于所有外发邮件默认走465端口的情况。
安装并启动iptables服务:
yum install iptables-services
systemctl start iptables
添加端口映射规则:
iptables -t nat -A OUTPUT -p tcp --dport 25 -j DNAT --to-destination :465
保存并查看iptables规则:
service iptables save
iptables-save
注意事项:启用iptables后,请先测试SSH连接是否正常,避免因规则误配导致无法登录服务器。
3. 启用Postfix客户端TLS加密
确保Postfix版本为3.0及以上,执行以下命令以启用客户端TLS:
postfix tls enable-client
检查并确认main.cf中已添加以下内容:
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache
smtp_tls_security_level = may
tls_random_source = dev:/dev/urandom
smtp_tls_loglevel = 1
4. 测试与验证
查看邮件队列
postqueue -p
查看日志
journalctl -u postfix
使用openssl测试连接
openssl s_client -connect mail.example.com:465
如果连接成功,说明SSL配置无误。
5. DNS自动配置记录
为了方便邮件客户端自动配置,可以添加以下SRV记录:
_imap._tcp. IN SRV 10 10 143 mail.example.net.
_imaps._tcp. IN SRV 10 10 993 mail.example.net.
_pop3._tcp. IN SRV 10 10 110 mail.example.net.
_pop3s._tcp. IN SRV 10 10 995 mail.example.net.
_smtps._tcp. IN SRV 10 10 465 mail.example.net.
_submission._tcp. IN SRV 10 10 587 mail.example.net.
同时,可添加常见的子域名解析记录,如smtp.、mail.等。