postfix - различные проверки заголовков для входящей и исходящей почты

Как я могу применить разные header_checks для входящей и исходящей почты с использованием postfix?

По умолчанию все header_checks применяются как к входящим, так и к исходящим.

3 ответа

header_checks сделано cleanup поэтому я не думаю, что вы можете применять его только для входящих или исходящих.

smtp_header_checks применяется только для исходящей почты (клиент smtp)

Если есть почтовый заголовок, который вы можете использовать для определения того, что является входящим, а какое - исходящей почтой, в postfix 3.2 или новее вы можете замкнуть header_checks, например:

/^Received: .*detect_outgoing_mails/ PASS
/^X-Something: this rule will only match on incoming mails/ HOLD

(но он по-прежнему дает вам возможность сопоставлять ВСЕ (как и прежде) или сопоставлять только входящую или только исходящую почту и требует относительно новой версии постфикса)

В качестве лучшей альтернативы, если вы всегда можете получать "исходящую" почту (почту от клиентов, для которых вы действуете как почтовый ретранслятор) на один порт (отправка: tcp/587) и входящую почту на tcp/25, вы должны иметь возможность использование master.cf переопределить header_checks для каждого, например так:

submission inet n       -       n       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o header_checks=pcre:/etc/postfix/header_checks.relay

smtp      inet  n       -       -       -       200     smtpd
  -o strict_rfc821_envelopes=yes
  -o header_checks=pcre:/etc/postfix/header_checks.mx

но это не сработает, если ваши клиенты, для которых вы ретранслируете, также используют tcp / 25 как остальной мир. Если они это сделают, вы можете настроить альтернативный порт для них, и это будет работать, но выполнимость этого зависит от вашей способности убедить всех ваших пользователей изменить их настройки.

Если у вас есть запасной IP-адрес, вы также можете сделать его в основном прозрачным для пользователей: скажем, у вас есть smtp.example.org как сервер ретрансляции для пользователей и как ваш MX с IP a.a.a.a, вы можете изменить MX домена на IP b.b.b.b, а затем использовать один сервер smtpd в a.a.a.a с одним набором проверок заголовков и другим сервером smtpd в b.b.b.b с другим набором проверок заголовка. Это даже проще, если вы ретранслируете только для пользователей, скажем, 192.168.xx/24, когда вы можете даже сохранить то же имя DNS и использовать представления DNS для представления внутреннего IP-адреса для внутренних клиентов и внешнего IP-адреса для остального мира.

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

Если я правильно понимаю ваш вопрос, вы сможете сделать это через /etc/postfix/header_checks файл, что-то вроде этого для исходящей почты/^From: "spammer/ REJECT/^To: bob@here.com/ REDIRECT bob@there.com

Я сделал это давным-давно, поэтому не помню все детали, но вы можете получить больше информации здесь DOC

Это позволит вам определить действие в зависимости от того, является ли почта входящей или исходящей, я надеюсь, что это ответ на ваш вопрос.

Другие вопросы по тегам