Wo werden Sendmail-E-Mails gespeichert?

9

Ich versuche, ein Autoresponder-Skript für sendmail zu erstellen (nein, ich möchte noch kein vorgefertigtes verwenden), aber ich kann den Speicherort der empfangenen E-Mails auf meinem Server nicht finden. Ich muss angeben, dass meine Konfiguration keine Standardkonfiguration ist.

Ich habe reingeschaut /root, da ist kein Mailordner. (Ich habe keinen anderen Benutzer als root). Ich habe nachgesehen /var/mail/root, es gibt nur einige Protokolle, die mir per E-Mail gesendet werden, aber keine externen E-Mails, die ich von Benutzern erhalte.

Ich habe überprüft /var/log/maillog, aber es gibt keine Fehler.

Ich habe keine Ideen, wo ich suchen soll. Könnte mir jemand helfen?

Eduard Luca
quelle

Antworten:

5

sendmail (ein Mail-Transport-Agent - MTA) speichert E-Mails an dem Ort, an dem sie zum Speichern von E-Mails konfiguriert sind. Ein MTA speichert jedoch nur E-Mails, die sich derzeit in der Warteschlange befinden. Die Zustellung von E-Mails an den Ort, auf den ein Benutzer zugreifen kann, wird vom Mail Delivery Agent (MDA) abgewickelt. Während sendmail (und andere MTAs) als MDA fungieren können, ist dies sehr ungewöhnlich.

Unabhängig davon ist der Versuch, auf die Mail-Dateien zuzugreifen, nicht der richtige Weg, um einen Autoresponder zu implementieren.

Dies sollte als Filter im MTA (dh als Milter) oder im MDA erfolgen. Die milter-API wurde speziell dafür entwickelt - und möglicherweise sind bereits Tools verfügbar, die Ihre Anforderungen ohne Änderungen erfüllen.

Wenn Ihr aktueller MDA procmail ist, haben Sie Glück - dies bietet eine enorme Flexibilität (in der Tat eine eigenständige Programmiersprache) für die Verarbeitung von E-Mail-Nachrichten. Auch hier gibt es im Internet viel Code, der Ihren Anforderungen entspricht (AFAIK, es gibt kein zentrales Repository für Procmail-Rezepte - aber versuchen Sie es mit Google).

Sogar der grundlegende .forward-Mechanismus kann verwendet werden, um dies zu implementieren - aber ich würde davon abraten -, wenn Sie die Procmail-Route entlang gehen, können Sie die Nachricht teilen, damit die Zustellung nicht von Ihrem Skript abhängt / von diesem implementiert wird.

symcbean
quelle
Ich habe procmail installiert (procmail-3.22-17.1.el5.centos.x86_64), bin mir aber nicht sicher, ob es verwendet wird. Ich habe auch über ein Skript für die automatische Antwort gelesen, das procmail verwendet, was für mich nützlich sein könnte. Kann ich sehen, ob procmail verwendet wird?
Eduard Luca
1
Könnten Sie den Inhalt Ihrer sendmail.cfDatei in der Startzeile veröffentlichen Mlocal, in der angegeben wird, welcher MDA verwendet wird?
MadHatter
Ja, es ist procmail. Ja! P=/usr/bin/procmailist der Code. Vielen Dank :)
Eduard Luca
Aber ich habe keine procmailrcDatei. Ich frage mich, ob meine sendmail + procmail wirklich verwendet werden.
Eduard Luca
Wenn es in sendmail konfiguriert ist und Ihre E-Mails zugestellt werden, wird procmail verwendet (mit den in den Standardeinstellungen kompilierten). Informationen zu procmail finden Sie in der Manpage - normalerweise werden chacks für / etc / procmailrc und ~ / .procmailrc verwendet. Wenn keine gefunden werden, wird die Mail zur Kompilierungszeit gemäß der Konfiguration zugestellt.
Symcbean
5

Wenn Sie andere als die Standardverzeichnisse konfiguriert haben, sollten Sie in Ihrer Datei /etc/mail/sendmail.cf nachsehen, auf welche Pfade festgelegt ist.

Dies variiert nicht nur zwischen der Betriebssystemverteilung, sondern auch die Standardverzeichnisse zwischen verschiedenen Versionen von sendmail haben sich geändert. Kurz gesagt, damit wir Ihnen die Standardeinstellungen mitteilen können, müssen wir die Betriebssystemversion UND die sendmail-Version kennen. Die Standardeinstellungen sind / var / spool / mail / $ USERNAME für das Ablegen von E-Mails. Wenn ein Benutzer die E-Mails mit einer anderen Anwendung liest, wird sie normalerweise nach $ HOME / mbox verschoben.

Hier ist eine Liste gängiger Mail-Verzeichnisse:

  • / var / mail / $ USERNAME
  • / var / spool / mail / $ USERNAME
  • $ HOME / mbox
  • $ HOME / Mail
  • $ HOME / Maildir
Paul
quelle
Danke, aber unter welchem ​​Variablennamen soll ich es in der Konfigurationsdatei nachschlagen? Ich habe etwas darüber gelesen, kann es $MAIL = aber nicht in der Konfigurationsdatei finden. Ich habe / var / spool / mail / root überprüft, es sind einige Mails darin, aber nicht die richtigen (und ich bin sicher, dass sie nicht gelesen wurden, da ich eine E-Mail gesendet und die Datei schnell überprüft habe - war nicht da).
Eduard Luca
3

Es hängt davon ab, wie es konfiguriert ist, aber der übliche Ort ist /var/spool/mailoder einige Distributionen /var/mail. Wenn es an keinem dieser Orte ist, lassen Sie es uns wissen und wir werden anfangen zu graben !

MadHatter
quelle
Es sind einige Mails enthalten, /var/spool/mail/rootaber nur die lokalen Mails (von Root zu Root gesendet).
Eduard Luca
Was ist noch drin /var/spool/mail?
MadHatter
Eine Datei mit dem Namen, rpcdie völlig leer ist.
Eduard Luca