ubuntuusers.de

Getmail für ein Catchall-Postfach einrichten

Status: Gelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

gnude

Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Hallo,

um mein Catchall-Postfach-Problem zu lösen habe ich mich entschlossen nun das Programm "getmail" auf dem Server zu installieren.

Ein "apt install getmail4" brachte die Pakete schnell auf meinem PC. Eine einfache getmailrc habe ich im Verzeichnis /etc angelegt und rufen sie wie folgt auf:

getmail --getmaildir /etc

Erhalte dann aber folgende Fehlermeldung:

Delivery error (maildir delivery 2579 error (127, maildir delivery process failed (refuse to deliver mail as root)))
  msg 38/38 (95361 bytes), delivery error (maildir delivery 2579 error (127, maildir delivery process failed (refuse to deliver mail as root)))

Ich habe die Datei auch unter /root/.getmail gespeichert gehabt , mit dem gleichen Ergebnis.

Da es mein Ziel ist die Mails für alle Benutzer gleichezeitig abzuholen und dann zu verteilen macht es ja wenig Sinn sich als Nutzer anzumelden, denn er kann ja nur seine eigenen Mails abrufen. Als Root kann ich aber alle abrufen und dann anhand des Empfängers einsortieren. Oder wie löse ich das Problem?

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

Hallo gnude,

die Meldung deutet darauf hin, dass in deiner getmailrc eine Angabe zum Benutzer fehlt. Dies dürfte eine Schutzfunktion sein, damit sich in Benutzerverzeichnissen nicht Dateien ansammeln, die der Benutzer nicht entfernen/bearbeiten darf.

Ein Beispiel, einer kleinen getmailrc mit Angabe des Benutzerkontos könnte beispielsweise so aussehen:

[retriever]
type = SimpleIMAPSSLRetriever
server = smtp.mailprovider.com
username = ben@utzer.com
password = SomeSeriouslySecurePassword

[destination]
type = Maildir
path = /home/ben/Maildir/
user = ben

Soviel zur Fehlermeldung und meinem Lösungsvorschlag.

Eine weitere Empfehlung: Wenn du tatsächlich mehrere Emailkonten abfragen willst, benötigst du für getmail mehrere rc-Dateien (genau eine je Konto). Wenn du das weiterhin über root und /etc laufen lassen willst, ist meine Empfehlung, in /etc ein Unterverzeichnis getmail anzulegen, um die einzelnen Dateien zu sammeln. Dies hat zusätzlich den Vorteil, das getmail nicht deine gesamte Systemkonfiguration durchpflügen muss, nur um Emailkonten abzufragen - unberücksichtigt der sonstigen Probleme, die da entstehen könnten.

Viele Grüße

Cranvil

gnude

(Themenstarter)
Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Hallo Cranvil

erstmal Danke für die Hilfe.

Meine config Datei sieht im Moment wie folgt aus:

[retriever]
type = MultidropPOP3SSLRetriever
server = serveradresse
username = serveruseranme
password = serverkennwort
envelope_recipient = delivered-to:1

[destination]
type = MultiSorter
default = [nitschke]
locals = (
    ('andre.nitschke@', '[nitschke]'),
    ('nitschke@', '[nitschke]'),
    )

[nitschke]
type = Maildir
path = /home/nitschke/Maildir/
user = nitschke

Mein Ziel ist ja das Catchall Postfach abzurufen und dann Anhand des Empfängers in die Mailkonten zuzustellen. Für jeden Benutzer eine eigene Conf Datei kann da nicht klappen denke ich. Denn Serverseiteig lagert ja alles in einem Postfach und ich hole das in einem Rutsch ab.

Ich denke eher das ich im Nachgang die Mails sortieren muss.

Weiss jemand Rat?

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

Du hast recht, dass es wenig Sinn ergibt, mehrere Konfigurationen für dasselbe Postfach anzulegen. Ich habe mich so auf den Aspekt "Ich will das nicht als root machen" konzentriert, dass ich das Detail übersehen hatte.

Deine gepostete Konfiguration sieht doch soweit schonmal nach einer guten Basis aus, auf der nun die Regeln für die Verteilung in die anderen Benutzerverzeichnisse aufbauen können, ohne dass ein weiteres Programm notwendig ist. Ich mache es mir mal einfach und füge hier ein Beispiel aus der Dokumentation (auch verfügbar unter /usr/share/doc/getmail4/configuration.html auf deinem Server) ein:

# Deliver mail matching jeff@example.net to ~jeff/Maildir/
# Deliver mail matching alice@anything to ~alice/inbox/
# Deliver all other mail to ~bob/Maildir/

[destination]
type = MultiSorter
default = [bob-default]
locals = (
    ('jeff@example.net', '[jeff]'),
    ('alice@', '[alice]')
    )

[jeff]
type = Maildir
path = ~jeff/Maildir/
user = jeff

[alice]
type = Mboxrd
path = ~alice/inbox
user = alice

[bob-default]
type = Maildir
path = ~bob/Maildir/
user = bob

Mit Blick auf dieses Beispiel und deine Konfiguration ist es jetzt also nur noch notwendig, die richtigen Filterkriterien für die locals-Direktive zu verwenden und dann jeweils eine neue Sektion anzulegen - und natürlich auch die passende Datei-/Verzeichnisstruktur am Zielort.

In der Dokumentation findest du auch einen kurzen Überblick zu den regulären Ausdrücken (regular expressions, RE), die getmail für die Zuordnung verwendet. Hier am besten nochmal in Dokumentation und Konfiguration reinschauen, dass die Muster wirklich passen. Anhand deiner Konfiguration würde ich davon ausgehen (mir fehlen hier die praktischen Erfahrungen), dass er eine Email an andre.nitschke@ zweimal verteilt: Einmal wegen des zutreffenden andre.nitschke@ und zum zweiten Mal wegen des ebenso passenden nitschke@.

Bevor ich jetzt ein RE-Tutorial zusammenschreibe oder eines verlinke, schlage ich vor, dass du dir die Dokumentation ansiehst und bei Fragen nochmal meldest.

Viele Grüße

Cranvil

Antworten |