Postfix check_policy_service - проверка только входящей почты, игнорируя внутреннюю и исходящую

Postfix check_policy_service - проверка только входящей почты, игнорируя внутреннюю и исходящую

Я пытаюсь настроить сервер policyd на Centos x64 (selinux отключен), что позволит мне ограничить количество сообщений, входящих с разных серверов и (что более важно) исходящих с разных учетных записей пользователей. На данный момент я считаю, что у меня есть рабочая конфигурация для ограничения входящей почты (например, от Google), но я не могу заставить postfix выполнять те же проверки политики для внутренней и исходящей почты.

Вот в чем проблема (в данный момент я просто пытаюсь заставить Postfix использовать службу политик)

Я добавил следующие строки в main.cf

smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10031,   reject_unauth_destination
smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10031

И отключена политика (для тестирования)

При отправке почты с другого хоста (например, с gmail) на этот компьютер в журналах postfix появляется ошибка о том, что сервер policyd не может быть доступен

Sep 10 10:40:23 centosvbox1 postfix/smtpd[9378]: connect from unknown[IP_ADDRESS]
Sep 10 10:40:23 centosvbox1 postfix/smtpd[9378]: warning: connect to 127.0.0.1:10031: Connection refused
Sep 10 10:40:23 centosvbox1 postfix/smtpd[9378]: warning: problem talking to server 127.0.0.1:10031: Connection refused
Sep 10 10:40:24 centosvbox1 postfix/smtpd[9378]: warning: connect to 127.0.0.1:10031: Connection refused
Sep 10 10:40:24 centosvbox1 postfix/smtpd[9378]: warning: problem talking to server 127.0.0.1:10031: Connection refused

что означает, что postfix пытается получить доступ к серверу policyd (который работает так, как и ожидалось)

Однако, когда я пытаюсь отправить почту из консоли (с помощью mailx) пользователю root (локальная учетная запись) или куда-то еще (gmail), никаких подобных поисков не происходит — почта просто проходит, даже не пытаясь получить доступ к policyd.

echo "ksfdhjksf" | mail -s "kjfhkjsfkjsfd" root

Sep 10 10:42:03 centosvbox1 postfix/cleanup[9386]: 9B606417D9: message-id=<20130910084203.9B606417D9@domain>
Sep 10 10:42:03 centosvbox1 postfix/qmgr[9342]: 9B606417D9: from=<root@domain>, size=458, nrcpt=1 (queue active)
Sep 10 10:42:03 centosvbox1 postfix/local[9388]: 9B606417D9: to=<root@domain>, orig_to=<root>, relay=local, delay=0.04, delays=0.03/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Sep 10 10:42:03 centosvbox1 postfix/qmgr[9342]: 9B606417D9: removed

Что заставляет меня задуматься - почему check_policy_service не работает? (я думаю, что это проблема постфикса)

У кого-нибудь есть идеи, как сделать так, чтобы системные пользователи (например, веб-приложение) ограничивали отправку писем?

решение1

Вы определили проверку политики в smtpd_*_restrictions, поэтому она никогда не будет запрошена для почты, сгенерированной локально, поскольку этот тип почты вводится в очередь Postfix с помощью сервиса pickup(8). Чтобы обойти это, вам нужно будет изменить master.cfи добавить content_filterэкземпляр в pickup(8)сервис (и, конечно, вам также нужно будет добавить указанный экземпляр фильтрации контента, взгляните наФильтрация контента.

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

Связанный контент