Конфигурация черного списка PostFix

Конфигурация черного списка PostFix

Я настроил базовый почтовый сервер с помощью PostFix с Dovecot/IMAP. Но у меня возникли некоторые проблемы с настройкой черного списка.

ниже мой постфикс main.cf

smtpd_recipient_restrictions = check_sender_access mysql:/etc/postfix/blacklist.cf reject_unauth_destination

черный список.cf

user = mailuser
password = mailuser2011
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 'REJECT' FROM blacklist WHERE email='%s' AND id=( SELECT id FROM virtual_users WHERE email='%u')

В моей таблице SQL есть 2 столбца для черного списка. А именно idи , emailгде id — это индивидуальный пользователь, а email — адрес в черном списке.

Я хочу получить соответствие адреса из базы данных со ссылкой на получателя в почте. Если я жестко закодирую значение электронной почты на что-то существующее в базе данных, то он сможет отклонять письма от заблокированного пользователя.

Однако если я использую %u(я предполагаю, что это относится к получателю), блокировка вообще не происходит.

решение1

Таблицы поиска в Postfix являются Key-Value-Lookups. Это означает, что у вас есть ключ и вы получаете значение после поиска. В вашем случае (check_sender_access) ключом является отправитель; и только отправитель. Поэтому ваше требование иметь два ключа (отправитель и получатель) не может быть выполнено с Postfix.

Единственный способ решить эту проблему —Делегирование политики, где у вас есть несколько ключей (отправитель, получатель, IP, имя хоста, helo, ...) для выполнения поиска.

Но с другой стороны, полагаться на адрес отправителя — очень плохая идея, поскольку его легче всего подделать.

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