在 Debian 上配置邮件转发的实用做法
一 方案总览与选择
二 前置准备
sudo apt update && sudo apt install postfixinet_interfaces = loopback-only(仅本地投递/转发)或 inet_interfaces = all(放行外部需配合防火墙与访问控制)。mydestination = $myhostname, localhost.$mydomain, localhost, $mydomainmynetworks = 127.0.0.0/8 [::1]/128(按需扩展,避免开放为开放中继)。home_mailbox = Maildir/(或保持系统默认 mbox)。三 方法一 本地用户级转发(~/.forward)
nano ~/.forwarduser@example.com\localuser, user@example.comchmod 600 ~/.forwardchown localuser:localuser ~/.forwardsudo systemctl reload postfixecho "test local forward" | mail -s "test" localuser@$(hostname -d)sudo tail -n 50 /var/log/mail.log四 方法二 系统级域转发(虚拟别名域)
sudo nano /etc/postfix/main.cfvirtual_alias_domains = example.orgvirtual_alias_maps = hash:/etc/postfix/virtualsudo nano /etc/postfix/virtual@example.org user@example.com # 整域转发sales@example.org sales-team@example.cominfo@example.org user1@example.com, user2@example.comsudo postmap /etc/postfix/virtualsudo systemctl reload postfix五 方法三 出站中继转发(通过上游 SMTP)
sudo nano /etc/postfix/main.cfrelayhost = [smtp.gmail.com]:587smtp_sasl_auth_enable = yessmtp_sasl_password_maps = hash:/etc/postfix/sasl_passwdsmtp_sasl_security_options = noanonymoussmtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crtsmtp_use_tls = yessudo nano /etc/postfix/sasl_passwd[smtp.gmail.com]:587 your_username:your_app_passwordsudo postmap /etc/postfix/sasl_passwdsudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.dbsudo systemctl reload postfixecho "test relay" | mail -s "relay test" external@example.commynetworks;使用应用专用密码或 OAuth2 凭据,避免明文口令长期留存。六 常见问题与排查
sudo tail -f /var/log/mail.log,必要时 postqueue -p 检查滞留队列。~/.forward 必须为 600 且仅属相应用户;使用 virtual_alias_maps 时确保数据库已 postmap 并 reload。mynetworks 是否过宽或过窄。dig MX example.com +short 验证。mynetworks),对外发信优先走 TLS 与认证中继。