我最近设置了一个家庭服务器。由于我的 ISP 非常烦人地阻止了传出端口 25,我无法正确设置 SMTP。因此我将其设置为通过 gmail 中继(反正我不会通过此服务器发送大量邮件,所以没问题)。
现在我有一个带有联系表单的 Magento 安装,如果我使用它(使用本地主机 SMTP),发件人标题字段就可以包含正确的名称以及正确的电子邮件地址。(注意:这不是因为回复标题字段,发件人字段确实说明了正确的地址)
但是,我还创建了一些电子邮件帐户,我想通过 thunderbird 发送邮件。当我尝试以这种方式发送邮件时,发件人姓名是正确的,但电子邮件地址是我用于中继的帐户。以下是我的 mail.log 的摘录:
Mar 20 23:11:42 homeserver postfix/smtpd[12203]: connect from xxxx[ip address]
Mar 20 23:11:42 homeserver postfix/smtpd[12203]: setting up TLS connection from xxxx[ip address]
Mar 20 23:11:42 homeserver postfix/smtpd[12203]: Anonymous TLS connection established from xxxx[ip address]: TLSv1 with cipher AES256-SHA (256/256 bits)
Mar 20 23:11:42 homeserver postfix/smtpd[12203]: C5A4936E0228: client=xxxx[ip address], sasl_method=PLAIN, [email protected]
Mar 20 23:11:42 homeserver postfix/cleanup[12206]: C5A4936E0228: message-id=<[email protected]>
Mar 20 23:11:42 homeserver postfix/qmgr[11844]: C5A4936E0228: from=<[email protected]>, size=712, nrcpt=1 (queue active)
Mar 20 23:11:43 homeserver postfix/smtpd[12203]: disconnect from xxxx[ip address]
Mar 20 23:11:43 homeserver postfix/smtp[12207]: C5A4936E0228: to=<[email protected]>, relay=smtp.gmail.com[74.125.77.109]:587, delay=1, delays=0.18/0/0.41/0.43, dsn=2.0.0, status=sent (250 2.0.0 OK 1300659106 u45sm1482760eeh.9)
Mar 20 23:11:43 homeserver postfix/qmgr[11844]: C5A4936E0228: removed
所以当我登录[电子邮件保护]现在发件人电子邮件地址错误。这是我在家庭服务器上设置错误,还是客户端可以设置?
答案1
据我所知,如果您使用 Gmail 的 SMTP 作为中继,它会将发件人地址重写为 Gmail 帐户。此外,任何回复地址都会重写为同一个 Gmail 帐户。他们已经这样做了很多年。
当我尝试在 Postfix 中将 Gmail 设置为我的中继主机时,也遇到了同样的问题。我尝试过的其他中继都没有发生这种情况,所以我相信这是 Gmail 的问题。我猜想 Google 这样做是为了防止系统将邮件标记为垃圾邮件,因为原始发件人无法轻易验证。
对于个人非 Gmail 地址,您可以通过验证地址来配置 Gmail。请参阅:http://mail.google.com/support/bin/answer.py?answer=22370
对于域中的所有地址,您可以配置域以使用 Google Apps,尽管我还没有尝试过。不幸的是,如果您为多个域转发邮件,这将无济于事。
有关此主题的更多讨论,请参阅此问题:通过 GMail 进行的 SMTP 中继会将“发件人:”地址替换为“[me]@gmail.com”
答案2
Postfix 有一个名为“smtp_generic_maps”的功能
您可以使用以下方式创建通用地图文件
postmap /path/to/map/file
地图文件如下所示
user@localhost user@remotehost
然后加
smtp_generic_maps = hash:/etc/postfix/generic
进入 main.cf
来自 user@localhost 的邮件现在将使用 SMTP 作为 user@remotehost 传递