O Postfix não enfileira e-mails enviados, mas todas as configurações são padrão. Por que?

O Postfix não enfileira e-mails enviados, mas todas as configurações são padrão. Por que?

Configurei um servidor de e-mail com Postfix, Roundcube e Dovecot. Tudo funciona bem – quase.

No meu país, existe um serviço de e-mail gratuito popular chamado inbox.lv. E eles têm uma regra anti-spam configurada que quando um novo servidor tenta enviar e-mails para eles, eles primeiro o colocam na lista cinza por 10 minutos e exigem que o servidor reenvie o e-mail. Justo.

No entanto, ao usar o Postfix para enviar e-mails de saída (do Roundcube ou do Thunderbird), ele não coloca a mensagem na fila. Em vez disso, ele retorna imediatamente com um erro. Há também uma entrada de log (novas linhas/espaçamento adicionados por mim para legibilidade; endereços IP e de e-mail redigidos para privacidade):

May 31 23:17:18 21 postfix/smtpd[24814]: NOQUEUE: reject: RCPT from unknown[MY.IP.ADDRESS.HERE]: 
    450 4.1.1 <[email protected]>: Recipient address rejected: unverified address:
    host mx1.inbox.lv[194.152.32.74] said: 450 4.7.1 <unknown[SERVER.IP.ADDRESS.HERE]>:
    Client host rejected: greylisted, please retry in 597 seconds (in reply to RCPT TO command);
    from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[192.168.1.216]>

Todas as configurações da fila são deixadas nos padrões. A versão do Postfix é 2.10.1.

Por que isso está acontecendo e como posso fazer o Postfix enfileirar as mensagens e tentar novamente em 10 minutos?

Adicionado:Configuração do Postfix (anonimizada):

[root@myserver etc]# postconf mail_version
mail_version = 2.10.1

[root@myserver etc]# postconf -n
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
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 100000000
milter_default_action = accept
mydestination = localhost
mydomain = mydomain.lv
myhostname = mydomain.lv
mynetworks_style = host
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
non_smtpd_milters = $smtpd_milters
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_milters = inet:127.0.0.1:8891
smtpd_recipient_restrictions = reject_unverified_recipient
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/mydomain.lv/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mydomain.lv/privkey.pem
smtpd_tls_security_level = may
unknown_local_recipient_reject_code = 550
virtual_mailbox_domains = d1.lv d2.lv d3.lv d4.lv
virtual_mailbox_limit = 0
virtual_transport = lmtp:unix:/var/run/dovecot/lmtp

[root@myserver etc]# postconf -M
smtp       inet  n       -       n       -       -       smtpd
submission inet  n       -       n       -       -       smtpd
smtps      inet  n       -       n       -       -       smtpd
pickup     unix  n       -       n       60      1       pickup
cleanup    unix  n       -       n       -       0       cleanup
qmgr       unix  n       -       n       300     1       qmgr
tlsmgr     unix  -       -       n       1000?   1       tlsmgr
rewrite    unix  -       -       n       -       -       trivial-rewrite
bounce     unix  -       -       n       -       0       bounce
defer      unix  -       -       n       -       0       bounce
trace      unix  -       -       n       -       0       bounce
verify     unix  -       -       n       -       1       verify
flush      unix  n       -       n       1000?   0       flush
proxymap   unix  -       -       n       -       -       proxymap
proxywrite unix  -       -       n       -       1       proxymap
smtp       unix  -       -       n       -       -       smtp
relay      unix  -       -       n       -       -       smtp
showq      unix  n       -       n       -       -       showq
error      unix  -       -       n       -       -       error
retry      unix  -       -       n       -       -       error
discard    unix  -       -       n       -       -       discard
local      unix  -       n       n       -       -       local
virtual    unix  -       n       n       -       -       virtual
lmtp       unix  -       -       n       -       -       lmtp
anvil      unix  -       -       n       -       1       anvil
scache     unix  -       -       n       -       1       scache
[root@myserver etc]#

Responder1

Você configurou o postfix para se conectar a destinos remotos para perguntar sobre destinatários - como um requisitoantesvocê aceita qualquer coisa em sua fila local.

smtpd_recipient_restrictions =reject_unverified_recipient

Em um servidor de e-mail de uso geral, isso é inapropriado para qualquer coisamasdomínios sob seu controle ou com cujas operadoras você tenha acordo.

Perguntar aos servidores remotos se eles têm determinados usuários sem entregar e-mails fará com que vários servidores parem de querer interagir com você. Antes de saber o que você enviará, eles não conseguem dizer facilmente se você é um spammer tentando limpar uma lista de suas próximas vítimas ou alguém que pretende entregar correspondência.

A mudança mais simples para resolver essa preocupação e resolver seu problema original:

smtpd_recipient_restrictions =permit_sasl_authenticated,reject_unauth_destination, reject_unverified_recipient

Como as restrições são processadas na ordem especificada, isso isenta seus usuários autenticados e solicitações de retransmissão não relacionadas (rejeitadas de qualquer maneira). Dessa forma, você ainda pode impor reject_unverified_recipientmensagens recebidas (onde o dovecot provavelmente confirmará os endereços sem demora). Mas sem incomodar os servidores remotos sobre destinatários para os quais você ainda não tem e-mail. Porém, você precisa ser mais complexo do que isso se quiser que o recurso também esteja habilitado para que seus usuários escrevam mensagens uns para os outros. O arquivo ADDRESS_VERIFICATION_README na documentação do postfix é ... antigo, mas ainda deve fornecer uma visão geral.


Eu geralmente recomendo usar o master.cf (que vem com modelos adequados, pelo menos em tempos mais recentes) para configurar instâncias smtpd parcialmente separadas, uma na porta 25 para uso geral da Internet, uma na porta 465 para envios de usuários autenticados obrigatoriamente. Dessa forma, você pode, de maneira razoavelmente sustentável, impor regras diferentes por serviço, facilitando ainda mais a tarefa de tratar o tráfego de retransmissão de forma diferente do tráfego de entrada.

informação relacionada