Come configurare un nome di dominio reale per l'indirizzo del mittente


10

Ho provato a inviare un'e-mail utilizzando la mail()funzione php ma non è riuscito in qualche modo, lamentandomi che è richiesto un nome di dominio reale. Nel maillog si osserva quanto segue:

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 = mydomain.com [127.0.0.1], rifiuto = 553 5.5.4 ... Nome di dominio reale richiesto per l'indirizzo del mittente
sendmail 4984 r25984: to=external@server.com, ctladdr = apache (48/48), ritardo = 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 = Errore formato dati
sendmail 4984 r25984: r25984: DSN: errore formato dati

cron è in grado di inviare e-mail a external@server.com ogni volta che si verifica un problema con logrotate. Non sono sicuro del motivo per cui php non è in grado di farlo. Ho provato ad apportare modifiche alla configurazione predefinita in `sendmail.mc con il seguente:

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

Ma non sembra avere alcun effetto. L'intestazione dell'indirizzo nella funzione di posta php è già stata impostata. Ho anche assicurato che SELinux httpd_can_sendmailè abilitato. Cos'altro devo fare per ricevere la posta?


Hai modificato il sendmail.mc, cambiato le righe localhost.localdomaine localhostin qualcosa di significativo e compilato il file mc in sendmail.cf?
fboaventura,

@fboaventura, no, ho decommentato le due linee rimuovendole dnldi fronte.
Domanda Overflow

Puoi aggiungere la parte rilevante del tuo script php, dove stai invocando mail()? E, sendmail.mcnon è il file di configurazione corretto, questo file deve essere compilato sendmail.cfusando m4.
fboaventura,

@fboaventura, grazie, so che per quanto riguarda i requisiti di compilazione, sono in grado di farlo funzionare ora. Vedi la mia risposta qui sotto. Grazie per l'aiuto :)
Domanda Overflow

Risposte:


10

Penso di averlo appena risolto. Ho il seguente in / 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

Ciò di cui ho bisogno è di mettere myserver.com davanti alla linea in localhost.localdomainmodo che sendmail penserà che sta usando un dominio reale per inviare l'e-mail.


3
Potresti sicuramente accettare la tua risposta è che era la soluzione ... Come sidenote, di solito è /etc/hosts(con una "s"), a parte questo: buona risposta!
Levita,

2

Devi configurare, nei tuoi script, le intestazioni della tua email da avere From: sender@domain.com.


Spiacenti, avrei dovuto menzionare che questo è già stato impostato nelle intestazioni.
Domanda Overflow

1

Nel tuo sendmail.mcaggiungi:

LOCAL_CONFIG
Djmyserver.com

Ricompila sendmail.cf, riavvia sendmail e dovresti essere OK


1

Nel mio caso, su Ubuntu 16.04 su un'istanza di AWS, era necessario aggiungere a /etc/mail/sendmail.mc:

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

su una riga prima della MAILER_DEFINITIONSriga verso la fine del file E aggiungi la stessa riga alla fine di /etc/mail/submit.mc. Quindi digitare sudo super i permessi di root e compilare per configurare con:

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

... poi exitsudo. Alla fine, sudo service sendmail restartper riavviare sendmail, e da quel momento le e-mail apparivano come inviate dal nome di dominio. Nessuno degli altri comandi FEATURE o MASQUERADE era richiesto, né una voce nel /etc/hostsfile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.