premessa: non ho nulla contro Courier. Un prodotto valido e funzionale, semplice da configurare e potente. Ma come tutte le cose, ogni tanto si deve cambiare.
Scenario:
debian 6.x 64 bit stable
tutto rigidamente pacchettizzato, tranne qualche webmail come Roundcube.
courier-imap e pop, courier-authdaemond gestiti attraverso mysql.
mysql come db di backend per gli utenti e le relative configurazioni.
in primis: installiamo dovecot. in condizioni normali dovecot va a sostituire courier, cosa che nel mio caso non era possibile fare. Ho optato per una normalissima macchina virtuale dove fare tutti i test.
Dicevo, installiamo dovecot nei suoi pacchetti:
dovecot-imapd
dovecot-pop3d
all’interno della directory /etc/dovecot troveremo i file su cui andare a mettere le mani.
di seguito elenco le modifiche che ho attivato per i miei servizi:
agilitare i protocolli:
protocols = imap pop3
ovviamente si puo’ inserire imaps e pop3s.
abilitare la registrazione dei log su mail:
syslog_facility = mail
una piccola nota: ho l’abitudine di modificare il file rsyslog.conf in modo da evitare la ripetizione dei messaggi in diversi canali di log (come per esempio, i messaggi di mail li ritrovo oltre in /var/log/mail anche in /var/log/messages e via discorrendo). Modificando l’opzione di dovecot forzo l’inoltro dei suoi messaggi solo su cio’ che riguarda il canale di mail.
disable_plaintext_auth = no
mail_location = mildir:/home/xxxx/Maildir
mail_nfs_storage = yes
mail_nfs_index = yes
queste due opzioni sono necessarie se lo storage viene pescato usando nfs.
queste opzioni richiedono che mmap venga disabilita:
mmap_disable = yes
first_valid_uid = 103 (nel mio caso)
last_valid_uid = 103
verificare che l’id minimo accettato sia almeno quello con cui abbiamo memorizzato la posta
auth default: mechanism = plain login #digest-md5 cram-md5
questo schema e’ collegato alla voce “default_pass_scheme”. Utilizzando MD5 che normalmente e’ il modo in cui vengono memorizzate gli hash delle password, md5-digest e md5-cram non funzionano.
auth default: passdb sql : args = /etc/dovecot/dovecot-sql.conf
auth default: userdb sql: args = /etc/dovecot/dovecot-sql.conf
a questo punto passiamo a dare un’occhiata a dovecot.conf
ci sono due sezioni che vanno prese in considerazione:
la zona relativa al passdb che contiene le password e userdb che contiene la locazione della posta.
intanto:
driver = mysql
connect = host=ilnostroserversql dbname=ilnomedeldb user=lutente password=velodevoanchedire?
default_pass_scheme = MD5
Questa opzioni registra la modalita’ con cui le password sono memorizzate. Di default va bene MD5, ma dipende da cio’ che e’ inserito nel DB. Fare riferimento alla modalita’ di autenticazione che e’ strettamente legata alla modalita’ di storage della password.
a questo punto dobbiamo costruire le query necessarie per accedere all’informazioni che ci necessitano:
password_query = select ...
user_query = select ...
non sto’ a specificare lo schema di accesso, perche’ se avete installato postfix/mysql in precedenza sapete meglio di me come operare. L’importante e’ seguire gli esempi forniti nel file di configurazione. e’ infatti importante, rispetto alla query da noi utilizzata, assegnare i nomi esatti voluti da dovecot.
come al solito, ritorna estremamente utile la lettura dei log. molti piccoli errori si possono analizzare e verificare provando da un client e contemporaneamente tenendo gli occhi sul classico tail -f /var/log/mail.log
autenticazione smtp:
molto probabilmente, con l’installazione di courier e’ stata usata l’autenticazione dell’smtp direttamente sul supporto authdaemond di courier.
le modifiche da fare sono poche:
in /etc/postfix/sasl/smpt.conf, le voci sono:
pwcheck_method: saslauthd
log_level: 10
mech_list: plain login
#cram-md5 digest-md5
saslauthd_path:/var/run/postfix/var/run/saslauthd/mux
in /etc/default/saslauthd un piccolo aggiornamento deve essere previsto:
alla riga OPTIONS: “-c -m /var/run/postfix/var/run/saslauthd” va aggiunta l’opzione -r.
in mancanza di questa opzione, sasl passa solo la parte nome al server imap dimenticando di indicare il dominio causando la mancata autenticazione.