Exim et PHPMailer: ne peut pas accepter l'authentification lorsque l'hôte est localhost

Mon problème:

En utilisant PHPMailer, je ne peux pas envoyer de courrier électronique SMTP authentifié lors de l'utilisation de l'hôte localhost . Je ne vois pas pourquoi c'est ainsi.

Je me rends count que la racine principale du problème ici est presque certainement un paramètre sur Exim, plutôt que PHPMailer, mais je ne trouve aucune solution de travail pour résoudre ce problème.

À propos de mon server:

J'ai mon propre server qui a installé Exim 4.87 et PHPMailer 5.2.16. Le server count environ 100 counts, beaucoup avec leurs propres lists de diffusion, etc.

Le server exécute le count DNS, SMTP et hébergeant tous sur le même endroit, de sorte que les scripts PHP appelant l'expéditeur Exim ne doivent pas quitter le server, c'est tout local.

Tentative de correction:

Symptômes similaires à ce problème . Après avoir lu cette publication, j'ai détendu les parameters d'Exim pour autoriser les emails par personne (PHP) et diverses autres allocations dans Exim:

  • Autoriser l'envoi par courrier électronique de Nobody = ON
  • Faites confiance aux en-têtes PHP-Script pour déterminer l'expéditeur des courriels envoyés à partir de process exécutés comme personne = ON
  • Exiger une distance (nom d'hôte / adresse IP) HELO = OFF
  • Exiger que les connections SMTP entrantes envoient un HELO qui ne correspond pas aux domaines locaux de ce server. = OFF

Et oui, j'ai lu la documentation PHPMailer concernant les emails non envoyés ou échec.

Mon configuration PHPMailer (uniquement les bits importants importants):

  //$this->Host = "server-hostname.co.uk"; //THis WORKS //$this->Host = "account-domain.co.uk"; // this WORKS $this->Host = "localhost"; // this FAILS $this->SMTPAuth = true; // Only works on non-localhost Host. //$this->Port = 25; //default. $this->Username = 'email_Address@accountdomain.co.uk'; $this->Password = '...!...'; 

Je peux vérifier que le port correct pour TLS est 487 et que le port correct pour SMTP est 25. Le nom d'user et le mot de passe sont corrects. Les détails ci-dessus fonctionnent lorsque l'hôte n'est PAS Localhost . Mais localhost n'accepte aucune authentification d'envoi.

Mon problème est que, pour des raisons de vérification par courrier électronique (et de bonnes pratiques), je dois authentifier les courriels sortants, mais je ne peux que les authentifier si l'hôte est un hôte distant plutôt que l'hôte local.

Cela me cause un timeout de 2 secondes que j'aimerais supprimer. Je sais que le timeout provient à la fois de l'authentification et de SMTPSecure . Cette réponse me donne des indications sur l'utilisation de localhost pour atténuer ce timeout, et cela a du sens pour moi, mais en quelque sorte, la configuration du server n'accepte pas cela.

J'ai une configuration standard de PHPMailer à l'aide de Host->localhost et ça fonctionne bien, sauf qu'il n'utilise pas l'authentification SMTP ou SMTPSecurity.

LES ERREURS:

(SMTPDebug = 4)
Note: Excusez les noms de domaine sont incohérents (.com et .co.uk) mais vous avez l'idée …

 2016-11-24 14:40:52 Connection: opening to localhost:25, timeout=20, options=array ( ) 2016-11-24 14:40:52 Connection: opened 2016-11-24 14:40:52 SMTP -> get_lines(): $data is "" 2016-11-24 14:40:52 SMTP -> get_lines(): $str is "220-serverdomain.com ESMTP Exim 4.87 #1 Thu, 24 Nov 2016 14:40:52 +0000 " 2016-11-24 14:40:52 SMTP -> get_lines(): $data is "220-serverdomain.com ESMTP Exim 4.87 #1 Thu, 24 Nov 2016 14:40:52 +0000 " 2016-11-24 14:40:52 SMTP -> get_lines(): $str is "220- We do not authorize the use of this system to transport unsolicited, " 2016-11-24 14:40:52 SMTP -> get_lines(): $data is "220-serverdomain.com ESMTP Exim 4.87 #1 Thu, 24 Nov 2016 14:40:52 +0000 220- We do not authorize the use of this system to transport unsolicited, " 2016-11-24 14:40:52 SMTP -> get_lines(): $str is "220 and/or bulk e-mail. " 2016-11-24 14:40:52 SERVER -> CLIENT: 220-serverdomain.com ESMTP Exim 4.87 #1 Thu, 24 Nov 2016 14:40:52 +0000 220- We do not authorize the use of this system to transport unsolicited, 220 and/or bulk e-mail. 2016-11-24 14:40:52 CLIENT -> SERVER: EHLO www.accountdomain.co.uk 2016-11-24 14:40:52 SMTP -> get_lines(): $data is "" 2016-11-24 14:40:52 SMTP -> get_lines(): $str is "250-serverdomain.com Hello www.accountdomain.co.uk [::1] " 2016-11-24 14:40:52 SMTP -> get_lines(): $data is "250-serverdomain.com Hello www.accountdomain.co.uk [::1] " 2016-11-24 14:40:52 SMTP -> get_lines(): $str is "250-SIZE 52428800 " 2016-11-24 14:40:52 SMTP -> get_lines(): $data is "250-serverdomain.com Hello www.accountdomain.co.uk [::1] 250-SIZE 52428800 " 2016-11-24 14:40:52 SMTP -> get_lines(): $str is "250-8BITMIME " 2016-11-24 14:40:52 SMTP -> get_lines(): $data is "250-serverdomain.com Hello www.accountdomain.co.uk [::1] 250-SIZE 52428800 250-8BITMIME " 2016-11-24 14:40:52 SMTP -> get_lines(): $str is "250-PIPELINING " 2016-11-24 14:40:52 SMTP -> get_lines(): $data is "250-serverdomain.com Hello www.accountdomain.co.uk [::1] 250-SIZE 52428800 250-8BITMIME 250-PIPELINING " 2016-11-24 14:40:52 SMTP -> get_lines(): $str is "250-AUTH PLAIN LOGIN " 2016-11-24 14:40:52 SMTP -> get_lines(): $data is "250-serverdomain.com Hello www.accountdomain.co.uk [::1] 250-SIZE 52428800 250-8BITMIME 250-PIPELINING 250-AUTH PLAIN LOGIN " 2016-11-24 14:40:52 SMTP -> get_lines(): $str is "250-STARTTLS " 2016-11-24 14:40:52 SMTP -> get_lines(): $data is "250-serverdomain.com Hello www.accountdomain.co.uk [::1] 250-SIZE 52428800 250-8BITMIME 250-PIPELINING 250-AUTH PLAIN LOGIN 250-STARTTLS " 2016-11-24 14:40:52 SMTP -> get_lines(): $str is "250 HELP " 2016-11-24 14:40:52 SERVER -> CLIENT: 250-serverdomain.com Hello www.accountdomain.co.uk [::1] 250-SIZE 52428800 250-8BITMIME 250-PIPELINING 250-AUTH PLAIN LOGIN 250-STARTTLS 250 HELP 2016-11-24 14:40:52 CLIENT -> SERVER: STARTTLS 2016-11-24 14:40:52 SMTP -> get_lines(): $data is "" 2016-11-24 14:40:52 SMTP -> get_lines(): $str is "220 TLS go ahead " 2016-11-24 14:40:52 SERVER -> CLIENT: 220 TLS go ahead 2016-11-24 14:40:52 SMTP Error: Could not connect to SMTP host. 2016-11-24 14:40:52 CLIENT -> SERVER: QUIT 2016-11-24 14:40:52 SMTP -> get_lines(): $data is "" 2016-11-24 14:40:52 SMTP -> get_lines(): $str is "221 serverdomain.com closing connection " 2016-11-24 14:40:52 SERVER -> CLIENT: 221 serverdomain.com closing connection 2016-11-24 14:40:52 Connection: closed 2016-11-24 14:40:52 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting 

Que dois-je changer sur Exim (ou ailleurs) afin que l'authentification SMTP puisse fonctionner sur localhost ?

Si nécessaire, je peux vous montrer le journal de debugging à partir d'envois réussis lorsque Host->"serverdomain.co.uk"; ou Host->"accountdomain.co.uk"; . À votre santé

MODIFIER:

OpenSSL est activé sur PHP.

EDIT 2

Exim conf file Authentification (partie de)

 #BEGIN ACL_NOTQUIT_BLOCK # BEGIN INSERT ratelimit # ignore authenticated hosts accept authenticated = * accept hosts = : +recent_authed_mail_ips : +loopback warn #only rate limit port 25 condition = ${if eq {$received_port}{25}{yes}{no}} condition = ${if match {$smtp_notquit_reason}{command}{yes}{no}} log_message = "Connection Ratelimit - $sender_fullhost because of notquit: $smtp_notquit_reason ($sender_rate/$sender_rate_period max:$sender_rate_limit)" ratelimit = 1.2 / 1h / ssortingct / per_conn # END INSERT ratelimit #END ACL_NOTQUIT_BLOCK 

  • comment fournir le nom d'user et le mot de passe pour le module de messagerie Ansible
  • Ajouter le courrier électronique sortant sur ExIM de manière appropriée
  • Nouveau server ne peut pas envoyer de courrier
  • Différents servers pour les mails entrants
  • smtp relay attack sur notre server de messagerie (pas un server de relais ouvert)
  • Changements de configuration du server SMTP pour Ubuntu 9.10 (Karmic Koala)
  • sendmail ne peut pas relayer d'elle-même
  • Envoyer un email de différents domaines à différents IP externes sur un seul server
  • L'envoi de courrier d'une application Web à Google Apps ne fonctionnera pas - le routing interne? VPS
  • Pipez le courrier électronique entrant dans un script sur Windows IIS SMTP?
  • Est-il considéré comme sûr d'envoyer un courrier électronique sans utiliser SSL?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.