В этой статье коротко описан процесс установки связки postfix+postfixadmin+cyrus-imapd.
В большинстве опущены процессы установки и настройки некоторых программ, указаны в основном внесенные изменения в конфиг файлы.
Необходимо создать простую систему для создания, удаления и редактирования электронных почтовых ящиков — понятную простому пользователю.
Наличие FreeBSD
Необходимо установить
1. mysql
2. postfix
3. cyrus-imapd
4. cyrus-sasl
5. cyrus-sasl-saslauthd
6. pam-mysql
7. postfixadmin
8. phpmyadmin
Установка
1. Установка mysql-server по умолчанию.
2. Postfix с поддержкой mysql и sasl
3. cyrus-imapd по умолчанию
4. cyrus-sasl по умолчанию
5. cyrus-sasl-saslauthd по умолчанию
6. pam-mysql по умолчанию
7. postfixadmin по умолчанию
8. phpmyadmin по умолчанию
9. apache по умолчанию
Настройка
1. Postfixadmin
Создаем базу postfix
CREATE DATABASE postfix; CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
Копируем из папки ADDITIONS/cyrus все файлы cyrus*
В корень postfixadmin (/usr/local/www/postfixadmin)
В cyrus.conf
Указываем
$cyrus_user = 'cyrus'; $cyrus_password = 'password'; $cyrus_host = 'localhost';
В config.inc.php (пишу основные изменения)
CONF['encrypt'] = 'mysql_encrypt'; // $CONF['mailbox_postcreation_script']='sudo -u courier /usr/local/bin/postfixadmin-mailbox-postcreation.sh'; $CONF['mailbox_postcreation_script']='/usr/local/www/postfixadmin/cyrus-mailbox-postcreation.pl'; // $CONF['mailbox_postedit_script']='sudo -u courier /usr/local/bin/postfixadmin-mailbox-postedit.sh'; $CONF['mailbox_postedit_script']='/usr/local/www/postfixadmin/cyrus-mailbox-postedit.pl'; // $CONF['mailbox_postdeletion_script']='sudo -u courier /usr/local/bin/postfixadmin-mailbox-postdeletion.sh'; $CONF['mailbox_postdeletion_script']='/usr/local/www/postfixadmin/cyrus-mailbox-postdelete.pl'; chown -R www:www cyrus* chmod 750 cyrus*
2. Cyrus-imapd
В impad.conf (пишу основные изменения)
unixhierarchysep: yes servername: allowplaintext: yes admins: cyrus sasl_pwcheck_method: saslauthd sasl_mech_list: plain otp cram-md5 digest-md5 virtdomains: userid
3. Редактируем файл /etc/pam.d/imap
# auth #auth sufficient pam_krb5.so no_warn try_first_pass #auth sufficient pam_ssh.so no_warn try_first_pass #auth required pam_unix.so no_warn try_first_pass # account #account required pam_nologin.so #account required pam_unix.so auth required pam_mysql.so user=postfix passwd=password host=localhost verbose=0 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 account required pam_mysql.so user=postfix passwd=password host=localhost verbose=0 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 cp imap pop3 cp imap smtp
4. Настройка Postfix
Редактируем main.cf (пишу основные изменения)
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mysql:/usr/local/etc/postfix/mysql-mydestination.cf virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql-virtual.cf mailbox_transport = cyrus local_recipient_maps = mysql:/usr/local/etc/postfix/mysql-canonical.cf mysql-mydestination.cf user = postfix password = password hosts = localhost dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' mysql-virtual.cf hosts = localhost user = postfix password = password dbname = postfix table = alias # select_field = goto where_field = address additional_conditions = and active = '1' mysql-canonical.cf hosts = localhost user = postfix password = password dbname = postfix table = mailbox select_field = username where_field = username additional_conditions = and active = '1' limit 1
Редактируем master.cf (пишу основные изменения)
cyrus unix - n n - - pipe user=cyrus argv=/usr/local/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${recipient}
5. Заходим на страницу postfixadmin
Подключаем базу
Создаем администратора системы
Логонимся
Создаем домен соответствующий имени хоста
Создаем в этом домене пользователя cyrus c паролем password
В дальнейшем можно либо через phpmyadmin у пользователя cyrus в таблице mailbox удалить домен, либо в imapd.conf указать admins: cyrus@имя_хоста
6. В /etc/rc.conf указываем следующее
cyrus_imapd_enable="YES" postfix_enable="YES" mysql_enable="YES" saslauthd_enable="YES" saslauthd_flags="-n 10 -r -a pam"