
Configuré un servidor de correo con Postfix, Roundcube y Dovecot. Todo funciona bien, casi.
En mi país existe un popular servicio de correo electrónico gratuito llamado inbox.lv. Y tienen configurada una regla antispam que cuando un nuevo servidor intenta enviarles correos electrónicos, primero lo incluyen en la lista gris durante 10 minutos y requieren que el servidor vuelva a enviar el correo electrónico. Me parece bien.
Sin embargo, cuando se utiliza Postfix para enviar correos electrónicos salientes (ya sea desde Roundcube o Thunderbird), no pone el mensaje en cola. En lugar de eso, regresa inmediatamente con un error. También hay una entrada de registro (nuevas líneas/espaciados agregados por mí para mayor legibilidad; direcciones IP y de correo electrónico redactadas por razones de privacidad):
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 las configuraciones de la cola se dejan en los valores predeterminados. La versión de Postfix es 2.10.1.
¿Por qué sucede esto y cómo puedo hacer que Postfix ponga los mensajes en cola y vuelva a intentarlo en 10 minutos?
Agregado:Configuración de 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]#
Respuesta1
Configuró Postfix para conectarse a destinos remotos y preguntarles sobre los destinatarios, como requisito.antesaceptas cualquier cosa en tu cola local.
smtpd_recipient_restrictions =
reject_unverified_recipient
En un servidor de correo de propósito general, esto no es apropiado para nada.perodominios bajo su control o con cuyos operadores tenga un acuerdo.
Preguntar a los servidores remotos si tienen ciertos usuarios sin entregar correos hará que un buen número de servidores dejen de querer interactuar con usted. Antes de saber lo que enviará, no podrán saber fácilmente si es un spammer que intenta lavar una lista de sus próximas víctimas o alguien que intenta entregar correo.
El cambio más simple para abordar esa preocupación y resolver su problema original:
smtpd_recipient_restrictions =
permit_sasl_authenticated
,
reject_unauth_destination
, reject_unverified_recipient
Debido a que las restricciones se procesan en el orden especificado, esto exime a sus usuarios autenticados y a las solicitudes de retransmisión no relacionadas (rechazadas de todos modos). De esta manera, aún puede aplicar la aplicación reject_unverified_recipient
de los mensajes entrantes (donde presumiblemente dovecot confirmará las direcciones sin demora). Pero sin molestar a los servidores remotos sobre destinatarios para los que en un momento aún no tienes correo. Sin embargo, debe ser más complejo que esto si desea que la función también esté habilitada para que sus usuarios se escriban mensajes entre sí. El archivo ADDRESS_VERIFICATION_README en su documentación de postfix es... un poco antiguo, pero aún así debería brindarle una descripción general.
Generalmente recomiendo usar master.cf (que viene con plantillas adecuadas, al menos en tiempos más recientes) para configurar instancias smtpd parcialmente separadas, una en el puerto 25 para uso general de Internet, una en el puerto 465 para envíos de usuarios autenticados obligatoriamente. De esa manera, puede aplicar, de manera razonablemente fácil de mantener, diferentes reglas por servicio, lo que facilita aún más la tarea de tratar el tráfico de retransmisión de manera diferente del tráfico entrante.