postfix envía pero no recibe correo electrónico

1

Estoy ejecutando postfix en una Raspberry Pi detrás de un enrutador doméstico con DNS dinámico configurado. postfix puede enviar correos electrónicos bien, pero no parece recibirlos.

Creo que el enrutador doméstico y el DNS dinámico están bien, estoy alojando un sitio web en Raspberry Pi, funciona bien y es de acceso público. Entonces, mi registro MX no está configurado correctamente o postfix no lo está (creo).

(He redactado mi nombre de host a continuación).

Configuración de DNS dinámico para myhostname.ddns.net

  • Dirección IPv4: la dirección IP de mi Raspberry Pi
  • Registro MX: myhostname.ddns.net, Prioridad 1

Configuración de reenvío de puertos en el enrutador doméstico

D   Service Port    Internal Port   IP Address  Protocol
1   80      80      192.168.0.10    ALL     # web server
2   22      22      192.168.0.10    ALL     # ssh
3   25      25      192.168.0.10    TCP     # mail server

en una tercera computadora, no en la Raspberry Pi

  • ping myhostname.ddns.net: funciona, veo que la dirección IP de mi Raspberry Pi responde.
  • señalando un navegador a http://myhostname.ddns.net: funciona, veo la raíz del sitio web. Esto confirma que el DNS dinámico está funcionando y que el reenvío del enrutador doméstico está funcionando.
  • en una cuenta de gmail, el envío de correo [email protected]falla después de aproximadamente 24 horas con "entrega incompleta, el servidor del destinatario no aceptó nuestras solicitudes de conexión. Tiempo de espera agotado". Si conoce una forma más rápida de realizar una prueba que no requiera esperar 24 horas, hágamelo saber.

en Raspberry Pi, conectado como "pi"

$ mail
No mail for pi

$ dig myhostname.ddns.net MX +short
1 myhostname.ddns.net

$ sudo postfix status
postfix/postfix-script: the Postfix mail system is running: PID: 16232

$ sudo netstat -plutn | grep 25
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      16232/master

$ sudo iptables -L -n -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination

$ cat /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Raspbian)
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    permit_mynetworks,
    reject_unauth_destination
smtpd_relay_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    defer_unauth_destination
myhostname = myhostname.ddns.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = myhostname.ddns.net, myhostname, localhost.localdomain, 
localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
home_mailbox = Maildir/
mailbox_command =
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes

$ cat /etc/mailname
myhostname.ddns.net

Actualizar

Comcast bloquea el puerto 25, consulte https://www.xfinity.com/support/articles/email-port-25-no-longer-supported

mipnw
fuente
Es posible que ya lo sepa, pero hay una buena cantidad de servicios que aceptarán el correo en el puerto 25 en su nombre (usted coloca sus servidores en sus registros MX) y reenviarán el correo a un puerto alternativo desbloqueado en su hogar conexión, que su servidor de correo está escuchando (el reenvío de puertos en su enrutador local obviamente todavía se aplica). El único inconveniente es que la mayoría quiere una cantidad decente de dinero para estos servicios. El más barato que he encontrado personalmente es mxguarddog.com . En realidad, pueden ser gratuitos si puedes vivir con solo usar [email protected].
Anaksunaman
1
@Anaksunaman No estaba al tanto de estos servicios, ¡gracias! Parece que mxguarddog.com ahora cuesta $ 0.25 / usuario / mes, no está mal, aunque eso se agregará al costo de alojar un servidor de correo ya que todo lo que hacen es retransmitir. ¡Aún así es una buena opción!
mipnw

Respuestas:

1

Aquí hay algunas cosas que debe verificar.

  1. Supongo que Google no puede enviarte un correo electrónico porque no tienes registro MX. Pero imaginemos que no es un problema por un momento y solucionemos problemas para resolver otros problemas. (No, DDNS no le dará MX por muchas buenas razones)

  2. asegúrese de poder conectarse a su puerto 25 desde Internet. Supongo que no podrás hacerlo, pero para probarlo, haz lo siguiente:

    nc -vv myhostname.ddns.net 25

o

telnet myhostname.ddns.net 25

Eso debería mostrarse si se le permite conectarse al puerto 25; tenga en cuenta que algunos ISP pueden bloquear las conexiones entrantes al puerto 25. Por supuesto, debe verificar su firewall interno en su pi (¿qué distribución de Linux ejecuta?)

  1. Tan pronto como esté conectado a su servidor, podrá enviar un correo electrónico utilizando telnet / nc.

    EHLO myhostname.ddns.net

(debería obtener algunas líneas que comienzan con 250)

mail from: [email protected]
rcpt to: email@to_send_it_to.com
subject: Test email

y luego comienza a escribir tu correo electrónico. Termina con un solo "." en la última línea, así:

Test email from my server.
.

Entonces debería ver que el correo electrónico fue enviado o al menos aceptado. No es necesario esperar 24h :)

  1. Realmente dudo que pueda usar su servidor de correo electrónico Pi para cualquier cosa que no sean pocas pruebas. Para empezar, no tiene registros MX ni control sobre DKIM, PTR y SPF ... En otras palabras, no estará listo para la producción ni las personas aceptarán correos electrónicos de su servidor. Y el hecho de que tenga una IP dinámica significa que su IP está bloqueada por un 99% de filtros de spam. Sí, solo porque no es estático.
Chris
fuente
1. En realidad, mi proveedor de DDNS me da la opción de configurar un registro MX. Lo configuré Y dig myhostname.ddns.net MX +shortvuelve, 1 myhostname.ddns.netque es lo que espero.
mipnw
2. Ese es el problema de hecho. Puedo hacer telnet al puerto 25 desde dentro de la LAN pero no desde afuera. El puerto 25 en el rasbperry PI está abierto ya que puedo hacer telnet desde el interior de la LAN. El reenvío de puertos en el enrutador de mi casa funciona ya que puedo enviar SSH al PI desde fuera de la LAN y navegar por un sitio web desde fuera de la LAN. Entonces, los puertos 80 y 22 reenvían bien, y el puerto 25 también está configurado para reenviar. Comcast debe estar bloqueando el puerto 25, pero ¿por qué?
mipnw
3. No espero que este IP maneje una gran cantidad de tráfico. Ese no es el punto de esta configuración. Mis necesidades deben ser manejadas más que apropiadamente por un IP de frambuesa. También puedo enviar correos electrónicos desde PI a través de SMTP de GMAIL muy bien y no termina en las carpetas de correo no deseado de los destinatarios. No me importa si mi PI recibe SPAM cuando abro el puerto 25, puedo lidiar con eso.
mipnw
La distribución de Linux en el PI es raspbian
mipnw
0

Como dice Comcast en Puertos bloqueados en la red de Comcast, podría usar el puerto 587.

Editar: ComCast también declaró:> Si está ejecutando un servidor de correo, comuníquese con la Garantía de seguridad del cliente de Comcast al 1-877-807-6580 para obtener más información sobre este bloque.

Consulte: Cómo configurar el cifrado TLS en Postfix

Kyrie001
fuente
2
Configurar el cifrado TLS no permitirá que mi servidor de correo reciba correos electrónicos entrantes de otros servidores de correo electrónico para mis usuarios. Si entiendo los servidores de correo electrónico SMTP (no estoy seguro de hacerlo) que intentan enviar correos electrónicos a mi servidor se conectarán al puerto 25. El puerto 587 es para correos electrónicos salientes de mis usuarios a través de mi servidor al resto del mundo. El puerto 25 está bloqueado, por lo que nunca puedo recibir correos electrónicos, lo que frustra el propósito de alojar detrás del servicio de Internet en casa.
mipnw
en efecto. La respuesta de Jason Berg en su enlace "El puerto 25 debe estar abierto para recibir correo de Internet. Todos los servidores de correo establecerán una conexión en el puerto 25 e iniciarán TLS (cifrado) en ese puerto si es necesario". Está bastante claro. Desafortunadamente significa que el servidor de correo de alojamiento está muerto a la llegada si el puerto 25 está bloqueado.
mipnw