Ich verwende Sendmail auf einem Centos-Server, um E-Mails für PHP-Skripte zu senden. Das Problem besteht jedoch darin, dass E-Mails an ein lokales Postfach auf dem Computer gesendet werden und nicht an das, was in den MX-Einträgen für die Domäne angegeben ist - die tatsächlich auf einen anderen Computer I verweisen Verwenden Sie für E-Mail.
Ich möchte, dass sendmail nicht versucht, Mail für die Domain, für die der Computer eingerichtet ist, lokal zuzustellen. Gibt es eine einfache Möglichkeit, die lokale Zustellung zu deaktivieren?
Die Domain befindet sich nicht in der Datei local-host-names.
Ich habe schon viel gegoogelt und mir angeschaut:
Sendmail-Konfiguration, um keine E-Mails an den lokalen Computer zu senden
Deaktivieren Sie die lokale Zustellung in Sendmail
Aber entweder gibt es keine Antwort oder es ist nicht geeignet.
Ich möchte keine Weiterleitung an einen anderen Server, sondern nur E-Mails unabhängig von der Domäne senden.
Um ein Beispiel anzugeben:
Ich habe zwei Server, einer ist der Mailserver unter mail.example.com und ein Webserver unter example.com. Wenn ich den SMTP-Dienst auf dem Webserver verwende, leitet er E-Mails derzeit an ein lokales Postfach unter example.com weiter Es sollte zu den Postfächern auf mail.example.com gehen
Die Ausgabe von sendmail -bt gibt Folgendes zurück:
ADRESSENTESTMODUS (Regelsatz 3 NICHT automatisch aufgerufen) Eingeben > 3,0 [email protected] canonify eingabe: info @ beispiel. com Canonify2 Eingabe: Info Canonify2 gibt zurück: info Rückgabe kanonisieren: info Analyseeingabe: info Parse0-Eingabe: info Parse0 liefert: info ParseLocal-Eingabe: info ParseLocal gibt Folgendes zurück: info Parse1-Eingabe: info Parse1 gibt Folgendes zurück: $ # local $: info syntaktische Analyse gibt Folgendes zurück: $ # local $: info
Antworten:
Was ich getan habe, um die lokale Zustellung zu deaktivieren. Ich werde die example.com-Domain verwenden.
Bedarf:
Schritte:
Am Ende:
und dann:
testen:
Sie sollten sehen, wie eine Verbindung zum Google-Server hergestellt wird, und dann sehen, wie Ihre E-Mails an Ihren Google-Posteingang gesendet werden.
quelle
sendmailconfig
Sie essendmailconfig
erneut , führen Sie es aus , fügen Sie die angegebenen Zeilen hinzu, führen Sie es erneut aus und tun Sie a,service sendmail restart
und es funktioniert!/etc/passwd
undetc/passwd
Dank Sporker und Pawel hast du mich in die richtige Richtung gelenkt, um das zu reparieren.
Mein ursprüngliches Problem war, dass sendmail meine E-Mail-Konten von example.com als lokale Konten betrachtete.
Diese Links haben sich als sehr nützlich erwiesen: Mail an lokale Domain senden MX-Einträge ignorieren (Teil 2) http://lists.freebsd.org/pipermail/freebsd-questions/2004-September/057382.html http://objectmix.com/sendmail/ 367920-sendmail-ignoriert-mailertable-some-semilocal-domains.html
Aber in meinem Fall mit FreeBSD 8.2 war der Trick wirklich:
# cd /etc/mail
# vim freebsd.mc
Fügen Sie diese beiden Zeilen hinzu:
Kurz bevor:
# make
--- Dies wird ausgegeben ---
--- Ausgabeende ---
# cp sendmail.cf sendmail.cf.bak
# cp host.example.com.cf sendmail.cf
# /etc/rc.d/sendmail restart
Hoffe das erspart jemandem ein paar Kopfschmerzen.
quelle
Ich bin keine sendmail-Person, aber ich glaube, dass sendmail jede Domain, die in gespeichert ist,
/etc/mail/local-host-names
als lokalen Domainnamen behandelt.Sie können versuchen, diese Datei zu leeren (nicht löschen) und sendmail neu starten, um zu sehen, wie Sie vorgehen.
EDIT
Der Dateiname ich erwähnt wird tatsächlich in
sendmail.cf
und Ihnen möglicherweise nicht eingestellt werden ,local-host-names
schauen in
/etc/mail/sendmail.cf
fürDies sind keineswegs geprüfte Tatsachen, sondern ich denke nur laut nach.
quelle
Dies ist möglicherweise nicht die Lösung, nach der Sie suchen, aber wenn Ihr Problem darin besteht, dass der Benutzer "admin" oder "root" viele E-Mails und ein riesiges Postfach erhält, sollten Sie in Betracht ziehen, einen Cron-Job zum Löschen des Postfachs einzurichten jede Woche, jeden Tag usw.
Wir hatten mehrere CentOS-Server mit diesem Problem, aber der Haken war, dass wir die E-Mails manchmal lesen wollten, da dies manchmal bei der Diagnose verschiedener Probleme helfen kann.
Die Lösung bestand darin, einfach einen Job zu machen und die Kiste von Zeit zu Zeit abzuwischen.
Wenn wir ein Problem finden ... würden wir den Cron-Job (vorübergehend) auskommentieren und in den Protokollen und E-Mails nach Hinweisen suchen.
Nur ein Gedanke ... und eine schnelle / einfache Lösung für Sie.
Wenn nicht, schauen Sie sich die Datei sendmail.mc an und ändern Sie sie entsprechend.
Schnelles Update:
Dies ist nicht genau das, wonach Sie fragen, aber es könnte Ihnen einige Ideen geben und Ihnen dabei helfen, Licht in die Dinge zu bringen:
http://www.pettingers.org/code/sendmail-local.html
quelle
Ich persönlich bin eher eine Postfix-Person, aber das hört sich sehr danach an, als hätten Sie den sendenden Server so konfiguriert, dass er E-Mails für @ yourdomain.com empfängt. Wenn es in postfix ein sendmail gibt, das dem Transportmechanismus entspricht, leite ich die Mail intern zwischen meinen Servern um.
quelle
Scheint, als würde Ihr Regelsatz 3 die Domaininformationen entfernen. Im Folgenden sind einige allgemeine Schritte zur Fehlerbehebung aufgeführt. Wenn dies nicht funktioniert, müssen Sie mir Ihre sendmail.cf senden, um einen Blick darauf zu werfen.
In der Ausgabe wird example.com als lokale Domain behandelt. mache einen nslookup:
setze q = mx
domain.com
Wenn dies die IP-Adresse des lokalen Computers angibt, müssen Sie Ihre DNS überprüfen. Schauen Sie auch in / etc / hosts nach, um sicherzustellen, dass domain.com nicht aufgeführt ist.
Es scheint auch @ domain.com zu entfernen. Versuchen Sie es bitte mit [email protected], um zu sehen, ob es auch als lokale Domain aufgeführt wird.
Überprüfen Sie auch den Cw-Wert in Ihrer sendmail.cf-Datei.
quelle
Wahrscheinlich nicht das, was Sie wollen, aber SSMTP ist sehr praktisch für einen Server, auf dem nur ausgehende Nachrichten gesendet werden und auf dem Sie einen Mail-Hub angeben können.
quelle
Wenn Sie einen Fehler zurückgeben möchten, wenn die Zustellung an eine lokale Adresse versucht wird, können Sie die Zugangskarte verwenden und so etwas wie:
Wenn Sie möchten, dass die E-Mail-Nachrichten zugestellt, aber weggeworfen werden, können Sie einen virtusertable-Eintrag installieren, der alles "
@your.domain
" als dev-null deklariert . Es kann nützlich sein, mindestens "root
" lokal weiterzuliefern , da dies häufig der Empfänger von E - Mail - Berichten von Cron - Jobs usw. ist. Versuchen Sie Folgendes in Ihremvirtusertable
:Mit einem lokalen
dev-null
Alias, der Nachrichten nach / dev / null umleitet, sollte dies weiterhin Root-E-Mails übermitteln, die an andere Benutzer übermittelten Nachrichten jedoch verwerfen.quelle
Das Update von Pawel funktionierte für mich, aber sendmailconfig existierte nicht auf Centos, so dass ich laufen musste
um die Konfiguration zu aktualisieren
quelle
Nur bestätigt, dass Pawels Antwort mein sehr ähnliches Problem gelöst hat.
Für alle, die FreeBSD verwenden, aber nicht daran interessiert sind, sich zu sehr auf die Plackerei mit Sendmail-Dateien einzulassen, verwenden Sie die folgende Reihenfolge, um die beiden Zeilen in Pawels Beispiel einzufügen:
quelle
Ich folgte diesen Vorschlägen und bemerkte, dass ich nur den Schritt hinzufügte, den Pawel erwähnte.
"/ etc / hosts, das example.com definiert, das der gleichen IP-Adresse wie oben zugewiesen wurde", im Grunde habe ich der
/etc/hosts
Datei meine Server-IP gefolgt von dem Servernamen hinzugefügt , und das war's.War genug für mich, um E-Mails über Google und zurück zu meinen E-Mails weiterzuleiten.
quelle
Wenn Sie Cpanel / WHM zum Verwalten Ihres Servers verwenden, stellen Sie sicher, dass Sie Remote Mail Exchanger in Cpanel / WHM auswählen, anstatt Konfiguration automatisch erkennen. Remote Mail Exchanger sendet alle E-Mails über MX-Datensätze, einschließlich der lokalen Domain. Mit Automatisch werden lokale Domain-E-Mails direkt lokal weitergeleitet und nicht an einen in MX-Einträgen definierten externen Server gesendet.
quelle