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 Balaskas
Encrypted 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 Balaskas
Allow 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.