Configurar Sendmail para enviar correo sin entrar en Spam

Se enfrentó a un problema: en un servidor Apache correctamente configurado con módulos instalados y registros de dominio configurados del proveedor - las cartas enviadas a través de la función de correo desde scripts php terminaron en spam o no se entregaron en absoluto.



Comencé a comprender y no pude encontrar más de una publicación completa en la Internet rusa que revelaría el problema y ayudaría a resolver todos los problemas.



Presento a su atención, recopilado de diversas fuentes, método probado y utilizado de configuración del servidor para el envío correcto de correos electrónicos sendmail.



Sistema: Ubuntu 20.06

Servicio de correo: Yandex



1. Instalación de Sendmail



Si por alguna razón no se instaló. Realizar la instalación y configuración básicas



sudo apt-get install php-mail
sudo apt-get install sendmail
sudo sendmailconfig

      
      





Regla php.ini



En lugar de noreply@site.ru, escriba un correo al que se enviarán los informes (encabezado Return-Path :).



sendmail_path = "/usr/sbin/sendmail -t -f noreply@site.ru -i"

      
      





El encabezado Return-Path: es un encabezado importante a los ojos de los servicios de correo electrónico.

Si no lo configura, el encabezado será algo así como "Ruta de retorno: <noreply@localhost.localdomain>".



Es muy deseable que el valor del encabezado siempre coincida con el nombre de dominio desde el que se envía el mensaje, independientemente del valor del encabezado From:, de lo contrario, puede enviarse a Spam o rechazarse por completo.



2. Configuración de registros DNS



Necesitamos configurar registros SPF, DMARC, DKIM.



Qué es responsable de lo que no voy a pintar. Runet tiene una gran cantidad de instrucciones.

Si también usa algún servicio de correo, ellos tienen sus propias instrucciones detalladas para la configuración.



A lo que debe prestar atención es a que la dirección IP del servidor está registrada en el SPF.



v=spf1 ip4:ip_server include:_spf.yandex.net ~all
      
      





A continuación, debe solicitar un registro rDNS inverso (registro PTR) de su proveedor de alojamiento de DNS .

Vincula tu dominio a la dirección IP del servidor.



Como regla general, el proveedor lo instala por su cuenta a pedido.



4. Cambiar el nombre de host



Establezca el nombre de host igual a nuestro nombre de dominio:



sudo hostnamectl set-hostname site.ru
      
      





5. Edite el archivo sendmail.mc



Vaya al archivo /etc/mail/sendmail.mc



Necesitamos configurar los encabezados "Received: from" y "Received: by". Son importantes para determinar el nivel de confianza en el servidor que envía el correo electrónico.



Agregue las siguientes líneas al final del archivo antes de MAILER_DEFINITIONS



FEATURE(allmasquerade)
FEATURE(masquerade_envelope)
FEATURE(local_no_masquerade)
MASQUERADE_AS(`site.ru')

      
      





Y al final del archivo:



define(`MAIL_HUB', `site.ru.')dnl
define(`LOCAL_RELAY', `site.ru.')dnl

      
      







6. Comprobación de la configuración de apache y firewall



sudo ufw allow 25
sudo nano /etc/apache2/envvars

      
      





Estamos buscando líneas y reemplazamos www-data con el usuario actual bajo el cual apache está ejecutando



export APACHE_RUN_USER = www-data

export APACHE_RUN_GROUP = www-data



7. Actualice la configuración y reinicie sendmail



sudo sendmailconfig
sudo service sendmail restart
sudo systemctl restart apache2

      
      






All Articles