Назад | Перейти на главную страницу

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

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

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

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

blacklist.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 - это индивидуальный пользователь, а электронная почта - адрес из черного списка.

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

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

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

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

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