Here's what worked for me (Exim 4.4x), and I am presuming that the SSL certificate
(selfsigned or whatnot) and server key have already been configured (man ssl ):
In the main configuration section (before the ACL configuration) add the following lines (this essentially tells client connections that TLS is available on port 465/tcp, and only advertise SMTP AUTH if TLS is in use):
daemon_smtp_ports = 25:465
tls_advertise_hosts = *
tls_on_connect_ports = 465
auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}
tls_certificate = /etc/ssl/exim/server.crt
tls_privatekey = /etc/ssl/exim/server.key
In the AUTHENTICATION section, add the following lines (after begin authenticators ), which ensures that plaintext authentication is only available if the session is TLS encrypted):
plain:
driver = plaintext
public_name = PLAIN
server_prompts = :
server_advertise_condition = ${if eq{$tls_cipher}{}{no}{yes}}
server_condition = "${if crypteq{$3}{${lookup{$2}lsearch{/etc/exim/passwd}{$value}{*:*}}}{1}{0}}"
server_set_id = $2
login:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_advertise_condition = ${if eq{$tls_cipher}{}{no}{yes}}
server_condition = "${if crypteq{$2}{${lookup{$1}lsearch{/etc/exim/passwd}{$value}{*:*}}}{1}{0}}"
server_set_id = $1
All that needs to be done now is to create a file (readable by the user running the Exim process) called
/etc/exim/passwd where you define your users, one for each line, so:)
james:deGH9Aq./kiSY
herano:adEH3hzOImZMU
edwards:beQt16RvvaWjg
grimby:ef0l1ZTpQcicc
amberh:oLdJU4GpA
spell:fevtvWtZbJ31w
In OpenBSD, there is a handy command called 'encrypt ' which generates crypt hashes, but
'htpasswd ' from the Apache distribution should also do the trick.
(Needless to say, Exim needs to be configured for SMTP AUTH and SSL/TLS!)
|