Le contexte : Si vous avez mis en place un serveur apache local à des fins de développement, vous avez peut-être rencontré le problème suivant : sendmail prend beaucoup de temps (au moins une minute) pour envoyer des e-mails. Ceci est extrêmement frustrant si vous essayez de déboguer un problème avec un email que vous avez généré.
Il existe plusieurs messages de forum sur Internet qui traitent de ce problème. Cependant, aucun thème ne décrit ce qu'il faut faire de manière suffisamment détaillée pour mes connaissances limitées. 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) modifier le fichier /etc/hosts
et assurez-vous que la première ligne est la suivante :
127.0.0.1 localhost.localdomain localhost myhostname
3) modifier 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 courriels ne seront pas réellement envoyés si vous ne suivez pas l'étape 5.
5) Vous devez utiliser l'option '-f' de sendmail lorsque vous utilisez la fonction de courrier. Par exemple :
mail('recipient@somewhere.com', 'the subject', 'the message', null, '-fsender@somewhere.com');
La question que je pose à mes collègues par défaut de serveur est la suivante :
Quelles autres modifications peuvent être apportées pour que je n'aie 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 devrez modifier un module de base pour ajouter cette option.