
Eu gostaria de ter um postfix que permitisse a retransmissão de e-mail para um retransmissor quando
a) o domínio do remetente é permitido
e um dos:
b) o remetente foi autenticado c) o cliente tem uma entrada na lista de permissões de IP
minha abordagem atual até agora é:
relayhost = [RELAYHOST]:25
smtpd_reject_unlisted_sender = yes
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/restricted_senders
smtpd_recipient_restrictions =
check_client_access cidr:/etc/postfix/ip_whitelist,
permit_sasl_authenticated,
reject_unauth_destination
com strict_senders contendo
example.com OK
e ip_whitelist contendo
192.168.1.3 OK
Embora o envio de e-mails de clientes autenticados ou de clientes com IP na lista de permissões funcione, a restrição do domínio do remetente não funciona. Parece que assim que a autenticação ou o client_access corresponderem, a restrição do remetente não será mais verificada.
Responder1
Por que isso não funciona?
O padrão é permitir tudo.
Especifique uma lista de restrições, separadas por vírgulas e/ou espaços em branco. Continue linhas longas iniciando a próxima linha com espaços em branco. As restrições são aplicadas na ordem especificada; a primeira restrição que corresponder vence.
e
check_sender_access type:table
Pesquise o especificadoacesso(5)banco de dados para o
MAIL FROM
endereço, domínio, domínios pai oulocalpart@
e execute a ação correspondente.
Portanto, sua configuração primeiro permite example.com
e /etc/postfix/restricted_senders
depois permite todo o resto. Osmtpd_reject_unlisted_sender
não muda isso, porque:
Um endereço é considerado "desconhecido" quando 1) não corresponde a umvirtual(5)apelido oucanônico (5)mapeamento e 2) o endereço não é válido para sua classe de endereço. Para obter uma definição de validação de endereço baseada em classe, consulteADDRESS_CLASS_README.
O domínio, por exemplo,example.org
não está emlocal,apelido virtual,caixa de correio virtualnemretransmissãoclasse de domínio, então ele cai naclasse de domínio padrão. Esta classe não possui destino nem tabelas de destinatários válidas. Aparentemente qualquer endereço que não pertença às outras classes de domínio é válido para esta classe de endereço. Isto é lógico, pois o sistema local não saberia quais endereços estão disponíveis no sistema remoto.
smtpd_sender_restrictions
são suficientes para isso
Esqueça osmtpd_reject_unlisted_sender
pois isso poderia ser feito usando smtpd_sender_restrictions
sozinho.
A configuração mais fácil seria:
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/restricted_senders, reject
Uma alternativa poderia ser usar
regex:
tabelas:smtpd_sender_restrictions = check_sender_access regex:/etc/postfix/restricted_senders
Isso permite usarexpressões regulares:
/example\.com$/ OK // 550 You are not allowed to use this sender address.
Você pode testar os resultados da pesquisa com
postmap -q
:$ /usr/sbin/postmap -q [email protected] regexp:/etc/postfix/restricted_senders 550 You are not allowed to use this sender address. $ /usr/sbin/postmap -q [email protected] regexp:/etc/postfix/restricted_senders OK