Фильтр postfix на основе адреса отправителя и получателя

Вопрос или проблема

Один из наших поставщиков отправляет все электронные письма на все адреса, которые у них есть в базе. Это означает, что счета отправляются на электронную почту сотрудников поддержки, а также административного персонала, и служебные письма также отправляются всем сотрудникам, а не только людям из поддержки. К счастью, они используют адрес отправителя 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

  1. Создайте файл конфигурации header_checks, если он ещё не существует, например, /etc/postfix/header_checks.

  2. В файле header_checks добавьте следующие строки:

    /^From:.*info@theirdomain/ REDIRECT support@yourdomain
    /^From:.*invoice@theirdomain/ REDIRECT admin@yourdomain

    Здесь мы используем регулярные выражения для проверки заголовка From и перенаправляем почту в зависимости от адреса отправителя.

  3. Откройте файл конфигурации main.cf и добавьте или измените следующую строку, чтобы Postfix знал использовать этот файл для проверки заголовков:

    header_checks = regexp:/etc/postfix/header_checks

SMTPD Restriction Classes

Другой подход использует restriction classes, который позволяет гораздо более гибкое управление правилами.

  1. В файле /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
  2. Создайте файл /etc/postfix/sender_access:

    info@theirdomain infomail
    invoice@theirdomain invoicemail
  3. Создайте два файла для получателей: /etc/postfix/info_recipients и /etc/postfix/invoice_recipients.

    В info_recipients указаны адреса, которые могут быть получателями для писем от info@theirdomain:

    support@yourdomain OK

    В invoice_recipients указаны адреса, которые могут быть получателями для писем от invoice@theirdomain:

    admin@yourdomain OK
  4. Выполните команду для обновления файлов:

    postmap /etc/postfix/sender_access
    postmap /etc/postfix/info_recipients
    postmap /etc/postfix/invoice_recipients
  5. Перезапустите Postfix для применения изменений:

    systemctl restart postfix

Применение

Теперь Postfix будет фильтровать почту по указанным правилам, перенаправляя письма верным получателям в зависимости от адреса отправителя. Это решает вашу задачу без необходимости использования локальных фильтров Sieve, которые не применимы в данном сценарии из-за пересылки почты.

С этой настройкой вы сможете эффективно управлять входящими письмами от вашего поставщика, распределяя их между соответствующими командами. Это поможет исключить ненужные уведомления и повысить эффективность обработки почты в вашей организации.

Оцените материал
Добавить комментарий

Капча загружается...