SMTP服务核心方案
方案1:配置本地SMTP服务器(以Postfix为例)
-
安装Postfix
sudo apt update && sudo apt install postfix # Debian/Ubuntu sudo yum install postfix # CentOS/RHEL
安装时选择 Internet Site,根据提示设置域名(如
example.com
)。 -
基础配置
编辑主配置文件:sudo nano /etc/postfix/main.cf
修改以下参数:
myhostname = mail.example.com # 服务器主机名 mydomain = example.com # 域名 myorigin = $mydomain # 发件人域名 inet_interfaces = all # 监听所有网络接口 mydestination = $myhostname, localhost.$mydomain, $mydomain # 接收域
-
启动服务
sudo systemctl restart postfix sudo systemctl enable postfix
-
防火墙放行SMTP端口
sudo ufw allow 25/tcp # 标准SMTP端口
方案2:使用外部SMTP中继(如Gmail)
-
安装邮件客户端工具
sudo apt install mailutils # Debian/Ubuntu sudo yum install mailx # CentOS/RHEL
-
配置Postfix使用Gmail SMTP
编辑/etc/postfix/main.cf
,添加:relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt smtp_use_tls = yes
-
创建认证文件
sudo nano /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 your-email@gmail.com:app-password
注:使用Google两步验证的应用专用密码。
-
应用配置
sudo postmap /etc/postfix/sasl_passwd sudo chmod 600 /etc/postfix/sasl_passwd* sudo systemctl restart postfix
验证SMTP功能
测试邮件发送
echo "Test email body" | mail -s "SMTP Test" recipient@example.com
- 检查收件箱(包括垃圾邮件夹)。
- 查看日志:
tail -f /var/log/mail.log # Debian/Ubuntu tail -f /var/log/maillog # CentOS/RHEL
Telnet手动测试
telnet localhost 25
依次输入:
EHLO example.com MAIL FROM: test@example.com RCPT TO: recipient@example.com DATA Subject: Test This is a test email. . # 英文句点结束 QUIT
安全加固措施
-
启用TLS加密
在/etc/postfix/main.cf
中增加:smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls = yes
-
防止开放中继
确保配置中不含:mynetworks = 127.0.0.0/8 [::1]/128 # 仅允许本地发送
-
SPF/DKIM/DMARC配置
- SPF:在DNS添加
v=spf1 mx ~all
- DKIM:使用
opendkim
生成密钥并签名 - DMARC:DNS记录
v=DMARC1; p=quarantine; rua=mailto:admin@example.com
- SPF:在DNS添加
常见问题解决
- 邮件被拒收:检查域名反向解析(PTR记录)是否匹配主机名。
- 端口25被屏蔽:联系云服务商解封,或改用端口587(提交端口)。
- 认证失败:
- 确认SASL配置:
sudo postconf -n | grep sasl
- 检查日志:
grep "SASL" /var/log/mail.log
- 确认SASL配置:
替代方案
- 轻量级工具:
ssmtp
:仅发送邮件的微型客户端。msmtp
:支持多账户的命令行SMTP客户端。
- 容器化部署:
使用Docker运行Mailcow或Mailu集成套件。
引用说明:
- Postfix官方文档:http://www.postfix.org/documentation.html
- Google SMTP使用指南:https://support.google.com/a/answer/176600
- Let’s Encrypt证书申请:https://letsencrypt.org/docs/
重要提示:自建SMTP服务器需严格遵循反垃圾邮件规范(如RFC 5321),避免IP被列入黑名单,生产环境建议使用专业邮件服务(如SendGrid、Mailgun)或配置SPF/DKIM/DMARC三件套。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4335.html