Мне нужно сделать фильтр для исходящей почты. Чтобы копировать сообщения, если "to" содержит указанный адрес электронной почты.У меня есть:
# rule:[Copy to slack]
if address :contains "to" "[email protected]"
{
redirect :copy "[email protected]";
}
и я стараюсь
# rule:[Copy to slack]
if address :contains "to" "[email protected]"
{
redirect :copy "[email protected]";
}
или
# rule:[Copy to ]
if address :contains "to" "[email protected]"
{
fileinto "INBOX.Redmine";
}
Но каждый раз фильтр не срабатывает.
Это работает только в том случае, если я отправляю почту с адреса, указанного в поле «Кому», или с другого локального адреса.
Есть идеи?
решение1
Это не работает, потому что так работать не может:Если вы отправляете почту, вы отправляете ее на порт 465 напрямую в Postfix — никакой скрипт Sieve выполняться не будет.
Если вы хотите использовать язык Sieve для работы с исходящей почтой, вам придется приложить гораздо больше усилий, поскольку он не очень хорошо интегрирован в распространенное программное обеспечение, по крайней мере, далеко не так хорошо, как интеграция Pigeonhole Sieve в Dovecot, которая срабатывает только в двух конкретных случаях использования:
- при получении почты, также известной какконечная доставкаэтап почты, предназначенный для почтового ящика, которым управляет Dovecot, или
- по управлению почтовым ящиком, в частности действия локального или подключенного по протоколу IMAP клиента в почтовом ящике, которым управляет Dovecot.
Примечательно, что эта интеграция не будет обрабатывать случай отправки почты: хотя Dovecot и включает в себя прокси-сервер отправки, он, как правило, вообще не задействован в этом направлении, а в редких случаях, когда он используется, он все равно не обрабатывает Sieve.
Теперь у вас есть несколько вариантов:
- активировать ваш скрипт для почты, которая хранится в почтовом ящике «отправленные» (но это не будет действовать для почты, которая не хранится в этом почтовом ящике)
- замените свой скрипт встроенной функциональностью Postfix.получатель_bcc_mapsприходит в голову
- настроить postfix
header_checks
так, чтобы он просто отклонял почту, которая не соответствует вашей политике (например, пропускает нужный заголовок «Кому», а затем отклоняет все его неполные версии) - настроить копию в каком-нибудь milter/filter
- настройте (предпочтительно новый, локальный) адрес, который вы настроите для расширения на два адреса, на которые вы хотите получать почту, и разрешите пользователям отправлять туда свою почту
- перенаправить почту для этого получателя в скрипт, возможно, использующий ваш скрипт Sieve (вряд ли это ваш лучший вариант: использование sieve вне сценария использования LDA просто не поддерживается должным образом ни одним из существующих программных продуктов)