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
Configure su DNS inverso. Agregue una entrada PTR que vincule su IP con el nombre de su servidor MX
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.
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.
Registre su dominio en Google para mejorar la capacidad de entrega:https://support.google.com/a/answer/9649569?hl=en
Definitivamente use DKIM:
opendkim
Instale opendkim.
Configurar
Editar /etc/opendkim.conf :
sv
modo 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 -s
se llama selector y -d
es 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@localhost
y 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