J'ai essayé d'envoyer un e-mail à l'aide de la mail()
fonction php , mais cela a échoué, se plaignant qu'un vrai nom de domaine est requis. Ce qui suit est observé dans le maillog:
sendmail 4984 r25984: from = apache, size = 273, class = 0, nrcpts = 1, msgid = <[email protected]>, relay = apache @ localhost
sendmail 4985 r25985: ruleset = check_mail, arg1 =, relay = mydomain.com [127.0.0.1], rejeter = 553 5.5.4 ... Nom de domaine réel requis pour l'adresse de l'expéditeur
sendmail 4984 r25984: [email protected], 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 = Erreur de format de données
sendmail 4984 r25984: r25984: DSN: erreur de format de données
cron peut envoyer un e-mail à [email protected] chaque fois qu'il y a 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 avec les éléments suivants:
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 cela ne semble avoir aucun effet. L'en-tête de l'adresse dans la fonction de messagerie php a déjà été défini. J'ai également veillé à ce que SELinux httpd_can_sendmail
soit activé. Que dois-je faire d'autre pour faire livrer le courrier?
la source
sendmail.mc
, changé les ligneslocalhost.localdomain
etlocalhost
quelque chose de significatif et compilé le fichier mc ensendmail.cf
?dnl
devant elles.mail()
? Et, cesendmail.mc
n'est pas le bon fichier de configuration, ce fichier doit être compilé ensendmail.cf
utilisant lem4
.Réponses:
Je pense que je viens de le résoudre. J'ai les éléments suivants dans / etc / hosts :
Ce dont j'ai besoin, c'est de placer myserver.com devant la ligne avec
localhost.localdomain
afin que sendmail pense qu'il utilise un vrai domaine pour envoyer l'e-mail.la source
/etc/hosts
(avec un "s"), à part ça: bonne réponse!Vous devez configurer, dans vos scripts, les en-têtes de votre email pour les avoir
From: [email protected]
.la source
Dans votre
sendmail.mc
ajout:Recompilez
sendmail.cf
, redémarrez sendmail et vous devriez être OKla source
Dans mon cas, sur Ubuntu 16.04 sur une instance AWS, il fallait ajouter à
/etc/mail/sendmail.mc
:sur une ligne avant la
MAILER_DEFINITIONS
ligne vers la fin du fichier ET ajoutez la même ligne à la fin de/etc/mail/submit.mc
. Tapez ensuitesudo su
pour les autorisations root et compilez pour configurer avec:... puis
exit
sudo. Enfin,sudo service sendmail restart
pour redémarrer sendmail, et à partir de là, des e-mails apparaissaient comme envoyés depuis le nom de domaine. Aucune des autres commandes FEATURE ou MASQUERADE n'était requise, ni aucune entrée dans le/etc/hosts
fichier.la source