Contexte: Si vous avez configuré un serveur Apache local à des fins de développement, vous pouvez avoir rencontré le problème où sendmail prend beaucoup de temps (au moins une minute) pour envoyer des e-mails. Cela est extrêmement frustrant si vous essayez de déboguer un problème avec un e-mail que vous avez généré.
Il existe plusieurs messages de forum sur Internet qui traitent de ce problème. Cependant, aucun thème n'a décrit quoi faire avec suffisamment de détails pour ma connaissance limitée. Voici les étapes qui ont fonctionné pour moi:
1) trouvez votre nom d'hôte (au cas où vous l'auriez oublié) en utilisant cette commande:
:~$ cat /hosts/hostname
myhostname
2) éditez le fichier /etc/hosts
et assurez-vous que la première ligne est la suivante:
127.0.0.1 localhost.localdomain localhost myhostname
3) éditez le fichier de configuration de sendmail ( /etc/mail/sendmail.cf
dans Ubuntu) et décommentez la ligne#O HostsFile=/etc/hosts
4) Redémarrez l'ordinateur. L'ordinateur devrait démarrer beaucoup plus rapidement maintenant et la fonction mail () devrait revenir presque immédiatement. CEPENDANT, les e-mails ne seront réellement envoyés que si vous suivez l'étape 5.
5) Vous devez à nouveau utiliser l'option «-f» de sendmail lorsque vous utilisez la fonction de messagerie. Par exemple:
mail('[email protected]', 'the subject', 'the message', null, '[email protected]');
Ma question pour mes confrères serveurs est:
Quelles autres modifications peuvent être apportées pour que je ne doive pas utiliser l'option sendmail -f? Bien qu'il ne soit pas très difficile d'ajouter l'option -f, c'est un problème lorsque votre CMS (tel que Drupal) n'utilise pas l'option -f lors de l'envoi de courrier. Vous auriez besoin de pirater un module principal pour ajouter cette option.
cat /etc/hostname
Réponses:
Eh bien, je sais que ce n'est pas ce que vous demandez, mais pourquoi vous n'essayez pas Postfix ou Exim? Ils sont tous deux disponibles pour ubuntu (Postfix est même le mta par défaut sur les systèmes Ubuntu) et ils fournissent tous deux une commande «sendmail» compatible qui fonctionne très bien. IMHO sendmail est un peu daté et vous obtiendrez de meilleures chances de support avec un MTA plus moderne.
la source
sendmail
binaire qui accepte les mêmes options que le sendmail d'origine, pour des questions de compatibilité.Cela a fonctionné pour moi:
Voir les instructions ici sur la façon de le faire ici: https://help.ubuntu.com/community/Postfix (Il peut déjà être installé et le binaire «sendmail» peut en fait être un alias pour postfix)
http://lenss.nl/2009/01/making-php-mail-work-on-ubuntu-through-postfix/
Je pense que vous pouvez simplement définir le paramètre «myorigin» sur n'importe quel nom de domaine actif tel qu'un nom de domaine que vous possédez.
la source
Cela peut ou non être une solution pour vous: ajoutez
mail.force_extra_parameters = "[email protected]"
à votre fichier php.ini . Cela fait que PHP ajoute automatiquement [email protected] comme cinquième paramètre à la fonction mail () de PHP.C'est une valeur codée en dur et applicable uniquement dans php.ini donc ce ne sera pas très flexible, mais peut-être fonctionne pour vous dans votre cas de développement?
la source
En observant le trafic réseau (pensez
tcpdump
) ou en exécutant unstrace
sur vos processus sendmail ou apache, vous devriez pouvoir avoir une idée de la raison de ce retard afin de pouvoir résoudre le problème racine.Habituellement, les retards dans cette plage sont dus à l'échec des recherches DNS, mais vous ne le saurez pas avant de regarder. À moins que vous ne résolviez le problème sous-jacent, il finira probablement par être un problème, peu importe la façon dont vous essayez de le contourner.
la source
Je n'ai jamais rencontré de problème en utilisant mail () en PHP qui n'était pas le résultat d'un problème sur le MTA.
Dans votre fichier php.ini, il montrera quelle commande il exécute pour envoyer un email (par défaut: "sendmail -t -i"). Essayez d'envoyer un e-mail à partir de la ligne de commande en utilisant ceci - je parie que c'est lent.
Les éléments habituels à vérifier sont de savoir si un serveur DNS est correctement configuré sur la machine (et peut résoudre toutes les adresses configurées dans le MTA) et que si un relais intelligent est configuré, le nom peut être résolu en une adresse à laquelle le système peut se connecter.
la source