FreeBSD: установка Dovecot + Exim + MySQL + PostfixAdmin

Автор: | 04/11/2013
 

Установка PostfixAdmin описана в статье FreeBSD: строим почтовую систему Postfix + Dovecot + MySQL + Postfix Admin, часть 1 — установка и настройка Postfix Admin.

Установка Dovecot описана во второй её части — FreeBSD: строим почтовую систему Postfix + Dovecot + MySQL + Postfix Admin, часть 3 — установка и настройка Dovecot. Но эту часть немного дополнит эта статья.

Настраиваем опции сборки Dovecot:

# cd /usr/ports/mail/dovecot && make config-recursive

Установка POP3/IMAP сервера Dovecot

# make showconfig
===> The following configuration options are available for dovecot-1.2.17:
KQUEUE=on: kqueue(2) support
SSL=on: SSL support
MANAGESIEVE=on: ManageSieve support
GSSAPI=off: GSSAPI support
VPOPMAIL=off: VPopMail support
BDB=off: BerkleyDB support
LDAP=off: OpenLDAP support
PGSQL=off: PostgreSQL support
MYSQL=on: MySQL support
SQLITE=off: SQLite support
===> Use ‘make config’ to modify these settings

Запускаем установку:

# make install clean

Редактируем файл конфигурации /usr/local/etc/dovecot.conf:

# Поддерживаемые протоколы
protocols = imap pop3 lmtp
# Запретить авторизацию простым текстом, без шифрования
disable_plaintext_auth = no
# Еси при авторизации не указан домен — подставлять этот
auth_default_realm = domain.org.ua
# Как хранить почту — используем maildir, можно почитать тут>>> различия (%d — домен, %n — имя пользователя)
mail_location = maildir:/usr/mail/%d/%u/
# Если вы используете для входящей почты директорию /var/mail/
# то необходимо будет задать параметр mail_privileged_group = mail
# для того чтоб Dovecot мог блокировать почтовые ящики (имел привилегии на это)
mail_privileged_group = mail
# Директория где хранятся данные на время выполнения
base_dir = /var/run/dovecot/
# Приветственное сообщение для клиентов
login_greeting = Dovecot ready.
# Отображать больше информации при выводе в ps
verbose_proctitle = yes
# Завершать все дочерние процессы, если завершен мастер-процесс
shutdown_clients = yes
# Куда писать лог, проверьте права на файл
log_path = /var/log/dovecot.log
# Настройки отладочной информации, можно включить на время настройки
auth_debug = yes
mail_debug = yes
auth_verbose = yes
auth_debug_passwords = yes
# Пока не ипользуется
ssl = no
# Настройки IMAP, POP3, LDA
protocol imap {
imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
protocol lda {
postmaster_address = admin@webmaster.co.ua
sendmail_path = /usr/sbin/sendmail
}
# Форматирование имени пользователя, для поиска по нему в БД
auth_username_format = %Lu
# Список требуемых механизмов аутентификации, разделённый пробелами
# plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi
auth default {
mechanisms = plain login
# Настройки получения логинов
userdb {
args = /usr/local/etc/dovecot-sql.conf
driver = sql
}
# Настройки получения паролей
passdb {
driver = sql
args = /usr/local/etc/dovecot-sql.conf
}
# Настройки для работы deliver от dovecot, будет использоваться EXIM-ом
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0666
}
client {
path = /var/run/dovecot/auth-client
mode = 0660
user = mailnull
group = mail
}
}
}
dict {
}
plugin {
}

Проверяем авторизацию, как описано в статье Telnet: быстрая проверка работы почты через консоль:

# telnet host.domain.org.ua 110
Trying 178.***.***.114…
Connected to host.domain.org.ua.
Escape character is ‘^]’.
+OK Dovecot ready.
user sdcsdc@dcdc.com
+OK
pass sdcsdc
-ERR Authentication failed.

Не прошло — это хорошо. Повторяем — но с верными данными:

# telnet server.domain.org.ua 110
Trying 178.***.***.114…
Connected to host.domain.org.ua.
Escape character is ‘^]’.
+OK Dovecot ready.
user root@domain.org.ua
+OK
pass password
+OK Logged in.
list
+OK 0 messages:
.
quit
+OK Logging out.
Connection closed by foreign host.

Dovecot и авторизация работают.

Устанавливаем Exim:

# cd /usr/ports/mail/exim && make config-recursive

Отмечаем для установки:

[x] MYSQL Link against libmysqlclient library

Запускае установку:

# make BATCH=yes install clean

Правим файл /etc/rc.conf, добавляем запуск Exim:

exim_enable=»YES»

Запрещаем Sendmail:

sendmail_enable=»NO»
sendmail_submit_enable=»NO»
sendmail_outbound_enable=»NO»
sendmail_msp_queue_enable=»NO»

Останавливаем все текущие процессы Sendmail:

# killall -9 sendmail

Стартуем Exim и проверяем запустился ли он:

# /usr/local/etc/rc.d/exim start
# /usr/local/etc/rc.d/exim status
exim is running as pid 39716.

Сохраняем копию файла конфигурации по-умолчанию:

# cp /usr/local/etc/exim/configure /usr/local/etc/exim/configure.bak.default

В файле конфигурации Exim/usr/local/etc/exim/configure меняем:

# Имя хоста
primary_hostname = host.domain.org.ua
# Настройки MySQL (host/database/user/password)
hide mysql_servers = localhost/postfix/postfix/password
# Что писать в лог — всё
log_selector = +all
# Делаем список локальных доменов. Далее можно его использовать в виде +local_domains
# В данном случае домены выбираются из БД MySQL.
# Можно их просто перечислить через двоеточие.
domainlist local_domains = ${lookup mysql{SELECT domain FROM domain WHERE domain=’${domain}’ AND active=’1′}}
# Делаем список доменов с которых разрешен relay.
# Далее можно его использовать в виде +relay_to_domains
# Можно использовать символы подстановки, типа:
# …. = *.my.domen.su : !spam.my.domen.su : first.su
# тогда пропускается всё, что похоже на *.my.domen.su, но
# от spam.my.domen.su релеится почта не будет.
domainlist relay_to_domains = ${lookup mysql{SELECT domain FROM domain WHERE domain=’${domain}’ AND active=’1′}}
# Список хостов с которых разрешён неавторизованый relay
# Обычно в нём находятся локальные сети, и localhost.
hostlist relay_from_hosts = localhost : 127.0.0.1
# Имя домена добавляемое для локальных отправителей (реальных
# пользователей системы) т.е. почта отправляемая от root, будет от
# root@домен_указанный_здесь. Если пункт не задан, то используется
# имя хоста из `primary_hostname`.
qualify_domain = domain.org.ua

После строки begin authenticators добавляем авторизацию через Dovecot:

dovecot_login:
driver = dovecot
public_name = LOGIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1

dovecot_plain:
driver = dovecot
public_name = PLAIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1

dovecot_md5_crypt:
driver = dovecot
public_name = MD5-CRYPT
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1

Если файла /var/run/dovecot/auth-client нет — создаём его и устанавливаем права:

# touch /var/run/dovecot/auth-client
# chown mailnull:wheel /var/run/dovecot/auth-client

Пользователь mailnull — наш пользователь, под которым будет работать Exim.

Всё — с таким файлом конфигурации сервер уже должен работать.

Сохраняем файл и проверяем настройки:

# exim -bV
Exim version 4.80.1 #2 (FreeBSD 9.1) built 10-Apr-2013 11:29:12
Copyright (c) University of Cambridge, 1995 — 2012
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 — 2012
Probably Berkeley DB version 1.8x (native mode)
Support for: crypteq iconv() use_setclassresources PAM Perl Expand_dlfunc OpenSSL Content_Scanning DKIM Old_Demime
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch mysql nis nis0 passwd
Authenticators: cram_md5 dovecot plaintext spa
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
Configuration file is /usr/local/etc/exim/configure

Перезагружаем Exim, и начинаем работать. Можно отправить письмо куда-нибудь на существующий (!) ящик и посмотреть лог:

$ mail -s «TEST» 1th@domain.kiev.ua
Test
.
EOT

# less /var/log/exim/mainlog
2013-04-11 09:24:29 [65016] SMTP connection from [178.***.***.114]:43039 I=[178.***.***.114]:25 (TCP/IP connection count = 1)
2013-04-11 09:24:29 [65268] 1UQDk5-000Gyi-Mu <= setevoy@host.domain.org.ua H=v451706.hoster.com.ua (host.domain.org.ua) [178.***.***.114]:43039 I=[178.***.***.114]:25 P=esmtp S=666 id=201304110924.r3B9OQeU065210@newakira.setevoy.org.ua T=»TEST» from <setevoy@newakira.setevoy.org.ua> for 1th@setevoy.kiev.ua
2013-04-11 09:24:29 [65268] SMTP connection from v451706.hoster.com.ua (host.domain.org.ua) [178.***.***.114]:43039 I=[178.***.***.114]:25 closed by QUIT
2013-04-11 09:24:29 [65281] cwd=/var/spool/exim 3 args: /usr/local/sbin/exim -Mc 1UQDk5-000Gyi-Mu
2013-04-11 09:24:30 [65281] 1UQDk5-000Gyi-Mu => 1th@domain.kiev.ua F=<setevoy@host.domain.org.ua> P=<setevoy@host.domain.org.ua> R=dnslookup T=remote_smtp S=685 H=domain.org.ua [77.120.106.40]:25 C=»250 2.0.0 Ok: queued as 0268750F2C» QT=1s DT=1s
2013-04-11 09:24:30 [65281] 1UQDk5-000Gyi-Mu Completed QT=1s

Ссылки по теме:

http://sadmin.pp.ua

http://bozza.ru

http://zremcom.ru

http://www.lissyara.su

http://wombat.stapravda.ru

http://skeletor.org.ua

http://aizaro.ru