Вход:  Пароль:  
FreeSource: StepnovAndrey ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

Почтовая система на базе postfix, cyrus-imap, mysql, web-cyradm, cyrus-sasl2.


В данной статье рассматривается установка почтовой системы на базе Alt Linux Server 4.0.1. Достаточно подробно описывается каждый этап настройки компонентов системы, в основном актуальных для Alt Linux, но по моему мнению эта информация будет полезна и пользователям (администраторам) других дистрибутивов.


mySQL— это центр нашей системы. Postfix и Cyrus используя демон saslauthd будут делать сюда запросы аутентификации. Postfix будет обращаться сюда, для определения информации необходимой для доставки. Система построенная с использованим mySQL является очень гибкой, производительной и удобной в администрировании.


Выбор МТА postfix был обусловлен тем, что это МТА Alt Linux по умолчанию. В принципе postfix является, по моему мнению, очень гибким и стабильным MTA .


Cyrus-imapd будет служить нам в качестве MDA... Почму? Потому что, по моему субъективному мнению, это самый стабильный MDA, он будет без ошибок взаимодействовать с библиотекой Cyrus-SASL2,он лёгок в настройке. А то что у него свой формат почтовых ящиков – это для меня не важно.


1.
Устанавливаем Mysql (My SQL?-server 5.0.51-alt1):
apt-get install My SQL?-server


Правим /var/lib/mysql/my.cnf
[mysqld]
old_passwords=1
Не стоит забывать что этот демон в chroot окружении
chroot=/var/lib/mysql
datadir=/db
bdb-logdir=/log
pid-file=/mysqld.pid
skip-locking
Закоментировал только одну строку
#skip-networking
socket=/mysql.sock
tmpdir=/tmp
user=mysql


Стартуем service mysqld start, и проверяем telnet localhost 3306, в ответ вы должны получить примерно следующее
telnet localhost 3306
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
4
5.0.510YPe.R2B,�!7,t'c<Bw Sx?"=


Задаём пароль root настраиваем права доступа
mysqladmin -u root password 'pass'
mysql -u root -p
SELECT Host, User FROM mysql.user;
DELETE FROM mysql.user WHERE User = ;
DELETE FROM mysql.db WHERE User =
;
FLUSH PRIVILEGES;
В режиме отладки можно запускать mysql —log=filename что бы проследить все запросы в одном файле. Это очень полезно, когда например, конфигурируешь cyrus-sasl2.
Активируем My SQL? на нужных уровнях запуска
chkconfig --level 345 mysqld on


Раз уж мы планируем управлять почтой через web интерфейс (web-cyradm), то целесообразным будет поставить и phpMyAdmin для управления mysql:
apt-get install apache2
apt-get install apache2-mod_php5
apt-get install phpMyAdmin-apache2-php5
Что бы закончить с установкой пакетов, связанных с web ставим и web-cyradm
apt-get install web-cyradm
в дополнение ко всему установленному, в нашу систему устанавливаются (по зависимостям) много других, важных пакетов, таких как pam-mysql — необходимый для работы демона аутентификации с My SQL?.


Далее конфигурируем apache2... На нём нет смысла останавливаться подробно, учитывая то что статья о другом. Хотелось бы отметить только то, что желательно с phpMyadmin и web-cyradm работать по протоколу https с аутентификацией.
Убедившись, что apache стартует без ошибок, выполняем
chkconfig --level 345 httpd2 on


Теперь надо создать таблицы в которых будут хранится учётные записи пользователей их адреса, транспорты и пр. Что бы облегчить нам задачу разработчики наградили нас скриптами, которые можно увидеть в /usr/share/doc/web-cyradm/script. Далее — дело техники — правим скрипты (надо задать пароли) и выполняем (всё написано в README.ALT).
mysql -u root -p < /usr/share/doc/web-cyradm-0.5.4/scripts/insertuser_mysql.sql
mysql -u root -p mail < /usr/share/doc/web-cyradm-0.5.4/scripts/create_mysql.sql
Проверяем созданы ли таблицы.
Конфигурация My SQL? закончена


2.
cyrus-sasl2 и cyrus-imapd


apt-get install cyrus-sasl2
apt-get install cyrus-imapd
apt-get install cyrus-imapd-utils


По умолчанию cyrus-sasl2 устанавливается с поддержкой LDAP. Но наша система работает с My Sql?, поэтому отправляемся в /etc/sysconfig/saslauthd и правим:
OPTIONS="-a pam -n 0"
Всё, больше там ничего не должно быть.
Затем /etc/pam.d/imap /etc/pam.d/pop /etc/pam.d/smtp
#%PAM-1.0
#auth include system-auth
#account include system-auth


auth sufficient pam_mysql.so user=mail passwd=postcyrus host=localhost db=mail table=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time


#auth sufficient pam_unix_auth.so


account required pam_mysql.so user=mail passwd=postcyrus host=localhost db=mail table=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time


#account sufficient pam_unix_acct.so


Главное, что бы все строчки, кроме тех, которые относятся к pam_musql были ЗАКОММЕНТИРОВЫАНЫ! Иначе будет ошибка.
Проверяем
testsaslauthd -u cyrus -p postcyrus
0: OK “Success.”
Автозапуск
chkconfig --level 345 saslauthd on


На конфигурации cyrus-imapd останавливаться подробно не будем, приведу конфиги (комментированные строки удалены):


/etc/imap.conf


admins: test@test
allowapop: 0
allowplaintext: 1
annotation_db: skiplist
autocreatequota: 100000
createonpost: yes
autocreateinboxfolders: sent|junk|remove|recipient
autosubscribeinboxfolders: sent|junk|remove|recipient
configdirectory: /var/lib/imap
duplicate_db: skiplist
duplicatesuppression: 0
hashimapspool: 1
idlesocket: /var/lib/imap/socket/idle
imapidresponse: 0
lmtp_downcase_rcpt: 1
mboxlist_db: skiplist
partition-default: /var/spool/imap
poptimeout: 5
quotawarn: 90
quotawarnkb: 0
reject8bit: 0
sasl_pwcheck_method: saslauthd
sasl_mech_list: PLAIN LOGIN DIGEST-MD5 CRAM-MD5
seenstate_db: skiplist
sendmail: /usr/sbin/sendmail
servername: smtp.sakhsci.ru
sievedir: /var/lib/imap/sieve
subscription_db: flat
tls_cert_file: /etc/openssl/private/mail.crt
tls_key_file: /etc/openssl/private/mail.pem
tls_session_timeout: 15
username_tolower: 1
virtdomains: userid


/etc/cyrus.conf


START {

recover cmd="ctl_cyrusdb -r"

idled cmd="idled"

}


SERVICES {


imap cmd="imapd" listen="imap" prefork=5
imaps cmd="imapd -s" listen="imaps" prefork=1
pop3 cmd="pop3d" listen="pop3" prefork=3
pop3s cmd="pop3d -s" listen="pop3s" prefork=1
lmtpunix cmd="lmtpd" listen="/var/spool/postfix/public/lmtp" prefork=1

}


EVENTS {

checkpoint cmd="ctl_cyrusdb -c" period=30
delprune cmd="cyr_expire -E 3" at=0400
tlsprune cmd="tls_prune" at=0400

}


Проверяем
service cyrus-imapd start
Смотрим /var/log/messages — если нет ошибок
chkconfig --level 345 cyrus-imapd on


3.
web-cyradm


Смотрим права на sasldb2 (они должны быть такие же как в листинге)
ls -l /etc/sasl2/
total 20
-rw-r


1 root root 2519 Oct 17 14:36 saslauthd.conf -rw-rr 1 root sasl 12288 Feb 12 17:46 sasldb2
-rw-r


1 root root 23 Oct 17 14:36 saslpasswd.conf Если нет выполняем
chmod 0644 /etc/sasl2/sasldb2
Добавляем пользователя в sasldb2 (без этого не работает :))
saslpasswd2 cyrus


Пытаемся подключится к cyradm
cyradm --user cyrus localhost
Password:
<имя >.ru>
если увидели строку приветствия то переходим к конфигурации web-cyradm
Во первых разберёмся с правами. На папку ../web-cyradm/config права должны быть такие
drwxxx 2 root root 21 Feb 12 16:03 config
Права на conf.php в этой папке
-rw-rr 1 root root 3443 Feb 12 19:07 conf.php
Во вторых для работы этого инструмента необходим pear-db
apt-get install pear-DB
Правим ../web-cyradm/config/conf.php
я в них указал только пароли на пользователя cyrus и mail больше ничего не менял.


Всё, теперь проверяем
https://<name>.ru/webcyradm
Имя пользователя -admin — его пароль мы задавали на этапе создания таблиц в My SQL?, в скрипте /usr/share/doc/web-cyradm-0.5.4/scripts/create_mysql.sql!!!
Это и есть администратор web-cyradm.
Вывод ошибок смотрите в /var/log/httpd2/error_log.


4.
Postfix


apt-get install postfix-mysql
apt-get install postfix-cyrus


По postfix много документации, укажу лишь параметры main.cf относящиеся к нашей системе и правил доступа:
#аутентификация – Cyrus-sasl2
##
#добавить сюда permin_mynetwork дл отключения аутентификации локальных юзверей
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
# Необходимо для корректной работы клиентов, использующих устаревший
# метод AUTH, например outlook express
broken_sasl_auth_clients = yes


smtpd_helo_restrictions = reject_unknown_helo_hostname, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname


smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient
_domain, reject_unauth_destination


smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_unknown_sender_domain


smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_unknown
_sender_domain, reject_rbl_client blackholes.mail-abuse.org, reject_rbl_client dialups.mail-abuse.org, reject_rbl_client dul.ru, reject_rbl_client list.dsbl.org, rej
ect_rbl_client sbl.spamhaus.org, reject_rbl_client cbl.abuseat.org, reject_rbl_client bl.spamcop.net, reject_rbl_client dnsbl.njabl.org, reject_rbl_client dynablock.
njabl.org, reject_rbl_client combined.njabl.org
#reject_unknown_client
#reject_rbl_client opm.blitzed.org, reject_rbl_client relays.ordb.org

smtpd_data_restrictions = reject_unauth_pipelining


strict_rfc821_envelopes = yes
disable_vrfy_command = yes
smtpd_helo_required = yes


virtual_maps = mysql:/etc/postfix/mysql-virtual.cf
alias_database = mysql:/etc/postfix/mysql-alias.cf
alias_maps = mysql:/etc/postfix/mysql-alias.cf


5.
Заключение
Вот основные действия, которые необходимо провести для настройки системы postfix, cyrus-imap, mysql, web-cyradm, cyrus-sasl2. В дополнение к этому необходимо будет установить amavis-new (с clamAV и spamassassin) для фильтрации почты на вирусы и спам. Данная система выстояла все тесты на «прочность» и используется в конкретной организации.


6.
Материал.
При написании данной статьи и насройки описываемой системы истользовались следующие ресурсы:
1. http://www.bog.pp.ru/
2. http://opennet.ru/
3. http://www.freesource.info/
4. http://lists.altlinux.org/


 
Файлы [Скрыть файлы/форму]
Комментариев нет. [Показать комментарии/форму]