Usando uma configuração postfix padrão do Ubuntu (Ubuntu 22.04), gostaria de filtrar os e-mails da seguinte maneira:
- Envios recebidos e smtps (a grande maioria dos e-mails): verificações SPF e RBL (estou usando policyd.pl ) e depois verificados com spamassassin e clamav usando Amavis.
- Correio autenticado por Sasl de clientes em redes externas: taxa limitada/verificada (estou usando
postfwd
para isso), depois verifica Amavis, mas não SPF e RBL (porque não queremos rejeitar com base nas redes de envio dos clientes).
Estou certo ao pensar que se eu fizer o Amavis verificar o último da cadeia e só tiver opções permissivas no ouvinte de "reentrada" master.cf, posso garantir que os e-mails de usuários autenticados por sasl não recebam o mesmos cheques que outras correspondências? Por exemplo:
smtpd_client_restrictions =
permit_mynetworks,
# Rate limiting with postfwd:
check_policy_service inet:127.0.0.1:10040,
permit_sasl_authenticated,
# RBLs, SPF with policyd.pl:
check_policy_service unix:private/senderCheck
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
...,
[various reject_* lines here],
...,
# Amavis checks last:
content_filter = smtp-amavis:[127.0.0.1]:10024,
permit
Em seguida, tenha a configuração de "reentrada" do Amavis em master.cf como:
127.0.0.1:10025 inet n - - - - smtpd
-o syslog_name=amavis-reentry
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=
-o smtpd_data_restrictions=
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
Editar : Para referência, aqui está a configuração do smtpd em master.cf que tenho no momento:
smtp inet n - n - - smtpd
-o smtpd_sasl_auth_enable=no
-o smtpd_discard_ehlo_keywords=silent-discard,dsn
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_key_file=/etc/letsencrypt/live/smtp.xxx/privkey.pem
-o smtpd_tls_cert_file=/etc/letsencrypt/live/smtp.xxx/fullchain.pem
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_security_level=may
-o smtpd_tls_key_file=/etc/letsencrypt/live/smtp.xxx/privkey.pem
-o smtpd_tls_cert_file=/etc/letsencrypt/live/smtp.xxx/fullchain.pem
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
É típico ter múltiplas instâncias do
smptd
daemon para finalidades diferentes, assim como você configurou a instância127.0.0.1:10025
para o Amavis. Nelemaster.cf
é possível substituir as configuraçõesmain.cf
da referida instância.content_filter
Não se trata de uma restriçãosmtpd_recipient_restrictions
, mas de um parâmetro de configuração separado.Aqui está um exemplo de
tcp/465
instância smtps() usando Dovecot para autenticação Postfix SASL :Aqui, as restrições substituem aquelas em
main.cf
:smtpd_client_restrictions
,policyd.pl
mas mantém apostfwd
limitação de taxa.smtpd_recipient_restrictions
único possui um pequeno conjunto dereject_
restrições que são relevantes para correspondência de saída.permit_mynetworks
são removidos de ambos, pois isso é explicitamente para usuários autenticados.Eu acrescentaria algo assim para evitar que os usuários usem os endereços uns dos outros:
A documentação Postfix e Dovecot SASL tem um exemplo para o protocolo de envio , mas o RFC 8314 o tornou obsoleto, e TLS implícito ( 3.3 ), ou seja, envios na porta
465
, devem ser usados.