web-dev-qa-db-fra.com

ne peut pas envoyer de courrier électronique à des adresses de mon propre domaine

J'ai un script php simple sur mon domaine qui m'envoie un email:

...
$toMail = "[email protected]"; //this works - I get the email at my gmail
$toMail = "[email protected]"; //this doesn't - I get nothing

mail($toMail, $subject, $message, $header); 

Quel paramètre je change pour résoudre ce problème?

31
sol

J'ai eu ce problème moi-même, alors que je redessinais récemment un site.

Il y avait un problème avec la façon dont notre système avait été configuré. Le système pensait donc que, parce que le courrier électronique provenait du même domaine, il s'agissait d'un courrier indésirable qu'il a bloqué.

Vérifiez auprès de votre administrateur système que vous êtes autorisé à envoyer les courriels, etc. 

Soit ça, soit vous devrez modifier les en-têtes pour que cela ressemble à un envoi depuis une adresse externe. J'espère que tu vas régler ce problème.

20
schubySteve

Pour les personnes utilisant Google Apps pour le courrier électronique, mais ayant votre hôte chez un autre fournisseur, ces instructions sont plus détaillées pour les personnes qui ne connaissent pas très bien cPanel.

Je pouvais résoudre le problème d'envoi d'e-mails à partir de mon domaine à l'aide d'un formulaire PHP lors de l'envoi de l'e-mail à un compte situé sur mon domaine.

formulaire de contact, par exemple, mydomain.com, en envoyant un courrier électronique à [email protected]. Ce qui précède ne fonctionnait pas, même si mon domaine dispose des enregistrements MX corrects pour le domaine utilisant Google Apps.

Comme Mike l'a noté (et d'autres) ci-dessus, le problème a été résolu: l'ajout des enregistrements MX dans le cPanel.

  1. Entrez dans le cPanel
  2. Allez dans la section cPanel Mail
  3. Recherchez Maintenance des entrées MX, parfois il n’ya pas de texte au-dessus de l’icône.
  4. Sélectionnez le domaine associé
  5. Modifiez Email Routing en Echangeur de courrier distant.
  6. Ajoutez tous les enregistrements Google MX tels qu’ils figurent dans la configuration de votre domaine en utilisant les valeurs de priorité appropriées . Vous pouvez vérifier les enregistrements ici et les priorités https://support.google.com/a/answer/174125
  7. Vérifiez deux fois que Échangeur de courrier distant. est sélectionné.

Avec ce paramètre, j'ai pu envoyer un courrier électronique à l'aide de la fonction de courrier électronique PHP vers un compte de messagerie situé dans le même domaine que mon site Web.

Les instructions de Google App concernant les enregistrements MX https://support.google.com/a/answer/54717?hl=fr

47
VicM

La réponse principale sur https://serverfault.com/questions/65365/disable-local-delivery-in-sendmail me semble correcte. L'essentiel est que vous souhaitiez ce qui suit dans votre sendmail.mc:

define(`MAIL_HUB`, 'example.com.')dnl
define(`LOCAL_RELAY`, 'example.com.')dnl

Où example.com est le domaine en question.

13
Michael Hellein

Si tu utilises postfixe, fais ceci:

  1. connectez-vous à votre serveur via ssh.
  2. éditez votre main.cf fichier :

nano /etc/postfix/main.cf

  1. commentez la ligne suivante avec # :

# mydestination = ...

  1. ajouter à la fin du main.cf document:

mydestination =

  1. rechargez votre configuration postfix en lançant:

/etc/init.d/postfix reload

11
Matthieu Grimber

J'ai eu le même problème et j'ai pu le résoudre de la manière suivante. Je ne stocke pas le courrier localement sur le serveur, mais j'utilise des enregistrements MX sur le registraire pour les envoyer directement dans Google Apps. Il s'est avéré que les enregistrements MX devaient également être mis à jour dans Cpanel, car le serveur n'enlevait pas les enregistrements MX du registraire mais les supprimait car il n'y avait ni enregistrement MX ni boîte aux lettres locale. J'ai mis à jour les entrées MX sur Cpanel pour correspondre aux entrées MX du registraire, et le problème a été résolu instantanément

3
Mike

Avez-vous votre courrier électronique hébergé sur un serveur différent de celui du site Web? Si tel est le cas, le script PHP tentera peut-être de l'envoyer en interne, auquel cas il disparaîtra alors que les autres courriels cibles seront mis sur Internet et acheminés correctement.

La solution que j'ai trouvée consistait à désactiver le serveur de messagerie sur votre hôte Web, puis PHP mettrait le message sur Internet pour qu'il soit envoyé correctement.

1
Meep3D

Je suis d’accord avec Michael Hellein, le problème fondamental pourrait être votre sendmail considérant vos comptes de messagerie exemple.com de domaine comme des comptes locaux. Si oui, voici quelques liens de guidage:

Mais dans mon cas, avec FreeBSD 8.2, l’astuce a été la suivante:

# cd /etc/mail
# vim freebsd.mc

Ajoutez ces deux lignes:

define(`MAIL_HUB', `example.com.')dnl
define(`LOCAL_RELAY', `example.com.')dnl

Juste avant:

MAILER(local)
MAILER(smtp)

Ensuite:

# make

C'est la sortie:

cp freebsd.mc Host.example.com.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 Host.example.com.mc > Host.example.com.cf
cp freebsd.submit.mc Host.example.com.submit.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 Host.example.com.submit.mc > Host.example.com.submit.cf

Ensuite:

# cp sendmail.cf sendmail.cf.bak
# cp Host.example.com.cf sendmail.cf
# /etc/rc.d/sendmail restart

J'espère que cela vous évitera des maux de tête.

1
estepix

Avec PostFix, Debian7, smtp Mailjet

Si le domaine est my-domain.com, dans /etc/postfix/main.cf, changez 

mydestination = my-domain.com, localhost, localhost.localdomain, localhost

à 

mydestination = localhost, localhost.localdomain, localhost
1
Nolwennig

J'ai eu ce problème également. La désactivation du serveur de messagerie signifiait qu'aucun courrier électronique n'avait été envoyé! Donc, le correctif que j'ai fait était de supprimer tous les noms de domaine locaux du fichier /etc/mail/local-Host-names

0
Roberoo

J'ai eu un problème similaire dans lequel tous les mails étaient parfaitement envoyés à d'autres domaines comme gmail, live, yahoo etc. J'avais un serveur VPS avec GoDaddy qui fonctionnait sous Linux sous Qmail.

J'ai résolu le problème en supprimant les noms de domaine spécifiques dans le fichier var/qmail/control/virtualdomains. 

0
SarthakGupta

Le serveur de messagerie SMTP pourrait également être une option.

0

assurez-vous que vous pouvez réellement envoyer des messages à votre compte de messagerie de domaine, puis vérifiez votre code/e-mail et assurez-vous que tout est bien orthographié.

0
techy

Je passe plus de 8 heures à résoudre cette erreur et à la résoudre, il suffit de changer l'en-tête en une autre adresse électronique et cela fonctionnera 

0
Abdou Ghonim

Comme expliqué par d'autres, certains serveurs sont configurés pour rejeter les courriers électroniques manquants d'une adresse électronique valide sur le serveur d'envoi. Vérifiez que la chaîne $ headers inclut une adresse électronique valide définie "De: [email protected]".

0
Michelle

J'ai eu ce problème à quelques reprises, et le coupable était si le courrier électronique était hébergé sur un autre serveur (par exemple, Google Apps). Lorsque le courrier est envoyé au domaine local, la recherche de l'enregistrement MX n'a ​​pas été prise en compte et, par conséquent, il ne sera pas routé correctement. La solution à ce problème consiste simplement à laisser la fonction de messagerie désactivée sur votre serveur par votre hôte. 

0
user258677

J'avais le même problème et, comme j'étais hébergé sur un autre serveur pour la messagerie électronique, je devais simplement désactiver le serveur de messagerie local.

0
user208320

Assurez-vous que votre enregistrement txt est configuré correctement pour votre domaine. Cela se produit généralement lorsque vous ne mettez pas cela dans l'enregistrement txt: @ (None)v = spf1 include: _spf.google.com ~ all

0
nezter

Ce qui a fonctionné pour moi est de sélectionner Échange de courrier local :

  • Allez à cPanel
  • Sélectionnez Email Routing
  • Sélectionnez votre domaine
  • Sélectionner Échangeur de courrier local

Echange de courrier local vous permettra d’envoyer un courrier électronique à un compte du même domaine dans GoDaddy: par exemple: un courrier électronique à [email protected]

0
edrian