Postfix aliases virtuais desconhecidos REJECT (não BOUNCE)

4

Executamos um pequeno servidor de e-mail postfix (e dovecot) para vários domínios hospedados, usando mapas de alias virtuais e com o spamassassin configurado.

Recentemente ficou claro que estamos gerando algum backscatter; os e-mails de spam estão chegando a endereços de e-mail não existentes e estão sendo devolvidos ao remetente falsificado. Isso é obviamente um problema em termos de reputação para nosso servidor de e-mail e também significa que somos spam em nome dos spammers.

O que eu quero fazer é alterar o comportamento do postfix para que, em vez de gerar um e-mail de retorno MAILER-DAEMON, o e-mail seja rejeitado durante a transação SMTP.

Eu tentei adicionar local_recipient_maps ( link ), mas isso não fez diferença. Acho que isso acontece porque estou usando o virtual_alias_maps (e outras soluções de caixa de correio virtual também não se aplicam aqui).

postconf -n gera:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_interfaces = all
inet_protocols = all
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
mail_owner = postfix
mail_spool_directory = /var/spool/mail
mailbox_size_limit = 0
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 0
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = verrotech.com
myhostname = mail.verrotech.com
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.domain.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.domain.com/privkey.pem
smtpd_tls_security_level = may
unknown_local_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual

Obrigado.

    
por Dave 28.07.2016 / 11:59

2 respostas

6

Depois de algumas pesquisas, sua pergunta me fez perceber que eu tive o mesmo problema no meu servidor de e-mail, então, primeiro de tudo, thanx.

Em segundo lugar, você deve observar que, por padrão, o postfix bloqueia esse tipo de tráfego. No manual smtpd_reject_unlisted_recipient :

smtpd_reject_unlisted_recipient (default: yes)

Request that the Postfix SMTP server rejects mail for unknown recipient addresses, even when no explicit reject_unlisted_recipient access restriction is specified. This prevents the Postfix queue from filling up with undeliverable MAILER-DAEMON messages.

Então, por que você está recebendo 250 OK para emails de destino desconhecido? Por causa dessas linhas:

mydestination = $myhostname, localhost.$mydomain, localhost
virtual_alias_maps = hash:/etc/postfix/virtual

O smtpd_reject_unlisted_recipient verifica os emails de destino, mas muito especificamente:

An address is always considered "known" when it matches a virtual(5) alias or a canonical(5) mapping.

   The recipient domain matches $mydestination, $inet_interfaces or $proxy_interfaces, but the recipient is not listed in $local_recipient_maps, and $local_recipient_maps is not null.
   The recipient domain matches $virtual_alias_domains but the recipient is not listed in $virtual_alias_maps.
   The recipient domain matches $virtual_mailbox_domains but the recipient is not listed in $virtual_mailbox_maps, and $virtual_mailbox_maps is not null.
   The recipient domain matches $relay_domains but the recipient is not listed in $relay_recipient_maps, and $relay_recipient_maps is not null. 

Como seu mydestination não inclui seu $mydomain (apenas o nome do servidor e o host local) e você não tem nenhum *_domains no lugar, não há outras verificações para destinos "conhecidos".

Você só precisa adicionar:

virtual_alias_domains = $mydomain

um postfix de atualização. (Se eu estiver configurando corretamente e todos os seus e-mails estiverem no formato "[email protected]")

Se isso não funcionar, você pode tentar isto:

smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, reject_unverified_recipient

OBSERVAÇÃO: o comando RCPT TO será verificado se o destino realmente existir para ambas as mensagens incoming e outgoing . Use com cuidado pois ele estabelece uma conexão extra para cada novo destino e levará algum tempo para responder a todos os e-mails processados pelo servidor (pode levar alguns segundos para testar cada destino).

    
por 01.08.2016 / 19:51
2

Esta resposta não é exatamente o que você pediu, mas foi assim que resolvi esse problema para os meus próprios casos de uso.

Rejeitar devoluções:

Em /etc/postfix/main.cfg, tenho:

2bounce_notice_recipient = devnull
bounce_notice_recipient = devnull
bounce_queue_lifetime = 0d
delay_warning_time = 0h
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases

Em / etc / postfix / aliases, tenho:

devnull:    /dev/null

Então eu corro:

postmap aliases
postfix reload

O resultado final é que as rejeições vão para / dev / null. Pode não pegar todos eles, então YMMV. Por favor, deixe-me saber se isso funciona para você.

    
por 28.07.2016 / 17:40