我正在使用 Postfix 3.0.2、Dovecot 2.2.18 和 MariaDB 10.0.21。Postfix/Dovecot 正在接收 *@mydomain.com 和 *@anotherdomain.com 的邮件(即,两个域的 MX 都设置为此服务器。)我在 MariaDB 的一些表中保存了别名和收件人的列表。
到目前为止,发送/接收邮件正常,但是当我尝试将别名添加到别名表时,Postfix 的行为就像别名表为空一样。当我向别名发送电子邮件时,Postfix 错误如下:
Nov 10 19:02:19 mail.mydomain.com postfix/lmtp[6134]: BD49D36A76: to=<[email protected]>, relay=mail.mydomain.com[private/dovecot-lmtp], delay=0.1, delays=0.06/0.01/0.02/0.01, dsn=5.1.1, status=bounced (host mail.mydomain.com[private/dovecot-lmtp] said: 550 5.1.1 <[email protected]> User doesn't exist: [email protected] (in reply to RCPT TO command))
但是,如果我在 /etc/aliases 中定义别名,电子邮件就会正确转发。以下是 main.cf 中的相关行:
alias_maps = hash:/etc/aliases mysql:/etc/postfix/sql-aliases.cf
local_recipient_maps = mysql:/etc/postfix/sql-boxes.cf $alias_maps
和 /etc/postfix/sql-aliases.cf:
user=mailreader
password=topsecret123
dbname=mail
query=SELECT email FROM aliases WHERE alias='%s'
当我运行查询时,我确实得到了目标地址作为唯一的结果,并且它确实可以将电子邮件直接发送到该地址!SELECT email FROM aliases WHERE alias='[email protected]'
mailreader
有人有什么建议可以尝试吗?我试过谷歌搜索,但似乎找不到有关在 SQL DB 中使用别名表的任何相关信息,除了它应该可以工作。
答案1
好吧,我让它工作了。显然,我设置它的方式是使用本地传输,而要按照我想要的方式执行别名则需要虚拟传输。因此,基本上重写我的 main.cf,并包括一堆 virtual_* 东西(使用这作为参考)现在它起作用了!