Dovecot Mail Server :: Mini How To
Contents
Dovecot
http://wiki.dovecot.org/MainConfig
http://www.linux-mail.info/mbo[..]ail-storage-formats/
Installation
Dovecot 1.0.15
wget -c http://dovecot.org/releases/1.0/dovecot-1.0.15.tar.gz tar zxfv dovecot-1.0.15.tar.gz cd dovecot ./configure --enable-header-install make make install
Θέλοντας να βελτιώσω την απόδοση του dovecot έχω τρέξει το εξής :
#!/bin/bash ./configure \ --with-notify=inotify \ --with-ioloop=epoll \ --with-mem-align=32 \ --disable-ipv6 \ --enable-header-install
Dovecot Sieve Plugin 1.0.3
wget -c http://dovecot.org/releases/sieve/dovecot-sieve-1.0.3.tar.gz tar zxfv dovecot-sieve-1.0.3.tar.gz cd dovecot-sieve-1.0.3 ./configure --with-dovecot=/usr/local/lib/dovecot make make install
Configuration
dovecot.conf
/usr/local/etc/dovecot.conf
# Dovecot configuration file
# ebal 12.03.2008
#Base directory where to store runtime data.
base_dir=/usr/local/var/run/
# protocols = imap pop3
protocols = imap
disable_plaintext_auth = no
# Logging
log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot.info.log
log_timestamp = "%b %d %H:%M:%S "
# SSL settings
ssl_disable = yes
# Login processes
login_user = dovecot
login_greeting = 'Hi buddy, have an account ?'
login_log_format = %$: %s
# Mailbox locations and namespaces
# mail_extra_groups = mail – this is an old conf value
mail_privileged_group = mail
# Mailbox locations and namespaces
mail_location = mbox:/var/mail/folders/%u/:INBOX=/var/mail/%u:INDEX=/var/mail/index/%u
# Doesnt work with dovecot 1.0.x
# mail_location= dbox:/var/mail/folders/%u
# Mail processes
mail_debug = no # mail_debug = yes mail_log_prefix = "%Us(%u): "
verbose_proctitle = yes first_valid_uid = 1000
last_valid_uid = 5000
# Mail Optimaze
max_mail_processes = 512
mailbox_idle_check_interval = 30
# mbox-specific settings
mbox_read_locks = dotlock fcntl
mbox_write_locks = dotlock fcntl
# IMAP specific settings
protocol imap {
listen = *:143
imap_client_workarounds = tb-extra-mailbox-sep
}
# POP3 Specific Settings
protocol pop3 {
listen = *:110
pop3_no_flag_updates = no # unique mail identifier – Outlook 2003
pop3_uidl_format = %08Xu%08Xv
}
# LDA specific settings
protocol lda {
postmaster_address = ebal
hostname = balinux
mail_plugins = cmusieve
log_path = /var/log/dovecot-local-deliver.log
auth_socket_path = /usr/local/var/run/dovecot-auth-master
}
# Authentication processes
auth_verbose = yes auth_debug = yes auth_debug_passwords = yes
# Authentication Cache
auth_cache_size = 10240
auth_cache_ttl = 18000
auth default {
mechanisms = plain
passdb passwd-file {
args = /usr/local/etc/dovecot.passdb
}
userdb passwd-file {
args = /usr/local/etc/dovecot.passdb
}
user = root
# It's possible to export the authentication interface to other programs:
socket listen {
master {
path = /usr/local/var/run/dovecot-auth-master
mode = 0660
user = dovecot
group = mail
}
}
}
# plugin
plugin {
sieve = /var/mail/folders/%u/.dovecot.sieve
}
dovecot.passwd
Σύμφωνα με το παραπάνω configuration file η αυθεντικοποίηση των χρηστών γίνεται μέσα από το αρχείο dovecot.passwd
Όπως υποδηλώνει και το όνομα του αρχείου, η λειτουργικότητά του είναι παρόμοια με το passwd αρχείο ενός linux συστήματος.
Η σύνταξή είναι είναι της παρακάτω μορφής:
username:password:uid:gid:(gecos):home:(shell):extra_fields
/usr/local/etc/dovecot.passdb
ebal:{PLAIN}test:1001:1001:Evaggelos Balaskas
ebal2:{PLAIN}test:1001:1001:Evaggelos BalaskasEncrypted Passwords
Εάν επιθυμούμε να προσθέσουμε μεγαλύτερη ασφάλεια στο παραπάνω αρχείο τότε χρειάζεται
να χρησιμοποιήσουμε την εντολή dovecotpw. Παράδειγμα χρήσης :
$ dovecotpw -p test -s MD5-CRYPT
{MD5-CRYPT}$1$5LH9m/w2$PhkXZLzBzSEQu0pWLwuO./Και έτσι το παραπάνω αρχείο γίνεται ως εξής:
ebal:{MD5-CRYPT}$1$5LH9m/w2$PhkXZLzBzSEQu0pWLwuO./:1001:1001:Evaggelos Balaskas
ebal2:{MD5-CRYPT}$1$5LH9m/w2$PhkXZLzBzSEQu0pWLwuO./:1001:1001:Evaggelos BalaskasAllow Login – Network Security
Μία από τις δυνατότητες του dovecot είναι να μπορεί να επιτρέπει μόνο από συγκεκριμένες IPs ή
από συγκεκριμένα δίκτυα. Με αυτόν τον τρόπο αυξάνεται η ασφάλεια στον mail server από συνδέσεις
μη εγκεκριμμένες ή από την δυνατότητα παράκαμψης μη-ασφαλών συνθηματικών. Η δυνατότητα αυτή
μας δίνεται κάνοντας χρήση ενός extra field στο αρχείο από το οποίο γίνεται η αυθεντικοποίηση των χρηστών.
Το μήνυμα λάθους που εμφανίζει είναι το ίδιο με το να δώσει κανείς λάθος συνθηματικό.
Το extra field ονομάζεται allow_nets και ένα τυπικό παράδειγμα είναι το εξής:
ebal:{MD5-CRYPT}$1$5LH9m/w2$PhkXZLzBzSEQu0pWLwuO./:1001:1001:Evaggelos Balaskas allow_nets=127.0.0.1,10.10.10.0/24
ebal2:{MD5-CRYPT}$1$5LH9m/w2$PhkXZLzBzSEQu0pWLwuO./:1001:1001:Evaggelos Balaskas allow_nets=127.0.0.1,10.10.20.0/24Περισσότερα εδώ
Mailbox Formats
Το παραπάνω conf έχει ορισμένο το mbox mail format.
Για να δημιουργήσεις έναν λογαριασμό με maildir format χωρίς να τροποποιήσεις το dovecot.conf αρχείο
χρειάζεται να προσθέσει κανείς στο dovecot.passwd και ειδικότερα στα extra fields το εξής:
userdb_mail=maildir:~/Maildir
εάν βέβαια έχει λογαριασμούς κάτω από το path /var/mail/ όπως στο παράδειγμά μας τότε
τo παραπάνω dovecot.passwd μπορεί να γίνει ως εξής:
ebal:{MD5-CRYPT}$1$5LH9m/w2$PhkXZLzBzSEQu0pWLwuO./:1001:1001:Evaggelos Balaskas
ebal2:{MD5-CRYPT}$1$5LH9m/w2$PhkXZLzBzSEQu0pWLwuO./:1001:1001:Evaggelos Balaskas:::userdb_mail=maildir:/var/mail/folders/%u:INDEX=/var/mail/index/%u
Checks
Πριν την εκκίνηση του dovecot για να ελέγξουμε ότι η σύνταξη του configuration μας είναι σωστή :
/usr/local/sbin/dovecot -n
Για να εκκινήσουμε τον mail server μας :
/usr/local/sbin/dovecot
Μετά την εκκίνηση:
tail -f /var/log/dovecot*log
pop3
$ telnet localhost pop3 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK Hi buddy, have an account ? user ebal +OK pass test +OK Logged in. ^]
imap
$ telnet localhost imap Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. * OK Hi buddy, have an account ? 1 login ebal test 1 OK Logged in. ^]
$ telnet localhost imap Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. * OK Hi buddy, have an account ? 1 login ebal test 1 OK Logged in. 2 SELECT INBOX * FLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent $Label1 NonJunk $Forwarded $Label3 $Label2 $Label4 $Label5 Junk) * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent $Label1 NonJunk $Forwarded $Label3 $Label2 $Label4 $Label5 Junk \*)] Flags permitted. * 8737 EXISTS * 0 RECENT * OK [UIDVALIDITY 1174418788] UIDs valid * OK [UIDNEXT 112330] Predicted next UID 2 OK [READ-WRITE] Select completed. 2 LIST "" * * LIST (\NoInferiors \UnMarked) "/" "draft" * LIST (\NoInferiors \UnMarked) "/" "Trash" * LIST (\NoInferiors \UnMarked) "/" "INBOX" 2 OK List completed.