Вопрос или проблема
Один из наших поставщиков отправляет все электронные письма на все адреса, которые у них есть в базе. Это означает, что счета отправляются на электронную почту сотрудников поддержки, а также административного персонала, и служебные письма также отправляются всем сотрудникам, а не только людям из поддержки. К счастью, они используют адрес отправителя invoice@theirdomain для счетов и info@theirdomain для служебной информации. Я перестал пытаться объяснять им, как правильно использовать наши адреса.
Я хотел бы настроить наш сервер Postfix так, чтобы он принимал письма с их info@ только в случае, если они отправлены на наш адрес поддержки, и тихо отбрасывал их, если они отправлены на наш административный адрес. Аналогично, принимать письма с их invoice@ только если они отправлены на наш административный адрес.
Предупреждение: некоторые из наших административных сотрудников (читай: босс) используют учетную запись Gmail, и наш сервер Postfix пересылает все письма, отправленные на наш административный адрес, туда. Это мешает мне использовать локальный Sieve для выполнения этой задачи. Как я могу сделать это в Postfix? Искал в Google и нашел только примеры, как полностью отклонять письма на основе адреса отправителя, что нам не нужно.
Редактировать: Решением для нас также будет, если все их письма с info@ будут идти в одну из наших ящиков поддержки, а все их письма с invoice@ будут идти в один из наших административных ящиков.
Ответ или решение
Рассмотрим проблему фильтрации адресов электронной почты в Postfix на основании адресов отправителя и получателя. Это позволит вам контролировать, какие письма от определённого отправителя попадают в разные почтовые ящики в зависимости от их содержания.
Теория
Основная задача заключается в том, чтобы настроить Postfix таким образом, чтобы он проверял адрес отправителя и адрес получателя каждого входящего письма от определённого отправителя и выполнял соответствующее действие в зависимости от заданных правил. В данном случае:
- Все письма от
info@theirdomain
должны попадать только в почтовый ящик поддержки. - Все письма от
invoice@theirdomain
должны попадать только в почтовый ящик администрации.
Чтобы добиться этого, можно использовать комбинацию Postfix и его возможностей для фильтрации и перенаправления почты. Один из методов, который может помочь в этом случае, — использование фильтрации на основе header_checks
или smtpd_sender_restrictions
в Postfix.
Пример
Настройка header_checks
-
Создайте файл конфигурации
header_checks
, если он ещё не существует, например,/etc/postfix/header_checks
. -
В файле
header_checks
добавьте следующие строки:/^From:.*info@theirdomain/ REDIRECT support@yourdomain /^From:.*invoice@theirdomain/ REDIRECT admin@yourdomain
Здесь мы используем регулярные выражения для проверки заголовка
From
и перенаправляем почту в зависимости от адреса отправителя. -
Откройте файл конфигурации
main.cf
и добавьте или измените следующую строку, чтобы Postfix знал использовать этот файл для проверки заголовков:header_checks = regexp:/etc/postfix/header_checks
SMTPD Restriction Classes
Другой подход использует restriction classes
, который позволяет гораздо более гибкое управление правилами.
-
В файле
/etc/postfix/main.cf
добавьте следующие настройки для использованияsmtpd_restriction_classes
:smtpd_restriction_classes = infomail, invoicemail infomail = check_recipient_access hash:/etc/postfix/info_recipients, REJECT invoicemail = check_recipient_access hash:/etc/postfix/invoice_recipients, REJECT smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/sender_access
-
Создайте файл
/etc/postfix/sender_access
:info@theirdomain infomail invoice@theirdomain invoicemail
-
Создайте два файла для получателей:
/etc/postfix/info_recipients
и/etc/postfix/invoice_recipients
.В
info_recipients
указаны адреса, которые могут быть получателями для писем отinfo@theirdomain
:support@yourdomain OK
В
invoice_recipients
указаны адреса, которые могут быть получателями для писем отinvoice@theirdomain
:admin@yourdomain OK
-
Выполните команду для обновления файлов:
postmap /etc/postfix/sender_access postmap /etc/postfix/info_recipients postmap /etc/postfix/invoice_recipients
-
Перезапустите Postfix для применения изменений:
systemctl restart postfix
Применение
Теперь Postfix будет фильтровать почту по указанным правилам, перенаправляя письма верным получателям в зависимости от адреса отправителя. Это решает вашу задачу без необходимости использования локальных фильтров Sieve, которые не применимы в данном сценарии из-за пересылки почты.
С этой настройкой вы сможете эффективно управлять входящими письмами от вашего поставщика, распределяя их между соответствующими командами. Это поможет исключить ненужные уведомления и повысить эффективность обработки почты в вашей организации.