Думаю, я проверил каждую ветку с 'catch all' и 'overrides catch all' с Postfix, но все еще могу получить какое-либо решение для своей проблемы. У меня есть входящий (только) smtp-сервер Postfix version 3.5.8
. Я хотел бы сделать его открытым ретранслятором, и я могу добиться этого с помощью virtual_alias_domains=static:yes
. /etc/postfix/main.cf
Затем я хотел бы отправить эти сообщения нескольким пользователям в зависимости от домена получателя, поэтому я создал несколько шаблонов с помощью pcre в virtual_alias_maps = pcre:/etc/postfix/virtual
:
/1@test/ test
/2@test/ test2
/@test/ catchallfromtest
/@/ catchall
с/etc/postfix/aliases
test: "/var/mail/test.mail"
test2: "/var/mail/test2.mail"
catchallfromtest: "/var/mail/catchallfromtest.mail"
catchall: "/var/mail/catchall.mail"
Если бы я закомментировал /@/ catchall
письмо, оно бы отправлялось правильно, но без этого каждое письмо отправляется в catchall. Я перепробовал много идей (разный порядок, разбить его на отдельные файлы, с разными типами БД, с virtual_alias_map
для некоторых пользователей и с receive_bcc_maps для catchall, с luser_relay
но это работает только для $mydomain
, поэтому это не будет работать в моем случае, с исключением в шаблоне и в строке ( !//
)) и с другой формой catchall ( //
, /.*@.*/
, /^.*@.*&/
, /.+@.+/
и т. д.). Когда я пытаюсь проверить это с
postmap -q "1@test" pcre:/etc/postfix/virtual
он возвращает правильный псевдоним, но когда я пытаюсь отправить письмо, оно переходит в catchall. Что я могу еще попробовать? Из [документации][1]
Patterns are applied in the order as specified in the table, until a pattern is found that matches the input string.
Поэтому он должен остановиться сразу после первого совпадения с шаблоном, но этого не происходит. [1]:http://www.postfix.org/pcre_table.5.html