J'ai essayé d'envoyer un e-mail en utilisant php mail()
fonction, mais il a échoué en quelque sorte, se plaignant qu'un nom de domaine est nécessaire. Ce qui suit est observée dans le maillog:
sendmail 4984 r25984: from = Apache, taille = 273, class = 0, nrcpts = 1, msgid = <[email protected]>, = relais Apache @ localhost
Sendmail 4985 r25985: = ruleset check_mail, arg1 =, relais = mydomain.com [127.0.0.1], rejeter = 553 5.5.4 ... nom de domaine requis pour l'adresse de l'expéditeur
Sendmail 4984 r25984: [email protected], ctladdr = Apache (48/48), retard = 00: 00: 01, xdelay = 00: 00: 00, mailer = relais, pri = 30273, relais = [127.0.0.1] [127.0.0.1], dsn = 5.6.0, stat = erreur de format de données
Sendmail 4984 r25984: r25984: DSN: erreur de format de données
cron est en mesure d'envoyer un courriel à [email protected] chaque fois qu'il ya un problème avec logrotate. Je ne sais pas pourquoi php est incapable de le faire. J'ai essayé d'apporter des modifications à la configuration par défaut dans `sendmail.mc ce qui suit:
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
Mais, il ne semble pas avoir d'effet. L'en-tête de l'adresse en fonction php mail a déjà été défini. J'ai également veillé à ce que SELinux httpd_can_sendmail
est autorisé. Quoi d'autre que je dois faire pour obtenir le courrier livré?
Je pense que je viens de résoudre ça. J'ai les suivants dans / 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
Ce dont j'ai besoin, c'est de placer myserver.com devant la ligne avec localhost.localdomain
de sorte que sendmail pensera qu'il utilise un domaine réel pour envoyer le courrier électronique.
Vous devez configurer, dans vos scripts, les en-têtes de votre email pour avoir From: [email protected]
.
Dans mon cas, sur Ubuntu 16.04 sur une instance AWS, ce qui était nécessaire était d'ajouter à /etc/mail/sendmail.mc
:
define(`confDOMAIN_NAME', `mydomainname.com')dnl
sur une ligne avant le MAILER_DEFINITIONS
Ligne vers la fin du fichier et ajoutez la même ligne à la fin de /etc/mail/submit.mc
. Puis tapez Sudo su
Pour les autorisations root et compiler pour configurer:
m4 sendmail.mc > sendmail.cf
m4 submit.mc > submit.cf
... alors exit
sudo. Finalement, Sudo service sendmail restart
Pour redémarrer Sendmail et à partir de celui-ci, des courriels apparaissaient comme envoyés par rapport au nom de domaine. Aucune des autres commandes de fonctionnalité ou de mascarade n'était requise, ni une entrée dans le /etc/hosts
déposer.