[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Stretch: Update von courier-authdaemon zerschießt Exim-Konfiguration



Hallo Liste!

Kürzlich gab es in Stretch ein Update des Paketes "courier-authdaemon", dessen Installation mir leider meine Exim-Konfiguration (in der ich User gegen courier-authdaemon authentifiziere) zerschossen hat. Doch der Reihe nach:

Nach dem Update hatte ich zunächst Fehlereinträge der folgenden Art im Exim Logfile:

| 2021-04-20 06:42:39 plain authenticator failed for xxx ([yyy]) [zzz]: 435 Unable to authenticate at present (set_id=sebastian): failed to connect to socket /var/run/courier/authdaemon/socket: Permission denied

("xxx", "yyy" und "zzz" sind jeweils anonymisierte Hostnamen und IP-Adressen.)

Tatsächlich - der Socket hat zwar noch "globale" Zugriffsrechte...

| # ls -la /var/run/courier/authdaemon/socket
| srwxrwxrwx 1 root root 0 Apr 20 06:42 /var/run/courier/authdaemon/socket
| #

...das Verzeichnis obendrüber jedoch nicht (mehr):

| # ls -la /var/run/courier/
| total 8
| drwxrwxr-x  3 root    courier  140 Apr 20 06:42 .
| drwxr-xr-x 41 root    root    1480 Apr 20 06:36 ..
| drwxr-x---  2 courier courier  100 Apr 20 06:42 authdaemon
| -rw-r--r--  1 root    root       6 Apr 20 06:42 imapd.pid
| -rw-------  1 root    root       0 Mar 15  2020 imapd.pid.lock
| -rw-r--r--  1 root    root       6 Apr 20 06:42 imapd-ssl.pid
| -rw-------  1 root    root       0 Mar 15  2020 imapd-ssl.pid.lock
| #

Das habe ich zunächst einmal hemdsärmelig so gelöst, dass ich den Debian-User mit in die courier-Gruppe gepackt habe:

| # adduser Debian-exim courier

(Falls es dafür bessere Lösungen geben sollte: gerne her damit.)
Mitglied der "daemon"-Gruppe, wie man in älteren WWW-Fundstücken als Lösungsvorschlag findet, war Debian-exim schon vorher.

Das hat das Exim-Problem jedoch nur verlagert, nicht gelöst. Die Fehlermeldungen im Exim-Logfile lauten jetzt:

| 2021-04-20 06:57:41 plain authenticator failed for xxx ([yyy]) [zzz]: 535 Incorrect authentication data (set_id=sebastian)
| 2021-04-20 06:57:44 login authenticator failed for xxx ([yyy]) [zzz]: 535 Incorrect authentication data (set_id=sebastian)

authtest sagt jedoch, dass alles in bester Ordnung wäre und auch das Abrufen von Mail via courier-imap-ssal vom selben Server, der sich natürlich auch gegen denselben courier-authdaemon authentifiziert, klappt problemlos:

| # authtest sebastian §PASSWORT
| Authentication succeeded.
| 
|      Authenticated: sebastian  (system username: sebastian)
|     Home Directory: /home/sebastian
|            Maildir: (none)
|              Quota: (none)
| Encrypted Password: $HASH
| Cleartext Password: $PASSWORT
|           Options: (none)
| #

(Statt "$PASSWORT" und "$HASH" stehen im Original natürlich das richtige Passwort und ein echter Hash.)
In /var/log/auth.log steht dazu auch nur:

| Apr 20 06:57:39 tigersclaw authdaemond: pam_unix(exim:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=  user=sebastian
| Apr 20 06:57:41 tigersclaw authdaemond: pam_unix(exim:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=  user=sebastian

Und hier noch der Auszug der Authenticators aus meiner Exim-Config:

| [...]
| plain:
|   driver = plaintext
|   public_name = PLAIN
|   client_send = "^${extract{2}{::}{${lookup{$sender_address}lsearch*{CONFDIR/sender.smarthost.passwd}{$value}fail}}}\
|                  ^${extract{3}{::}{${lookup{$sender_address}lsearch*{CONFDIR/sender.smarthost.passwd}{$value}fail}}}"
|   server_condition = \
|                 ${if eq {${readsocket{/var/run/courier/authdaemon/socket}\
|                 {AUTH ${strlen:exim\nlogin\n$2\n$3\n}\nexim\nlogin\n$2\n$3\n}}}{FAIL\n}{no}{yes}}
|   server_set_id = $2
| 
| login:
|   driver = plaintext
|   public_name = LOGIN
|   client_send = ": ${extract{2}{::}{${lookup{$sender_address}lsearch*{CONFDIR/sender.smarthost.passwd}{$value}fail}}} \
|                  : ${extract{3}{::}{${lookup{$sender_address}lsearch*{CONFDIR/sender.smarthost.passwd}{$value}fail}}}"
|   server_prompts = Username:: : Password::
|   server_condition = ${if eq {${readsocket{/var/run/courier/authdaemon/socket} \
|                 {AUTH ${strlen:exim\nlogin\n$1\n$2\n}\nexim\nlogin\n$1\n$2\n}}}{FAIL\n}{no}{yes}}
|   server_set_id = $1
|   server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
| [...]

Wie gesagt: bis vor dem Update des courier-authdaemon-Paketes hat das Setup einwandfrei funktioniert, aber jetzt gehen mir gerade die Ideen aus, wo man noch suchen bzw. schrauben könnte. Exim und courier-authdaemon habe ich inzwischen auch schon jeweils mehrfach neu gestartet.
Lange Rede, kurzer Sinn: wie kriege ich Exim wieder dazu, gegen courier-authdaemon zu authentifiziern?


Tschüs,

Sebastian

PS: Sorry, falls diese Mail irgendwie komisch aussehen sollte. Wegen des nicht funktionierden E-Mail-Setups musste ich sie über das Webinterface von GMX schreiben.


Reply to: