postfix +dovecot + mailmain3 在邮箱账号与邮件列表使用同一个域名时遇到的问题以及解决

maillist的地址, 会报550错误, 邮箱找不到, 经过跟chatgpt讨论和测试了2天, 最后找到原因和解决方案:

main.cf关键配置项:

local_recipient_maps =
    proxy:unix:passwd.byname, $alias_maps, 
    hash:/var/lib/mailman3/data/postfix_lmtp, 
    mysql:/etc/postfix/mysql-virtual-mailboxes.cf

virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-domains.cf

relay_domains = hash:/var/lib/mailman3/data/postfix_domains

smtpd_reject_unlisted_recipient = yes


原因:
dovecot 用虚拟域管理普通邮箱账号, 用virtual_mailbox_domains来告诉postfix哪些域名是由dovecot管理

mailman3 管理maillist的几个地址, 用relay_domains来告诉postfix哪些域名是有效的,

因为2个里面的域名有重复,然后mailman3的域名设置就会被忽略。 于是smtpd在收到邮件时, 只会到dovecot去检查有效性。而不会到mailman3去检查有效性。 dovecot找不到地址, 于是smtpd就550拒绝 

解决方法很简单, 只要在dovecot里,设置几个指向自身的别名就可以了,至于需要添加哪些别名, 可以到mailman3自动生成的/var/lib/maiman3/data/postfix_lmtp去看