Я использую postfix (2.9.6) с dovecot (2.2.5) и два домена:
Я хотел бы установить два разных универсальных правила для неизвестных пользователей, но они не работают должным образом.
При использовании конфигурации, приведенной ниже, правило для домена example.com применяется к адресам как example.com, так и example.org (т.е. вся неизвестная почта доставляется в почтовый ящик johndoe catch_com, независимо от адресов example.org или example.com). Удаление правила @ example.com приводит к правильной работе правила @ example.org (почта доставляется в почтовый ящик johndoe catch_org).
main.cf:
recipient_delimiter = +
virtual_mailbox_domains = example.com
virtual_mailbox_maps = hash:/opt/local/etc/postfix/virtual_mailbox
virtual_alias_domains = example.org
virtual_alias_maps = hash:/opt/local/etc/postfix/virtual_alias
master.cf
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/opt/local/libexec/dovecot/dovecot-lda -f ${sender} -d ${user}@${nexthop} -m ${extension}
виртуальный_почтовый ящик:
johndoe@example.com example.com/johndoe
virtual_alias:
@example.org johndoe+catch_org@example.com
@example.com johndoe+catch_com@example.com
Добавление правила catchall в virtual_mailbox не работает, потому что, как я где-то читал, использование dovecot-lda приводит к игнорированию правил catchall в virtual_mailbox.
Это ожидаемое поведение от postfix. Виртуальный псевдоним будет проверяться перед любым другим псевдонимом. Итак, весь сайт example.com /opt/local/etc/postfix/virtual_alias
перенаправит вашу электронную почту до /opt/local/etc/postfix/virtual_mailbox
.
В твоем случае johndoe+catch_org
будет рекурсивно отображаться на virtual_alias
снова, поэтому он будет соответствовать johndoe+catch_com
.
Если вы настроили catchall для другого почтового ящика в том же домене, вы можете настроить catchall в virtual_mailbox_maps
. Добавьте эту строку внизу /opt/local/etc/postfix/virtual_mailbox
@example.com example.com/johndoe
Обратной стороной является то, что вы не можете отличить электронную почту от example.com catchall или example.org catchall. Для случая голубятни я не могу подтвердить, что эта схема будет работать или нет.
Еще одно уродливое решение - поместить необщий аккаунт example.com в /opt/local/etc/postfix/virtual_alias
. Например:
# account with mailbox
john@example.com john@example.com
doee@example.com doee@example.com
abcd@example.com abcd@example.com
# for example.org domain catch all
johndoe+catch_org@example.com johndoe+catch_org@example.com
@example.org johndoe+catch_org@example.com
@example.com johndoe+catch_com@example.com