
Configurei um servidor de e-mail básico usando PostFix com Dovecot/IMAP. Mas enfrento alguns problemas com a configuração da lista negra.
abaixo está meu postfix main.cf
smtpd_recipient_restrictions = check_sender_access mysql:/etc/postfix/blacklist.cf reject_unauth_destination
lista negra.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')
Minha tabela SQL possui 2 colunas para a lista negra. Ou seja, id
e email
onde id é o usuário individual e email é o endereço da lista negra.
O que eu quero fazer é recuperar a correspondência de endereço do banco de dados com referência ao destinatário no correio. Se eu codificar o valor do email para algo existente no banco de dados, ele poderá rejeitar emails do usuário bloqueado.
No entanto, se eu usar o %u
(que presumo que se refira ao destinatário), ele não será bloqueado.
Responder1
As tabelas de pesquisa no Postfix são pesquisas de valor-chave. Isso significa que você tem uma chave e obtém um valor após a pesquisa. No seu caso (check_sender_access) a chave é o remetente; e apenas o remetente. Portanto, sua exigência de ter duas chaves (remetente e destinatário) não pode ser atendida com o Postfix.
A única maneira de resolver isso éDelegação de Políticas, onde você tem várias chaves (remetente, destinatário, IP, nome do host, helo, ...) para fazer sua pesquisa.
Mas, por outro lado, é uma péssima ideia confiar no endereço do remetente, pois é a coisa mais fácil de falsificar.