ubuntuusers.de

fetchmail und Dovecot MDA

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

malte_si

Anmeldungsdatum:
19. Oktober 2018

Beiträge: 17

Hallo!

Ich möchte für meine Familie einen kleinen Mailserver aufsetzen. Er soll die Post bei den Mailboxen einsammeln und via IMAP im Heimnetzwerk zur Verfügung stellen. Ebenso soll er als Server für die ausgehende Post dienen. Als Software habe ich Dovecot, Postfix und Fetchmail installiert.

Was ich schon hinbekommen habe:

  • Clients können sich über SSL mit Dovecot verbinden und Mail bearbeiten.

  • Postfix akzeptiert SSL-SMTP-Verbindungen, authentifiziert die Nutzer gegen Dovecot und verschickt ausgehende Email.

Momentan scheitere ich jedoch am Abholen der Email mit fetchmail. Ich habe fetchmail so eingerichtet, dass er zum lokalen Verteilen der Mail direkt den Dovecot MDA verwendet. Das möchte ich auch gerne so beibehalten, weil ich die zusätzliche Komplexität mit Postfix vermeiden möchte. Der fetchmail-Daemon wacht regelmäßig auf, kann sich wohl auch mit dem Mail-Server beim Provider verbinden, meldet dann aber einen Fehler. Leider finde ich die Fehlermeldung nicht sehr aussagekräftig... Ich habe fast die Vermutung, dass der Dovecot-MDA gar nicht aufgerufen wird...

Syslog sagt:

1
2
3
4
5
Oct 14 12:56:17 heimdall fetchmail[12603]: 6 Nachrichten für XXXXX bei pop3.web.de (797797 Bytes).
Oct 14 12:56:17 heimdall fetchmail[12603]: Nachricht XXXXX@pop3.web.de:1 von 6 wird gelesen (49614 Bytes) (Log-Meldung unvollständig)
Oct 14 12:56:17 heimdall fetchmail[12603]: Fehler beim Schreiben des Nachrichtentextes
Oct 14 12:56:17 heimdall fetchmail[12603]: MDA-Fehler beim Abholen von XXXXX@pop3.web.de
Oct 14 12:56:17 heimdall fetchmail[12603]: Abfragestatus=6 (IOERR)

/etc/fetchmailrc:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
set daemon      300
set syslog
set bouncemail
set no spambounce
defaults:
  antispam -1 
  batchlimit 100
  mda "/usr/lib/dovecot/dovecot-lda -d %T"

poll pop3.web.de with protocol pop3
  user 'XXXXX' there with password 'GEHEIM' is 'XXXXX@web.de' here options ssl

(Der Account ist in Dovecot als "XXXXX@web.de" eingerichtet. Beim Anmelden an Dovecot (z.B. mit Thunderbird) und beim Senden von Mail funktioniert das auch problemlos.)

/etc/dovecot/conf.d/10-master.conf:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
...
service auth {
  unix_listener auth-userdb {
    mode = 0660
    user = fetchmail # User running dovecot-lda (fetchmail)
    group = mail
  }
  ...
}
...

Wie kann ich

  • herausfinden, ob dovecot-lda tatsächlich aufgerufen wird?

  • aussagekräftigere Fehlermeldungen erhalten, was genau schiefgeht (z.B. ob Rechte fehlen, etc.)?

Vielen Dank für Eure Hilfe!

Gruß, Malte

TomLu

Anmeldungsdatum:
23. August 2014

Beiträge: 603

1
Oct 14 12:56:17 heimdall fetchmail: Fehler beim Schreiben des Nachrichtentextes

und

1
user = fetchmail # User running dovecot-lda (fetchmail)

Hat der User 'fetchmail' Schreibrechte auf das Dovecot-Postfach?

malte_si

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2018

Beiträge: 17

Sollte es tatsächlich so einfach sein...

Ich wollte gerade aus tiefster Überzeugung "Ja" schreiben, weil der Nutzer 'fetchmail' in der Gruppe 'mail' ist, genauso wie der Nutzer 'virtmail', den ich für die virtuellen Mailboxen in Dovecot angelegt habe.

Allerdings hat die Inbox die Rechte

1
drwx--S---  5 virtmail mail 4096 Jul  8  2017 XXXXX@web.de

Was ist jetzt besser?

  • Verzeichnisrechte ändern (wäre dann 770, oder)?

  • fetchmail statt als Nutzer 'fetchmail' als Nutzer 'virtmail' laufen lassen? Wo kann ich das festlegen?

Danke für die Hilfe!

TomLu

Anmeldungsdatum:
23. August 2014

Beiträge: 603

malte_si schrieb:

  • Verzeichnisrechte ändern (wäre dann 770, oder)?

Würde ich so machen... und ich hätte keine Zweifel an der Ordnungsmäßigkeit.

malte_si

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2018

Beiträge: 17

Hmm... das war's leider nicht.

Habe jetzt der Gruppe 'mail' Schreibrechte auf die inbox und alle Unterverzeichnisse gegeben:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ls -la /var/inbox/XXXXX\@web.de/

drwxrws--- 5 virtmail mail 4096 Jul  8  2017 .
drwxrwsr-x 3 root     mail 4096 Jul  8  2017 ..
drwxrws--- 2 virtmail mail 4096 Jul  8  2017 cur
-rw-rw---- 1 virtmail mail  348 Jul  8  2017 dovecot.index.log
-rw-rw---- 1 virtmail mail   51 Jul  8  2017 dovecot-uidlist
-rw-rw---- 1 virtmail mail    0 Jul  8  2017 maildirfolder
drwxrws--- 2 virtmail mail 4096 Jul  8  2017 new
drwxrws--- 2 virtmail mail 4096 Aug  5 18:01 tmp

Leider immer noch die gleiche Meldung im Syslog:

1
2
3
4
5
Oct 21 18:05:44 heimdall fetchmail[23865]: 8 Nachrichten für XXXXX bei pop3.web.de (1025368 Bytes).
Oct 21 18:05:44 heimdall fetchmail[23865]: Nachricht XXXXX@pop3.web.de:1 von 8 wird gelesen (49614 Bytes) (Log-Meldung unvollständig)
Oct 21 18:05:44 heimdall fetchmail[23865]: Fehler beim Schreiben des Nachrichtentextes
Oct 21 18:05:44 heimdall fetchmail[23865]: MDA-Fehler beim Abholen von XXXXX@pop3.web.de
Oct 21 18:05:44 heimdall fetchmail[23865]: Abfragestatus=6 (IOERR)

Was könnte ich noch versuchen?

Danke für Eure Hilfe!

TomLu

Anmeldungsdatum:
23. August 2014

Beiträge: 603

Ich würde jetzt zur Bestätigung noch mal folgendes testen:

  1. Terminal öffnen

  2. su fetchmail (den User wechseln)

  3. cd {/beliebiges new-User-Postfach}

  4. echo xx >yyyy (Versuch eine Datei resp. Mail anzulegen)

Wenn das klappt, liegt der Fehler tatsächlich woanders.... aber ich würde das erst wirklich bestätigen.

5. bei Erfolg die Datei wieder löschen.

malte_si

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2018

Beiträge: 17

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
YYYY@heimdall:~$ sudo su --preserve-environment fetchmail
fetchmail@heimdall:~$ cd /var/inbox/XXXXX@web.de/
fetchmail@heimdall:/var/inbox/XXXXX@web.de$ echo test >test
fetchmail@heimdall:/var/inbox/XXXXX@web.de$ ls -la
insgesamt 32
drwxrws--- 5 virtmail  mail 4096 Okt 21 23:30 .
drwxrwsr-x 3 root      mail 4096 Jul  8  2017 ..
drwxrws--- 2 virtmail  mail 4096 Jul  8  2017 cur
-rw-rw---- 1 virtmail  mail  348 Jul  8  2017 dovecot.index.log
-rw-rw---- 1 virtmail  mail   51 Jul  8  2017 dovecot-uidlist
-rw-rw---- 1 virtmail  mail    0 Jul  8  2017 maildirfolder
drwxrws--- 2 virtmail  mail 4096 Jul  8  2017 new
-rw-r--r-- 1 fetchmail mail    5 Okt 21 23:30 test
drwxrws--- 2 virtmail  mail 4096 Aug  5 18:01 tmp
fetchmail@heimdall:/var/inbox/XXXXX@web.de$ rm test
fetchmail@heimdall:/var/inbox/XXXXX@web.de$ echo test >new/test
fetchmail@heimdall:/var/inbox/XXXXX@web.de$ ls -la new
insgesamt 12
drwxrws--- 2 virtmail  mail 4096 Okt 21 23:31 .
drwxrws--- 5 virtmail  mail 4096 Okt 21 23:30 ..
-rw-r--r-- 1 fetchmail mail    5 Okt 21 23:31 test
fetchmail@heimdall:/var/inbox/XXXXX@web.de$ rm new/test
fetchmail@heimdall:/var/inbox/XXXXX@web.de$ 

Klappt problemlos...

Danke für Deine unermüdliche Hilfe!

TomLu

Anmeldungsdatum:
23. August 2014

Beiträge: 603

Dann tuts mir leid... ich muss passen... 😕 ... jetzt bringts noch nicht mal was, wenn ich Dir einen Link auf die Doku meiner Lösung senden würde... weil... ich habe die gleiche Anforderung mit Dovecot, Postfix, Getmail und Sieve gelöst. Aber getmail ist ja nicht fetchmail.

malte_si

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2018

Beiträge: 17

Vielleicht hilft's ja doch weiter. Ich denke ja immer noch, dass ich nur irgendeine Kleinigkeit übersehe.

Ich wüsste vor allem gerne, wie ich fetchmail und dovecot-lda dazu überreden kann, etwas gesprächiger zu sein. Für den systemweiten fetchmail-Daemon habe ich irgendwie keinen Parameter gefunden (nur für das interaktive fetchmail) und die Änderungen an den Logging-Einstellungen für dovecot-lda nach Anleitung in der Doku haben irgendwie gar nichts bewirkt; aber vielleicht habe ich da auch nur etwas falsch gemacht.

Hast Du vielleicht eine Idee, wie ich herausfinden kann, ob dovecot-lda überhaupt aufgerufen wird? Dann wüsste ich schon einmal, ob es an fetchmail oder an dovecot-lda liegt.

Auf jeden Fall schon einmal Danke für Deine Hilfe.

TomLu

Anmeldungsdatum:
23. August 2014

Beiträge: 603

malte_si schrieb:

Vielleicht hilft's ja doch weiter. Ich denke ja immer noch, dass ich nur irgendeine Kleinigkeit übersehe.

Ja vermutlich... vielleicht hilfts, wenn Du die dovecot.confs mal vergleichst... http://www.thlu.de/Public/TomsMailserver.pdf

Ich wüsste vor allem gerne, wie ich fetchmail und dovecot-lda dazu überreden kann, etwas gesprächiger zu sein.

Hast Du vielleicht eine Idee, wie ich herausfinden kann, ob dovecot-lda überhaupt aufgerufen wird?

Eigentlich ist das kein Problem... bei mir wird das alles geloggt und das Journal enthält haufenweise Einträge:

journalctl -b | grep dovecot | egrep "lmtp|lda"

Dann wüsste ich schon einmal, ob es an fetchmail oder an dovecot-lda liegt.

Ich habe eher die Befürchtung, dass das ein grundsätzlich falscher Ansatz ist. Der Dovecot-LDA ist ja ein Delivery-Agent, der eine Mail von einem MTA (Transport-Agent (Postfix)) annimmt. Das Wiki https://wiki.dovecot.org/LDA sagt:

This page describes the common settings required to make LDA work. You should read it first, and then the MTA specific pages: LDA/Postfix

LDA/Exim

LDA/Sendmail

LDA/Qmail

LDA/ZMailer

Da steht nix davon, dass man einen MRA (Retrival-Agent (fetchmail)) als MTA konfigurieren kann. Vergleich mal mit meiner Konfiguration. Vielleicht ist das eine Alternative... und Du hast den Vorteil, Sieve-Scripte nutzen zu können.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Das naheliegende wäre doch: Werde zu dem Nutzer und führe das definierte Kommando mal händisch aus:

$ su - fetchmail
$ cat <<EOF | /usr/lib/dovecot/dovecot-lda -d "deine@mailadresse.de"
> From: <test@example.org>
> To: <deine@emailadresse.de>
> Date: $(date -R)
> Subject: Testmail
>
> Das ist eine Testmail.
> Foo.
> Bar.
> EOF
$ echo $?

malte_si

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2018

Beiträge: 17

misterunknown schrieb:

Das naheliegende wäre doch: Werde zu dem Nutzer und führe das definierte Kommando mal händisch aus:

Vielen Dank, das hat mich jetzt schon einmal einen Schritt weiter gebracht:

1
2
lda(XXXXX@web.de,)Error: Error reading configuration: Invalid settings: postmaster_address setting not given
lda: Fatal: Internal error occurred. Refer to server log for more information.

Nachdem ich den Eintrag postmaster_address in /etc/dovecot/conf.d/15-lda.conf ergänzt habe ist die Fehlermeldung weg. Die Test-Mail aber auch... zumindest ist sie nicht in der Inbox von XXXXX@web.de angekommen...

Ich forsche weiter.

@TomLu: Deine Konfig schaue ich mir noch an. Heute war leider zu wenig Zeit.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

malte_si schrieb:

Nachdem ich den Eintrag postmaster_address in /etc/dovecot/conf.d/15-lda.conf ergänzt habe ist die Fehlermeldung weg. Die Test-Mail aber auch... zumindest ist sie nicht in der Inbox von XXXXX@web.de angekommen...

Wie sieht denn in Dovecot die userdb-Konfiguration aus?

doveconf -n userdb

malte_si

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2018

Beiträge: 17

misterunknown schrieb:

Wie sieht denn in Dovecot die userdb-Konfiguration aus?

1
2
3
4
5
YYYY@heimdall:~$ doveconf -n userdb
userdb {
  args = username_format=%u /etc/dovecot/users
  driver = passwd-file
}

/etc/dovecot/users:

1
2
# user:passwort:UserID:GroupID::homeDir
XXXXX@web.de:{CRAM-MD5}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:998:8::/home/virtmail/XXXXX@web.de

UID 998 ist Nutzer 'virtmail', GID 8 ist Gruppe 'mail'.

malte_si

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2018

Beiträge: 17

So, ich glaube ich habe das Problem jetzt gelöst! ☺

Nachdem der dovecot-lda jetzt auch eine Log-Datei schreibt (offenbar hat er das vorher nicht getan, da er keine gültige Konfiguration erkannt hat) habe ich beim händischen Versuch, Mail als Nutzer "fetchmail" zuzustellen (s. oben) die Meldung bekommen

Oct 25 22:10:24 lda(XXXXX@web.de): Fatal: setuid(998(virtmail) from userdb lookup) failed with euid=118(fetchmail): Operation not permitted (This binary should probably be called with process user set to 998(virtmail) instead of 118(fetchmail))

Und da er freundlicherweise die Lösung gleich mitliefert, habe ich anschließend das Ganze als Nutzer "virtmail" versucht und ... voilà, es klappt!

Also habe ich den fetchmail-Daemon als Nutzer "virtmail" gestartet. Dazu musste ich /etc/init.d/fetchmail ändern:

...
USER=virtmail
...

Und die Dateirechte unter /var/run anpassen, damit eine .pid-Datei geschrieben werden kann:

sudo chown virtmail /var/run/fetchmail

Jetzt noch die Frage an die Experten: Habe ich etwas übersehen, dass ich das so nicht hätte machen sollen?

Schonmal vielen Dank an misterunknown und TomLu; ohne Euch wäre ich wohl so schnell nicht auf die richtige Idee gekommen! Und TomLus Dokumentation ist ja echt super. Die werde ich noch einmal in aller Ruhe durchlesen; da finden sich bestimmt noch massig gute Ideen, die ich übernehmen kann!

Antworten |