Связка postfix+postfixadmin+cyrus-imapd

В этой статье коротко описан процесс установки связки 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"

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.