MDA Dovecot на сервере FreeBSD с хранением пользователей в MySQL

Допустим, что у нас есть настроенный почтовый сервер. К примеру по вот этой инструкции 🙂 . То есть почта ходит и хранится в каталогах пользователей. Теперь для того что бы пользователю её забирать, нам понадобится какой нибудь MDA (Mail Delivery Agent). Я буду использовать Dovecot. Установка стандартная, из портов:

# cd /usr/ports/mail/dovecot && make install clean && rehash

Выбираем следующие опции при конфигурации. Тут главное не забыть MySQL:

[ ] BDB          Berkeley DB support
[ ] DOCS         Build and/or install documentation
[ ] GSSAPI       GSSAPI Security API support
[x] KQUEUE       kqueue(2) support
[ ] LDAP         LDAP protocol support
[x] MANAGESIEVE  ManageSieve support
[x] MYSQL        MySQL database support
[ ] PGSQL        PostgreSQL database support
[ ] SQLITE       SQLite database support
[x] SSL          SSL protocol support
[ ] VPOPMAIL     VPopMail support

После установки приводим конфигурационный файл к следующему виду:

# cat /usr/local/etc/dovecot.conf
base_dir = /var/run/dovecot/
protocols = imap pop3 imaps pop3s
listen = 144.76.170.161
disable_plaintext_auth = no
shutdown_clients = yes
log_path = /var/log/dovecot.log
log_timestamp = "%b %d %H:%M:%S "
ssl_listen = mail.it-studio.pro
ssl_cert_file = /etc/ssl/certs/mail.pem
ssl_key_file = /etc/ssl/certs/mail.pem
login_dir = /var/run/dovecot/login
login_chroot = yes
login_user = dovecot
login_process_per_connection = yes
login_processes_count = 3
login_max_processes_count = 128
login_greeting = Dovecot ready.
login_log_format_elements = user=< %u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s
mail_location = maildir:/var/exim/%Ld/%Ln
mail_uid = mailnull
mail_gid = mail
mail_privileged_group = mail
verbose_proctitle = yes
first_valid_uid = 25
first_valid_gid = 5

protocol imap {
login_executable = /usr/local/libexec/dovecot/imap-login
mail_executable = /usr/local/libexec/dovecot/imap
mail_plugins = quota imap_quota
imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep
}

protocol pop3 {

login_executable = /usr/local/libexec/dovecot/pop3-login
mail_executable = /usr/local/libexec/dovecot/pop3
pop3_uidl_format = %08Xu%08Xv
mail_plugins = quota
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}

protocol lda {
postmaster_address = postmaster@it-studio.pro
hostname = mail.it-studio.pro
deliver_log_format = msgid=%m %f: %$
sendmail_path = /usr/sbin/sendmail
}

auth_verbose = yes
auth_debug = no
auth_debug_passwords = no
auth default {
mechanisms = plain
passdb sql {

args = /usr/local/etc/dovecot-sql.conf
}
userdb sql {

args = /usr/local/etc/dovecot-sql.conf
}
user = mailnull
}
dict {
  #quota = mysql:/usr/local/etc/dovecot-dict-quota.conf
  #expire = db:/var/db/dovecot/expire.db
}
plugin {
quota = maildir
} 

И теперь связка Dovecot с MySQL

# cat /usr/local/etc/dovecot-sql.conf
driver = mysql
connect = host=localhost user=exim password=Password_here dbname=exim

default_pass_scheme = CRYPT
password_query = SELECT password FROM users WHERE login = '%n' AND domain = '%d' AND status = '1'
user_query = SELECT uid, gid FROM users WHERE login = '%n' AND domain = '%d'

Добавляем в автозагрузку и стартуем

# echo 'dovecot_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/dovecot restart
dovecot not running? (check /var/run/dovecot//master.pid).
Starting dovecot.
If you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.

Проверяем работает ли процесс

# ps -ax | grep dovecot
17871  -  Ss        1:25.90 /usr/local/sbin/dovecot -c /usr/local/etc/dovecot.conf
17873  -  S         0:26.21 dovecot-auth
17874  -  I         0:00.21 dovecot-auth -w
55923  0  S+        0:00.00 grep dovecot

А так же можно проверить всю почтовую систему

# sockstat | grep -E "25|465|143|993"
dovecot  imap-login 52477 4  tcp4   144.76.170.161:143    *:*
dovecot  imap-login 52477 5  tcp4   127.0.0.1:993         *:*
mailnull imap       51255 0  stream -> ??
mailnull imap       51255 1  stream -> ??
dovecot  imap-login 51254 3  stream -> ??
dovecot  imap-login 51254 4  tcp4   144.76.170.161:143    *:*
dovecot  imap-login 51254 5  tcp4   127.0.0.1:993         *:*
dovecot  imap-login 51254 11 stream -> /var/run/dovecot/login/default
dovecot  imap-login 51163 10 tcp4   144.76.170.161:143    195.28.31.196:59147
dovecot  imap-login 48946 10 tcp4   144.76.170.161:143    195.28.31.196:59021
dovecot  imap-login 45433 4  tcp4   144.76.170.161:143    *:*
dovecot  imap-login 45433 5  tcp4   127.0.0.1:993         *:*
mailnull exim       18870 3  tcp4   127.0.0.1:25          *:*
mailnull exim       18870 4  tcp4   127.0.0.1:465         *:*
mailnull exim       18870 5  tcp4   144.76.170.161:25     *:*
mailnull exim       18870 6  tcp4   144.76.170.161:465    *:*
root     dovecot    17871 6  tcp4   144.76.170.161:143    *:*
root     dovecot    17871 7  tcp4   127.0.0.1:993         *:*

Теперь можно настраивать какой нибудь ThunderBird или web-клиент Roundcube и забирать почту из ящичков.

Добавить комментарий