我的服务器上的外部别名有问题。我的用户有别名,因此他们可以在个人邮件帐户上检索邮件。例如:
[email protected] user1 [email protected]
[email protected] user2 [email protected]
[email protected] userB [email protected]
我认为这很好(对于大多数消息来说确实如此)但是在接收特定邮件服务器发送的邮件时会出现问题。
[电子邮件保护]发送邮件至[电子邮件保护]意思是[电子邮件保护].
Postfix 现在尝试传递来自[电子邮件保护]到[电子邮件保护]。
大多数外部邮件服务器都可以很好地处理该问题,但是也有少数邮件服务器会拒绝该消息,因为发件域不是我的域(或者准确地说,发件域由服务器本身监督)。
有没有办法来解决这个问题?
答案1
抱歉回复迟了。我相信我今天也遇到了同样的问题,我通过两个修复方法解决了它:
- 使用我的服务器托管提供商配置指针记录,而不是在我的 DNS 记录中配置。
- 使用后缀规范地址映射作为发件人地址。
我已使用虚拟别名配置了 postfix:发送给用户 @mydomain.com 的邮件将发送到他们各自的 gmail 地址。当发件人地址来自另一个域时,这种方法运行良好。唯一的问题是用户无法使用 @mydomain 别名从他们的 gmail 客户端向 @mydomain 发送电子邮件。当我测试从 UserA gmail 帐户发送电子邮件时,使用 UserA@mydomain 别名向 UserB@mydomain 发送电子邮件,邮件从未到达 UserB gmail 帐户。
解决:
1. 我检查了 /var/log/mail.log,发现 gmail 抱怨缺少指针记录。我确信我的 DNS 设置是正确的(通过 IP 的 nslookup 确认),但我不知道该在哪里查找。然后我了解到指针记录是 IP 块所有者的责任。就我而言,它是托管我的虚拟服务器的服务。我检查了他们的门户网站,发现“ip 管理”菜单下尚未设置“反向 DNS 名称”。
2. 因此,在配置“反向 DNS 名称”后,gmail 不再抱怨指针记录。Gmail 会接受邮件并将其发送给收件人,但是将电子邮件标记为潜在垃圾邮件或网络钓鱼因为它无法确定邮件实际上是从我的域名发送的。
从 /var/log/mail.log 中,我可以看到 Gmail 抱怨 SPF 和 DKIM,但实际上,问题出在发件人地址上:Gmail 在发件人地址中不使用 @mydomain 别名,而是使用 gmail 帐户名称。当 postfix 将 UserB 的邮件转发到他的 gmail 帐户时,发件人地址 (UserA@gmail) 与发送服务器的 IP (mydomainIP) 不匹配。我使用规范地址映射修复了这个问题:sender_canonical_maps
/etc/postfix/sender_canonical基本上有我创建的所有别名的反向列表/etc/postfix/虚拟这允许用户使用 mydomain 别名通过 gmail 客户端发送电子邮件,即使目的地是 mydomain 中的另一个用户并且邮件被中继回 gmail。
http://postfix.cs.utah.edu/ADDRESS_REWRITING_README.html#canonical
顺便说一句:不要理会 /etc/postfix/generic 我试过了,但重写并没有解决问题
这是我的配置,供参考:
File: main.cf
# Postfix virtual ALIAS
# map local mydomain-alias adresses to gmail mail adresses
virtual_alias_domains = mydomain
virtual_alias_maps = hash:/etc/postfix/virtual
## Canonical address mapping
# reverse-map gmail email addresses to mydomain-alias adressses
# to permit relay back to gmail when email is sent to and from a mydomain-alias email address
sender_canonical_maps = hash:/etc/postfix/sender_canonical
# ### Execute the command "sudo postmap /etc/postfix/virtual" after changing the virtual file
# ### run postmap /etc/postfix/sender_canonical after making changes to /etc/postfix/canonical
# ### and lastly, execute the command "sudo postfix reload"
File: /etc/postfix/virtual
UserA@mydomain [email protected]
...
etcetera
File: /etc/postfix/sender_canonical
[email protected] UserA@mydomain
...
etcetera