J'utilise Sendmail sur un serveur Centos pour envoyer des e-mails pour les scripts PHP, mais le problème est que le courrier est remis à une boîte aux lettres locale sur la machine plutôt que ce qui est spécifié dans les enregistrements MX pour le domaine - qui pointent en fait vers une autre machine I utiliser pour le courrier électronique.
Je voudrais que sendmail n'essaye pas de livrer localement le courrier pour le domaine pour lequel la machine est configurée, existe-t-il un moyen simple de désactiver la livraison locale?
Le domaine n'est pas dans le fichier local-host-names.
J'ai déjà fait beaucoup de recherches sur Google et j'ai regardé:
Configuration de Sendmail pour ne pas remettre de courrier à la machine locale
Désactiver la livraison locale dans Sendmail
Mais soit il n'y a pas de réponse, soit il ne convient pas.
Je ne veux pas relayer vers un autre serveur, je veux juste qu'il envoie du courrier quel que soit le domaine.
Pour donner un exemple:
J'ai deux serveurs, l'un est le serveur de messagerie à mail.example.com et un serveur Web qui est example.com, lorsque j'utilise le service smtp sur le serveur Web, il achemine actuellement le courrier vers une boîte aux lettres locale sur example.com, mais il devrait aller dans les boîtes aux lettres sur mail.example.com
Sortie des retours sendmail -bt:
MODE DE TEST D'ADRESSE (l'ensemble de règles 3 n'est PAS automatiquement invoqué) Entrer > 3,0 [email protected] entrée canonify: info @ exemple. com Entrée Canonify2: info Canonify2 retourne: info canonify renvoie: info entrée d'analyse: info Entrée Parse0: info Parse0 retourne: info Entrée ParseLocal: info Retours ParseLocal: info Entrée Parse1: info Parse1 renvoie: $ # local $: info retours d'analyse: $ # local $: info
Réponses:
Ce que j'ai fait pour désactiver la livraison locale. J'utiliserai le domaine example.com.
Exigences:
Pas:
à la fin:
et alors:
essai:
Vous devriez le voir se connecter au serveur Google, puis vous devriez voir votre courrier être livré dans votre boîte de réception Google.
la source
sendmailconfig
, ajoutez les lignes que vous avez spécifiées, exécutez àsendmailconfig
nouveau et faites unservice sendmail restart
et cela fonctionne!/etc/passwd
etetc/passwd
Grâce au sporker et à Pawel, vous m'avez mis dans la bonne direction pour résoudre ce problème.
Mon problème d'origine était que sendmail considérait mes comptes de messagerie example.com de domaine comme des comptes locaux.
Ces liens se sont révélés très utiles: Sendmail vers le domaine local en ignorant les enregistrements MX (partie 2) http://lists.freebsd.org/pipermail/freebsd-questions/2004-September/057382.html http://objectmix.com/sendmail/ 367920-sendmail-ignores-mailertable-some-semilocal-domains.html
Mais dans mon cas, en utilisant FreeBSD 8.2, ce qui a vraiment fait l'affaire, c'est:
# cd /etc/mail
# vim freebsd.mc
Ajoutez ces deux lignes:
Juste avant:
# make
--- C'est la sortie ---
--- Fin de sortie ---
# cp sendmail.cf sendmail.cf.bak
# cp host.example.com.cf sendmail.cf
# /etc/rc.d/sendmail restart
J'espère que cela évite quelques maux de tête à quelqu'un.
la source
Je ne suis pas une personne sendmail mais je crois que sendmail traitera tout domaine stocké en
/etc/mail/local-host-names
tant que nom de domaine local.Vous pouvez essayer de vider ce fichier, (ne le supprimez pas) et redémarrer sendmail et voir comment vous allez.
EDIT
Le nom de fichier je l' ai mentionné est effectivement mis en
sendmail.cf
et le vôtre ne peut pas être mis àlocal-host-names
regarder dans
/etc/mail/sendmail.cf
pourCe ne sont en aucun cas des faits testés mais juste moi qui pense à haute voix.
la source
Ce n'est peut-être pas la solution que vous recherchez, mais si votre problème est que l'utilisateur "admin" ou "root" reçoit beaucoup d'e-mails et une énorme boîte aux lettres, vous voudrez peut-être envisager de configurer un travail cron pour effacer la boîte aux lettres sortie chaque semaine, jour, etc.
Nous avions plusieurs serveurs CentOS avec ce problème, mais le problème était que nous voulions parfois lire le courrier car cela peut aider à diagnostiquer parfois divers problèmes.
La solution consistait à simplement cron job et essuyer la boîte de temps en temps.
Si nous trouvions un problème ... nous commentions le travail cron (temporairement) et lisions les journaux et les e-mails pour trouver des indices.
Juste une pensée ... et une solution rapide / facile pour vous.
Sinon, jetez un œil au fichier sendmail.mc et modifiez-le en conséquence.
Mise à jour rapide:
Ce n'est pas exactement ce que vous demandez, mais cela pourrait vous donner quelques idées et aider à vous éclairer:
http://www.pettingers.org/code/sendmail-local.html
la source
Je suis personnellement plus un postfix, mais cela ressemble beaucoup à ce que vous avez configuré le serveur d'envoi pour recevoir du courrier pour @ votredomaine.com. S'il existe un sendmail équivalent au mécanisme de transport dans postfix, c'est ce que j'utilise pour acheminer le courrier en interne entre mes serveurs.
la source
Il semble que votre ensemble de règles 3 supprime les informations de domaine. J'ai inclus quelques étapes de dépannage générales ci-dessous. Si cela ne fonctionne pas, vous devrez m'envoyer votre sendmail.cf pour y jeter un œil.
À partir de la sortie, example.com est traité comme un domaine local. faire un nslookup:
définir q = mx
domain.com
Si cela donne l'adresse IP de la machine locale, vous devez regarder votre DNS. Regardez également dans / etc / hosts pour vous assurer que domain.com n'est pas répertorié.
Il semble également supprimer le @ domain.com, pourriez-vous essayer avec quelque chose comme [email protected] pour voir s'il le répertorie également en tant que domaine local.
Vérifiez également la valeur Cw dans votre fichier sendmail.cf.
la source
Probablement pas ce que vous voulez, mais SSMTP est très agréable pour un serveur sortant uniquement, où vous pouvez spécifier un concentrateur de messagerie.
la source
Si vous souhaitez renvoyer une erreur lors d'une tentative de livraison à une adresse locale, vous pouvez utiliser le plan d'accès et quelque chose comme:
Si vous voulez que les e-mails soient «remis» mais jetés, vous pouvez installer une entrée virtusertable qui alias tout pour «
@your.domain
» à dev-null. Il peut être utile de continuer à livrer au moins "root
" localement, car c'est souvent le destinataire des rapports par e-mail des tâches cron, etc. Essayez quelque chose comme ceci dans votrevirtusertable
:Avec un
dev-null
alias local qui redirige les messages vers / dev / null, cela devrait continuer à livrer le courrier racine, mais à jeter les messages livrés aux autres utilisateurs.la source
Le correctif de Pawel a fonctionné pour moi, mais sendmailconfig n'existait pas sur les centos, j'ai donc dû exécuter
pour mettre à jour la configuration
la source
Je confirme simplement que la réponse de Pawel a résolu mon problème très similaire.
Pour toute personne utilisant FreeBSD mais pas intéressée à s'impliquer trop dans la corvée des fichiers sendmail cf, la séquence suivante est celle que vous utiliseriez pour ajouter les deux lignes dans l'exemple de Pawel:
la source
J'ai suivi ces suggestions et j'ai remarqué qu'en ajoutant simplement l'étape mentionnée par Pawel,
"/ etc / hosts définissant example.com assigné à la même adresse IP que ci-dessus", j'ai simplement ajouté l'adresse IP de mon serveur suivie du nom du serveur dans le
/etc/hosts
fichier, et c'est tout.Cela m'a suffi pour que les e-mails soient acheminés via Google et reviennent à mes e-mails.
la source
Si vous utilisez Cpanel / WHM pour gérer votre serveur, assurez-vous de sélectionner Remote Mail Exchanger dans Cpanel / WHM au lieu de Détecter automatiquement la configuration. L'échangeur de courrier distant enverra tous les e-mails via les enregistrements MX, y compris le domaine local. Avec Automatique, les e-mails du domaine local seront directement acheminés localement et ne seront pas envoyés à un serveur externe défini dans les enregistrements MX.
la source