Cómo configurar un nombre de dominio real para la dirección del remitente


10

Traté de enviar un correo electrónico utilizando la mail()función php pero falló de alguna manera, quejándose de que se requiere un nombre de dominio real. Lo siguiente se observa en el registro de correo:

sendmail 4984 r25984: from = apache, size = 273, class = 0, nrcpts = 1, msgid = <201.r25@localhost.localdomain>, relay = apache @ localhost
sendmail 4985 r25985: ruleset = check_mail, arg1 =, relay = midominio.com [127.0.0.1], rechazar = 553 5.5.4 ... Se requiere un nombre de dominio real para la dirección del remitente
sendmail 4984 r25984: to=external@server.com, ctladdr = apache (48/48), delay = 00: 00:01, xdelay = 00: 00: 00, mailer = relay, pri = 30273, relay = [127.0.0.1] [127.0.0.1], dsn = 5.6.0, stat = Error de formato de datos
sendmail 4984 r25984: r25984: DSN: error de formato de datos

cron puede enviar correos electrónicos a external@server.com siempre que haya un problema con logrotate. No estoy seguro de por qué PHP no puede hacerlo. Intenté hacer cambios a la configuración predeterminada en `sendmail.mc con lo siguiente:

MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(mycom)dnl

Pero, no parece tener ningún efecto. El encabezado de la dirección en la función de correo php ya se ha configurado. También me aseguré de que SELinux httpd_can_sendmailesté habilitado. ¿Qué más debo hacer para recibir el correo?


¿Editó el sendmail.mc, cambió las líneas localhost.localdomainy localhostalgo significativo y compiló el archivo mc sendmail.cf?
fboaventura

@fboaventura, no, descomenté las dos líneas quitándolas dnlfrente a ellas.
Pregunta Overflow

¿Puedes agregar la parte relevante de tu script php, donde estás invocando mail()? Y, sendmail.mcno es el archivo de configuración adecuado, este archivo debe compilarse para sendmail.cfusar m4.
fboaventura

@fboaventura, gracias, sé que con respecto al requisito de compilación, puedo hacer que funcione ahora. Vea mi respuesta a continuación. Gracias por su ayuda :)
Desbordamiento de preguntas

Respuestas:


10

Creo que lo acabo de resolver. Tengo lo siguiente en / etc / hosts :

127.0.0.1 www.mydomain.com test.mydomain.com
127.0.0.1 cdn.mycdn.com
127.0.0.1 localhost.localdomain localhost myserver.com

Lo que necesito es colocar myserver.com delante de la línea localhost.localdomainpara que sendmail piense que está utilizando un dominio real para enviar el correo electrónico.


3
Definitivamente podría aceptar su propia respuesta, esa fue la solución ... Como nota al margen, generalmente es /etc/hosts(con una "s"), aparte de eso: ¡buena respuesta!
Levite

2

Debe configurar, en sus scripts, los encabezados de su correo electrónico From: sender@domain.com.


Lo siento, debería haber mencionado que esto ya se ha configurado en encabezados.
Pregunta Desbordamiento

1

En tu sendmail.mccomplemento:

LOCAL_CONFIG
Djmyserver.com

Recompile sendmail.cf, reinicie sendmail y debería estar bien


1

En mi caso, en Ubuntu 16.04 en una instancia de AWS, lo que se necesitaba era agregar a /etc/mail/sendmail.mc:

define(`confDOMAIN_NAME', `mydomainname.com')dnl

en una línea antes de la MAILER_DEFINITIONSlínea hacia el final del archivo, Y agregue la misma línea al final de /etc/mail/submit.mc. Luego escriba sudo sulos permisos de root y compile para configurar con:

m4 sendmail.mc > sendmail.cf
m4 submit.mc > submit.cf

... entonces exitsudo. Finalmente, sudo service sendmail restartpara reiniciar sendmail, y a partir de ahí, los correos electrónicos aparecían como enviados desde el nombre de dominio. Ninguno de los otros comandos FEATURE o MASQUERADE fueron necesarios, ni una entrada en el /etc/hostsarchivo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.