我所拥有的
我在Virtualbox上测试postfix。最初,我成功地将传入邮件(发往我的域)传递到管道(此答案https://superuser.com/a/1490699中的方法1),并让传出邮件照常发送。
现在,我已经将postfix配置更改为使用虚拟邮箱功能(仍然在Virtualbox上),这样我就可以在接受邮件之前使用Mysql查询该域和用户是否存在。使用如下配置:
virtual_transport = myhook:dummy
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf当通过postmap -q测试时,所有这些都工作得很好,我从"mydestination“中删除了我的域名,以确保邮件不会被传输到本地。
问题所在
我看过很多指南
https://www.linode.com/docs/guides/email-with-postfix-dovecot-and-mysql/ https://wiki.gentoo.org/wiki/Complete_Virtual_Mail_Server/Postfix_to_Database
然而,这些指南是为Dovecot而做的,我不会使用它。
通过命令行向在虚拟邮箱中找到的另一个用户发送邮件时,我收到以下错误
to=<me@laravel8.test>, orig_to=<me>, relay=none, delay=36, delays=36/0.02/0.05/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for name=laravel8.test type=AAAA: Host not found)这是尽管域名出现在virtual_mailbox_domains中。更改为ipv4没有任何更改
我读到这可能是因为后缀没有使用/etc/hosts (它将laravel8.test指向127.0.0.1),所以我在main.cf中添加了以下几行
lmtp_host_lookup = native
smtp_host_lookup = native但是现在我得到了这个错误:
to=<support@laravel8.test>, relay=none, delay=0, delays=0/0/0/0, dsn=5.4.6, status=bounced (mail for laravel8.test loops back to myself)是的,这不是我想要的吗?我希望将邮件发送给另一个用户,然后按照virtual_transport中的声明将此邮件传输到我的管道。
无论我做什么,我似乎只会遇到更多的问题。
如果可能的话,请帮忙。
发布于 2020-12-11 17:54:03
问题似乎是
/etc/postfix/mysql-virtual-mailbox-domains.cf
曾经是
user = root
password =
hosts = 127.0.0.1
dbname = laravel
query = SELECT domain FROM mailbox WHERE domain='%d' LIMIT 1它应该在什么时候
user = root
password =
hosts = 127.0.0.1
dbname = laravel
query = SELECT domain FROM mailbox WHERE domain='%s' LIMIT 1我真的搞不清楚何时何地应该使用%s或%d和%u。这里postfix只将域发送到此mysql查询,因此必须是作为%s的整个字符串
https://stackoverflow.com/questions/65246811
复制相似问题