enregistrements sendmail et MX lorsque le serveur de messagerie n'est pas sur l'hôte Web

StackOverflow https://stackoverflow.com/questions/322659

Question

C’est un problème qui, je suis sûr, est facile à résoudre, mais je me suis cogné la tête dessus toute la journée.

Je développe un nouveau site Web pour un client. Le site Web se trouve sur (ceci est un exemple) website.com. J'ai un script de formulaire PHP pour envoyer les demandes des visiteurs à l'adresse request@website.com.

Lorsque j'ai codé ceci sur un serveur de transfert sur un domaine différent, tout a bien fonctionné. Lorsque je l'ai déplacé vers website.com, les messages électroniques ne sont jamais arrivés. Le serveur Web se trouve sur un hôte virtuel avec un fournisseur de services Internet majeur.

Voici ce que j'ai appris depuis: le serveur de messagerie de mon client est Microsoft Exchange sur une boîte physiquement située dans leur bureau. Le courrier arrive à chaque fois que quelqu'un du monde extérieur envoie un courrier électronique à l'adresse suivante: demandes@siteweb.com. Mais si le serveur Web envoie à la même adresse électronique, il échoue à chaque fois. Ce n'est pas un problème PHP. Je sécurise le shell sur le serveur Web et l’ai testé avec sendmail et l’application de messagerie UNIX. Je l'ai également testé en envoyant différents courriers électroniques à partir du shell. Je peux par exemple m'envoyer un email, mais personne ne se trouve sur le domaine website.com.

En bref, lorsque je suis connecté à website.com, envoyez un e-mail à l'adresse suivante: orders@website.com, utilisateur@website.com, autre_utilisateur@website.com. Toutes les autres adresses fonctionnent bien. Ce que j’ai découvert, c’est que ces courriels abandonnés sont acheminés vers le serveur "catchall" du serveur Web. compte où ils sont assis dans sa boîte de réception.

J'ai effectué une recherche MX sur website.com. L'enregistrement MX pointe vers mailsec.website.com. Je peux établir une connexion telnet avec le port 25 de mailsec.website.com et voir le serveur SMTP.

Il me semble que website.com ne fait pas de recherche MX lorsqu'il envoie un courrier électronique à request@website.com. Ma théorie est qu’il reconnaît le domaine en tant que local, qu’il n’ya pas de "requêtes". compte d'utilisateur à livrer, et place le courrier dans le compte fourre-tout. Ce que je veux, c'est forcer sendmail à effectuer la recherche MX et à envoyer le message au serveur Exchange. Je suis à la fin de l'esprit ici. Je n'arrive pas à comprendre comment faire cela.

En fait, je suis peut-être très éloigné de la base et l’ai mal diagnostiqué. Le courrier Internet et le MX ont toujours paru un art noir pour moi, et mon ignorance est certainement révélatrice de cette question.

Était-ce utile?

La solution

Je pense que le problème est que sendmail (votre processus) parle au démon sendmail local. Le démon sendmail local pense que, puisqu'il s'agit de website.com, il doit savoir comment envoyer le courrier électronique. Malheureusement, l’adresse réelle dans le champ À n’existe pas sur le serveur Web et il est donc transférée dans le champ "Intercepteur". boites aux lettres. Parlez à votre fournisseur de services Internet et demandez-lui de mettre à jour sa configuration sendmail afin que les messages adressés à ... @ website.com soient transférés vers l'échangeur de messagerie au lieu d'être traités localement.

Autres conseils

Sendmail par défaut devine la liste des domaines de messagerie locaux. Il peut être désactivé à l’aide de la ligne suivante de votre fichier sendmail.mc:

define(`confDONT_PROBE_INTERFACES',`True')

En tant que racine, répertoriez les domaines de messagerie locaux avant et après la modification.

echo '$=w' | sendmail -Am -bt

Vous verrez quels domaines doivent être ajoutés " manuellement " dans (généralement) le fichier / etc / mail / local-host-names après avoir désactivé la détection automatique.

P.S. Pour les questions sur sendmail, vous pouvez utiliser news: comp.mail.sendmail

tvanfosson l’a en fait, mais comme solution temporaire, vous devriez pouvoir modifier votre script afin qu’il envoie un courrier électronique à "utilisateur@mailsec.website.com", puis le courrier sera envoyé au serveur de messagerie réel.

Modifiez le fichier tsm.cf (dans / etc / mail / ou similaire) pour inclure

FEATURE(relay_entire_domain) 

entre les lignes DOMAIN () et MAILER (). Comme vous modifiez le fichier, vous pouvez également améliorer la sécurité avec

define(`confPRIVACY_FLAGS',``noexpn,novrfy'')

Après avoir modifié le fichier tsm.cf (ou un fichier de configuration sendmail), redémarrez ou SIGHUP le processus sendmail.

Cette modification est nécessaire car les serveurs WWW et MX du domaine n'existent pas dans le même espace de processus. Cette fonctionnalité déclenche sendmail pour traiter les messages pour le domaine en utilisant son mécanisme de livraison externe.

La partie modifiée du fichier tsm.cf devrait ressembler à ceci:

DOMAIN(website.com)dnl
FEATURE(relay_entire_domain)dnl
define(`confPRIVACY_FLAGS',``noexpn,novrfy'')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl

Ce qui a fonctionné pour moi a été d'ajouter un enregistrement MX sur le serveur Web hébergeant le site Web, qui pointe vers l'hôte attribué sur le serveur de nom de domaine d'origine. Dans le cas présenté ici, il s'agirait d'un enregistrement mx pointant vers: mailsec.website.com

Je suis nouveau ici. Je voulais prolonger la réponse RB_CWI , mais je ne suis pas autorisé à commenter. Sa solution a très bien fonctionné.

Vous n'êtes pas invité à définir le DOMAIN ().

Cependant, sur mon système, je devais installer le paquet sendmail-cf.

Les instructions ci-dessous ont été effectuées sur CentOS 6.5

.

D'abord, installez sendmail-cf

sudo yum install sendmail-cf

Ensuite, éditez le fichier senmail.mc

sudo vi /etc/mail/sendmail.mc

Au bas du fichier, ajoutez FEATURE (relay_entire_domain) dnl, afin qu'il ressemble à:

...
FEATURE(relay_entire_domain)dnl
MAILER(smtp)dnl        # right above this line
MAILER(procmail)dnl
dnl MAILER(cyrusv2)dnl

Enregistrez le fichier et redémarrez sendmail.

sudo service sendmail restart

Vous êtes bloqué sur le même problème. MX pointe vers un serveur Exchange externe mais php / sendmail n'a pas consulté cet enregistrement. Au lieu de cela, les courriers postés par WordPress sur ce serveur Web sont déposés dans la boîte aux lettres catchall.

La solution consistait à supprimer TOUTES les boîtes aux lettres sur le serveur Web. Maintenant, sendmail était intéressé par le MX et tous les courriers étaient envoyés à la Bourse.

Toutefois, Exchange utilise le serveur de messagerie de l'espace Web comme SmartHost pour les messages sortants. En guise de solution, nous avons pu utiliser les informations d'identification FTP pour accéder au serveur de messagerie. Je suppose que cette solution ne fonctionne pas sur tous les fournisseurs de cette planète, mais dans notre cas (all-inkl.com), cela a fonctionné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top