Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

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

29 views
Skip to first unread message

Sebastian Suchanek

unread,
Apr 20, 2021, 1:40:03 AM4/20/21
to
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.

Sebastian Suchanek

unread,
Apr 20, 2021, 8:50:02 AM4/20/21
to

Am 20.04.2021 um 07:34 schrieb Sebastian Suchanek:

Hallo Liste!

> [...]
> Lange Rede, kurzer Sinn: wie kriege ich Exim wieder dazu, gegen
> courier-authdaemon zu authentifiziern?
> [...]

Tja, irgendwo zwischen "komisch" und "peinlich": Gerade habe ich es noch
'mal versucht, mit dem Ergebnis, dass der Mailversand jetzt
funktioniert. Während der Fehlersuche heute Morgen habe ich das
SMTP-Passwort bestimmt fünf Mal, wenn nicht noch öfter neu in meinen MUA
eingegeben und dabei natürlich auf Dinger wie Caps-Lock geachtet. Sollte
ich es wirklich geschafft haben, so oft mein Passwort falsch einzugeben?


Tschüs,

Sebastian

Andreas Metzler

unread,
Apr 20, 2021, 1:40:03 PM4/20/21
to
On 2021-04-20 Sebastian Suchanek <Sebastian...@gmx.de> wrote:
> 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
> |
[...]

Hallo,

Das client_send ist da ein Fremdkörper, du konfigurierst ja hier
serverseitig.

lg Andreas

--
`What a good friend you are to him, Dr. Maturin. His other friends are
so grateful to you.'
`I sew his ears on from time to time, sure'

Sebastian Suchanek

unread,
Apr 20, 2021, 2:00:02 PM4/20/21
to
Am 20.04.2021 um 19:30 schrieb Andreas Metzler:
> On 2021-04-20 Sebastian Suchanek <Sebastian...@gmx.de> wrote:
>> 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
>> |
> [...]
>
> Das client_send ist da ein Fremdkörper, du konfigurierst ja hier
> serverseitig.

Nö, das passt schon. Das ist mein Heimserver und der macht für
ausgehende Mails Relaying. Dafür muss er sich halt bei z.B. bei GMX mit
den passenden Credentials anmelden.


Tschüs,

Sebastian

Andreas Metzler

unread,
Apr 21, 2021, 11:40:03 AM4/21/21
to
/Ich/ würde für bessere Lesbarkeit Server/Client auf zwei separate
Blöcke aufteilen.

cu Andreas
0 new messages