Los correos electrónicos enviados con Postfix se tratan como spam y, a veces, no se entregan en absoluto.

Los correos electrónicos enviados con Postfix se tratan como spam y, a veces, no se entregan en absoluto.

Estoy intentando configurar el envío de correos electrónicos con SMTP en mi VPS con Ubuntu 18.04. Estoy usando postfix, nodemailer.

Cuando envío desde un[correo electrónico protegido], a una cuenta de Gmail, se queda atascado en la carpeta de spam de Gmail. Obtuve una puntuación de 6,8 enwww.mail-tester.com, con estas deducciones:

-1.274 RDNS_NONE Entregado a la red interna por un host sin rDNS. Esto puede indicar que no tiene un rDNS configurado para su nombre de host o que el rDNS no coincide con su IP de envío.

-0.896 SPF_HELO_SOFTFAIL SPF: HELO no coincide con el registro SPF (softfail) softfail

Tu mensaje no está firmado con DKIM

Creo que mi registro TXT es correcto:

"v=spf1 ip4:[removed-server-ip] include:_spf.mail.hostinger.com ~all"

/etc/postfix/main.cf:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2

# TLS parameters
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_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = [removed-domain-name].com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, localhost.$mydomain, localhost.[removed-domain-name].com, [removed-domain-name].com, [removed-domain-name]$
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = all

policyd-spf_time_limit = 3600
smtpd_recipient_restrictions =
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_unauth_destination,
   check_policy_service unix:private/policyd-spf

método de correo de nodo:

  "use strict";
  const nodemailer = require("nodemailer");

  let transporter = nodemailer.createTransport({
    sendmail: true,
    newline: 'unix',
    path: '/usr/sbin/sendmail',
    secure: true,
  })

  let info = await transporter.sendMail({
    from: '"[removed-domain-name].com" <no-reply@[removed-domain-name].com>', // sender address
    to: req.body.to, // list of receivers
    subject: "Hello", // Subject line
    text: req.body.message, // plain text body
    html: req.body.message, // html body
  });

Respuesta1

  1. Configure su DNS inverso. Agregue una entrada PTR que vincule su IP con el nombre de su servidor MX

  2. Asegúrese de que myhostname en main.cf esté configurado con el nombre de su servidor MX. Probablemente esta sea la causa de que su HELO no coincida.

  3. Puede configurar su SPF en "v=spf1 a mx include:_spf.mail.hostinger.com ~all" para aceptar automáticamente sus MX como remitentes, pero debería estar bien con ip.

  4. Registre su dominio en Google para mejorar la capacidad de entrega:https://support.google.com/a/answer/9649569?hl=en

  5. Definitivamente use DKIM:

opendkim

Instale opendkim.

Configurar

Editar /etc/opendkim.conf :

  • svmodo para firmar y verificar correos electrónicos entrantes (es posible que no necesite el modo de verificación)
  • Dirección del informe[correo electrónico protegido]
  • KeyTable, SigningTable: archivos que vinculan las claves a las entradas DNS
  • InternalHosts: un archivo que contiene una lista de hosts confiables

Crea las claves

mkdir /etc/opendkim/keys/example.com/
cd /etc/opendkim/keys/example.com/
opendkim-genkey -s mail -d example.com
chown opendkim:opendkim mail.*

El parámetro -sse llama selector y -des el dominio.

Editar/etc/opendkim/SigningTabley agregue un par de dominio/selector:

*@example.com mail._domainkey.example.com.

Editar/etc/opendkim/KeyTabley agregue un par de selector/clave:

mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private

Editar/etc/opendkim/TrustedHostse insertar

*.example.com
[your local network]

DNS

Debe agregar su clave pública a su DNS. Encontrarás la clave en/etc/opendkim/keys/xxx.yy/mail.txt

Crea un campo TXT:

mail._domainkey.example.com 10800 TXT "v=DKIM1; k=rsa; p=very_long_key"

sufijo

Tienes que informar a Postfix sobre opendkim para que firme las claves.

Obtenga el método de conexión para opendkim en su configuración. Debería ser algo como inet:8891@localhosty agregarlo como filtro enprincipal.cf:

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

Finalizar

Reinicie (eventualmente habilite) opendkim y luego postfix. Verifique la clave en su DNS conopendkim-testkey -d example.com -s mail -vvv

Consulte con mail-tester.com. Verifique en /var/log/maillog que cada correo electrónico enviado agregue una líneaDKIM-Signature field added

información relacionada