Hi all.
I've had a REALLY troublesome time setting up smtp auth. I have cyrus
imap, with saslauthd, on the same host as exim. All appeared to be
working individually -- but the problem was trying to get them to work
together.
The problem was with the authenticator (and me not knowing what I was doing)
> cat exim.conf
begin authenticators
sasl_plain:
driver = plaintext
public_name = PLAIN
server_set_id = $auth1
server_condition = ${if
saslauthd{{${local_part:$auth1}}{$auth2}{}{${domain:$auth1}}}{1}{0}}
#server_mech = SASLDB
Some of you will, no doubt, immediately spot the error. It has taken
me days to sort it!
Questions:
- I tried both driver = cyrus_sasl and driver=plaintext.
I am unsure of the specific differences, pro's and con's of each.
Can anyone explain?
- My exim.conf fike includes the acl below. Whilst I get the log line,
I am not getting the variable values.
Is what I am attempting possible? If so, what variables can I log?
Having this function working would have revealed my problem from the
start! :-)
> cat acl.conf
acl_auth:
warn
log_message = X-Log: ACL_AUTH -- $auth1 ${local_part:$auth1}
{$auth2} {} {${domain:$auth1}}
Whilst NOT the solution, I finally discovered the problem by turn my
server into an open relay, using the line (note: no quotes!)
- saslauthd takes 4 parameters: {<user>}{<password>}{<service>}{<realm>}
server_condition = ${if saslauthd{ {whitepj} {password} {} {} } {1} {0} }
Many thanks.
---
all what follows is part of my installation test process. I've left it
in because I find that while the search engines often produce results
that help configurations in part, many times the posts don't actually
explain how to help identify the problem if something doesn't work as
expected.
---
saslauthd working (the first is my basic test, the second is my
desired goal -- hence the server_condition within the exim
authenticator):
> saslauthd -a sasldb -V -n 0
> testsaslauthd -u whitepj -p password
0: OK "Success."
> testsaslauthd -u whitepj -r mydomain.co.uk -p password
0: OK "Success."
> tail /var/log/auth.log
Apr 16 11:42:07 server saslauthd[470]: : forked child: 9621
Apr 16 11:42:07 server saslauthd[9621]: : auth
success: [user=whitepj] [service=imap] [realm=] [mech=sasldb]
Apr 16 11:42:07 server saslauthd[9621]: : response: OK
Apr 16 11:42:07 server saslauthd[9621]: : child exited: 9621
Apr 16 11:42:07 server saslauthd[470]: : child exited: 9621
exim router and transport working (port 25 test here for simplicity,
but also works on 465 and 587)
> swaks --server 192.168.123.254:25 --to [email protected]
250 OK id=1u50il-000000002KZ-3x1b
cyrus imap login working. I can login via IMAP client and read messages.
However, I cannot send messages via smtp when using AUTH:
> swaks --server 192.168.123.254:465 --tls-on-connect --to
> [email protected] \
> --auth-user whitepj --auth-password password --auth PLAIN
535 Incorrect authentication data
No authentication type succeeded
> tail /var/log/exim_reject.log
2025-04-16 11:31:58.804 [9100] sasl_plain authenticator (PLAIN): Cyrus
SASL permanent failure: generic failure
2025-04-16 11:31:58.805 [9100] sasl_plain authenticator failed for
(server) [192.168.123.253]:36386 I=[192.168.123.254]:465 Ci=9100: 535
Incorrect authentication data (set_id=whitepj)
Because I'm testing exim with the -d flag set, I get this information:
9100 SMTP<< AUTH PLAIN AHdoaXRlcGoAQmlhbmNvMms=
9100 using ACL "acl_auth"
9100 processing "warn" (/etc/exim/ACL/acl_smtp_auth 15)
9100 l_message: X-Log: ACL - Running acl_auth.
9100 warn: condition test succeeded in ACL "acl_auth"
9100 LOG: MAIN
9100 H=(server) [192.168.123.253]:36386 I=[192.168.123.254]:465
Ci=9100 Warning: X-Log: ACL - Running acl_auth.
9100 processing "accept" (/etc/exim/ACL/acl_smtp_auth 20)
9100 check hosts = 192.168.123.0/16
9100 host in "192.168.123.0/16"?
9100 list element: 192.168.123.0/16
9100 host in "192.168.123.0/16"? yes (matched "192.168.123.0/16")
9100 accept: condition test succeeded in ACL "acl_auth"
9100 end of ACL "acl_auth": ACCEPT
9100 Initialised Cyrus SASL server connection; service="smtp"
fqdn="domain.co.uk" realm="NULL"
9100 Cyrus SASL set EXTERNAL SSF to 256
9100 Cyrus SASL set local hostport to: 192.168.123.254;465
9100 Cyrus SASL set peer hostport to: 192.168.123.253;36386
9100 Calling sasl_server_start(PLAIN,"AHdoaXRlcGoAQmlhbmNvMms=")
9100 Cyrus SASL permanent failure -1 (generic failure)
9100 LOG: REJECT
9100 sasl_plain authenticator (PLAIN): Cyrus SASL permanent
failure: generic failure
9100 SMTP>> 535 Incorrect authentication data
Nothing is written to /var/log/auth.log on this attempt. I do NOT get
an 'auth failure' message.
My exim.conf file is split into multiple (separate) sections --
"chained" together with .include directives -- so the following
snippets are all part of the exim configuration. The X-Log entries are
useful when I want to see values of any exim variables Suggestions
welcome!
> cat acl.conf
acl_auth:
warn
log_message = X-Log: ACL_AUTH.
accept
acl_mailauth:
warn
log_message = X-Log: ACL_MAILAUTH.
accept
--
## subscription configuration (requires account):
## https://lists.exim.org/mailman3/postorius/lists/exim-users.lists.exim.org/
## unsubscribe (doesn't require an account):
## [email protected]
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/