在开始之前,先确认你的环境:一台运行苹果系统(如 macOS Server 或 macOS 的常规版本)、固定公网 IP 或动态域名服务、绑定的域名,以及一台可以长期在线的服务器。硬件与系统要求不高,但建议备份数据并更新系统到最新安全补丁。
必要项包括:域名(A 记录指向服务器)、反向 DNS(PTR)、可用端口(25/587/993/995 等)、管理员账号、以及选择的邮件软件(常见为 Postfix 作为 MTA,Dovecot 作为 IMAP/POP3)。
为邮件服务创建专用系统用户并正确设置目录权限(/var/mail 或者 Maildirs),避免使用 root 运行邮件进程,确保日志目录可写。
在搭建前建议启用防火墙(如 pf 或 ipfw),限制管理端口的访问,并关闭不必要的服务,减少被入侵风险。
推荐使用 Postfix 与 Dovecot 的组合,Postfix 负责发送接收(SMTP/SMTPS),Dovecot 提供 IMAP/POP3 存取。macOS 可通过 Homebrew 安装这些组件:brew install postfix dovecot。
编辑 /etc/postfix/main.cf,设置 myhostname、mydomain、myorigin、inet_interfaces 和 relay_domains。启用 SASL 认证(smtpd_sasl_type、smtpd_sasl_path),设置 mailbox_transport 指向 Maildir 或 mbox。
编辑 /usr/local/etc/dovecot/dovecot.conf,启用 protocols = imap pop3,设置 mail_location = maildir:~/Maildir,配置 auth 插件与用户数据库(系统用户或虚拟用户)。
启动服务后,用 telnet / openssl s_client 测试 SMTP/IMAP 端口,检查日志(/var/log/mail.log 或 /usr/local/var/log)以确认认证与投递正常。
优先使用受信任的证书颁发机构(如 Let's Encrypt)来获得免费的 SSL/TLS 证书。使用 Certbot 或 acme.sh 在域名上申请证书,并将证书与私钥配置到 Postfix 与 Dovecot。
使用 acme.sh:acme.sh --issue -d mail.example.com --standalone;成功后会得到 cert 和 key 文件,通常在 ~/.acme.sh/ 下。
在 main.cf 中设置 smtpd_tls_cert_file=/path/fullchain.pem,smtpd_tls_key_file=/path/privkey.pem,smtpd_use_tls=yes,smtpd_tls_auth_only=yes(强制认证必须使用 TLS)。
在 dovecot.conf 中设置 ssl = required(或 yes),ssl_cert = ,ssl_key = ,并重启服务;务必保护私钥权限(600)。
正确的 DNS 与防垃圾邮件记录是保证邮件送达的关键。首先在域名 DNS 中添加 MX 记录指向你的邮件主机,并确保 A 记录与 PTR(反向 DNS)一致。
在域名的 TXT 记录中添加 SPF,例如:v=spf1 mx ip4:你的服务器IP -all,用以声明哪些主机可以代表域发送邮件。
配置 DKIM(通过 opendkim 或 postfix 的 milter),生成公私钥对,将公钥以 TXT 记录形式写入 DNS(selector._domainkey.example.com),在发送时对邮件签名以验证来源。
添加 DMARC TXT 记录(_dmarc.example.com),例如:v=DMARC1; p=quarantine; rua=mailto:postmaster@example.com,用于接收报告并指定处理策略。
排查邮件问题常见步骤:查看日志、确认端口连通、验证 DNS 与 PTR、检查证书是否过期、确认 SPF/DKIM/DMARC 是否正确发布。日志是首要线索,关注拒绝信息与延迟提示。
使用工具:telnet mail.example.com 25、openssl s_client -connect mail.example.com:465、dig mx example.com、mxtoolbox 等。通过这些工具可定位网络、证书或 DNS 问题。
问题示例:被 ISP 屏蔽端口 25(可使用端口 587+提交并启用 SMTPS);证书链不完整(确保 fullchain.pem 配置正确);邮件被标记为垃圾(检查 SPF/DKIM/DMARC)。
启用队列管理与限制(smtpd_client_message_rate_limit、anvil_rate_time_unit),配置灰名单或反垃圾邮件插件,定期轮换证书与密钥,定期更新软件并备份配置与邮件数据。