Установка postfix dovecot mysql postfixadmin на Ubuntu

Автор: | 29.10.2014

Установим LAMP, Если Вы испльзуете дистрибудив Ubuntu LAMP пропускаем этот шаг.

sudo apt-get install apache2
sudo apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-imagick php5-mcrypt php5-memcache php5-mhash php5-mysql php5-pspell php5-snmp php5-sqlite php5-xmlrpc php5-xsl php5-imap

Устанавливаем MySql сервер

sudo apt-get install mysql-server mysql-client

Проверяем два файла «hosts» и «hostname»
Открываем «hosts»

nano /etc/hosts

и приводим его к примерно следующему содержанию

127.0.0.1 localhost your_inet_ip_addr mail.your_domain.com mail

открываем файл «hostname»

nano /etc/hostname

этот файл должен содержать одну строку:

mail

Приступаем к установке postfix dovecot sasl

sudo apt-get install postfix postfix-mysql dovecot-common dovecot-imapd dovecot-pop3d openssl libsasl2 sasl2-bin libsasl2-modules dovecot-postfix

Установим postfixadmin
Скачиваем установочный deb пакет

wget https://netcologne.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.92/postfixadmin_2.92-1_all.deb

Для установки копируем команду

dpkg -i postfixadmin_2.3.5-1_all.deb

Если dpkg выдаст ошибку не пугаемся, просто набераем команду:

apt-get install -f

эта команда доустановит все зависимости необходимые данному пакету
во время утановки небходимо ввести пароль для postfixadmin для примера возьмём 123

К сожалению, есть вероятность, что установщик пакета не изменит параметров конфигурационного файла config.inc.php, этот файл находится по такому пути: /etc/postfixadmin/config.inc.php
открываем его и проверяем:

nano /etc/postfixadmin/config.inc.php

находим такие строки:

$CONF['database_type'] = 'mysql'; 
$CONF['database_host'] = 'localhost'; 
$CONF['database_user'] = 'postfixadmin'; 
$CONF['database_password'] = '123'; 
$CONF['database_name'] = 'postfixadmin'; 
$CONF['database_prefix'] = '';

изменяем алгоритм шифрования:

$CONF['encrypt'] = 'md5';

Переходим к настройке postfixadmin через web интерфейс, набираем в браузере:

your_ip/postfixadmin/setup.php
Если предыдущие действия выполнены правильно, внизу страницы появится запрос на создание пароля установки.
После ввода пароля должна появится строка с хешем, если так, тогда копируем её и возвращаемся в файл config.inc.php находим там эту строку и вставляем хеш

$CONF['setup_password'] = ' ';

Создаём администратора для postfixadmin в первое поле вводим пароль установки, во второе вводим email администратора например [email protected] в третье поле вводим пароль и в четвёртое подтверждение пароля.

Создаём 3 конфигурационных файла обращения к mysql:

nano /etc/postfix/virtual-alias-maps.cf

вставляем в него следующие строки

user = postfixadmin 
password = 123 
hosts = 127.0.0.1 
dbname = postfixadmin 
query = select `goto` from `alias` where `address` = '%s'

Создаем следующий

nano /etc/postfix/virtual-mailbox-domains.cf

Вставляем

user = postfixadmin
password = 123
hosts = 127.0.0.1
dbname = postfixadmin
query = select 1 from `domain` where `domain` = '%s'

И последний

nano /etc/postfix/virtual-mailbox-maps.cf

 

user = postfixadmin 
password = 123 
hosts = 127.0.0.1 
dbname = postfixadmin 
query = select 1 from `mailbox` where `username` = '%s'

Cоздаём пользователя и группу:

groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -d /home/vmail -m

У Postfix-а из коробки есть отличный скрипт для управления конфигурацией.
Для ленивых:
создаём в любой дериктории скрипт командой:

nano conf_postfix.sh

записываем в него следующее

#!/bin/sh 
postconf -e virtual_mailbox_domains=mysql:/etc/postfix/virtual-mailbox-domains.cf
postconf -e virtual_mailbox_maps=mysql:/etc/postfix/virtual-mailbox-maps.cf
postconf -e virtual_alias_maps=mysql:/etc/postfix/virtual-alias-maps.cf
postconf -e virtual_uid_maps=static:5000
postconf -e virtual_gid_maps=static:5000
postconf -e virtual_transport=dovecot
postconf -e dovecot_destination_recipient_limit=1
postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem
postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem
postconf -e smtpd_use_tls=yes
postconf -e smtpd_sasl_type=dovecot
postconf -e smtpd_sasl_path=private/auth
postconf -e smtpd_sasl_auth_enable=yes
postconf -e smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination

сохраняем и даём права на запуск:

chmod +x conf_postfix.sh

запускаем:

./conf_postfix.sh

Для тех, кто не ищет лёгких путей применяем по очереди данные настройки:

postconf -e virtual_mailbox_domains=mysql:/etc/postfix/virtual-mailbox-domains.cf
postconf -e virtual_mailbox_maps=mysql:/etc/postfix/virtual-mailbox-maps.cf
postconf -e virtual_alias_maps=mysql:/etc/postfix/virtual-alias-maps.cf
postconf -e virtual_uid_maps=static:5000
postconf -e virtual_gid_maps=static:5000
postconf -e virtual_transport=dovecot
postconf -e dovecot_destination_recipient_limit=1
postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem
postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem
postconf -e smtpd_use_tls=yes
postconf -e smtpd_sasl_type=dovecot
postconf -e smtpd_sasl_path=private/auth
postconf -e smtpd_sasl_auth_enable=yes
postconf -e smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination

Настройка postfix.
Конфиг postfix находится тут /etc/postfix/main.cf открываем его:

nano /etc/postfix/main.cf

Приводим его к такому виду.

# See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. 
#myorigin = /etc/mailname 
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) 
biff = no # appending .domain is the MUA's job. 
append_dot_mydomain = no 
# Uncomment the next line to generate "delayed mail" warnings 
#delay_warning_time = 4h 
readme_directory = /usr/share/doc/postfix 
# TLS parameters 
smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem 
smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key 
smtpd_use_tls = yes 
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache 
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache 
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for 
# information on enabling SSL in the smtp client. 
myhostname = mail.your_doain.com 
alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
myorigin = $myhostname 
mydestination = $myhostname 
relayhost = 
mynetworks = 127.0.0.0/8 inet_ip/24 
mailbox_size_limit = 0 
recipient_delimiter = + 
inet_interfaces = all 
virtual_mailbox_domains = mysql:/etc/postfix/virtual-mailbox-domains.cf 
virtual_mailbox_maps = mysql:/etc/postfix/virtual-mailbox-maps.cf 
virtual_alias_maps = mysql:/etc/postfix/virtual-alias-maps.cf 
virtual_uid_maps = static:5000 
virtual_gid_maps = static:5000 
virtual_transport = dovecot 
dovecot_destination_recipient_limit = 1 
smtpd_sasl_type = dovecot 
smtpd_sasl_path = private/dovecot-auth 
smtpd_sasl_auth_enable = yes 
smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination 
html_directory = /usr/share/doc/postfix/html 
home_mailbox = Maildir/ 
smtpd_sasl_authenticated_header = yes 
smtpd_sasl_security_options = noanonymous 
smtpd_sasl_local_domain = $myhostname 
broken_sasl_auth_clients = yes 
smtpd_sender_restrictions = reject_unknown_sender_domain 
#mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/conf.d/01-dovecot-postfix.conf -n -m "${EXTENSION}" 
smtp_use_tls = yes 
smtpd_tls_received_header = yes 
smtpd_tls_mandatory_protocols = SSLv3, TLSv1 
smtpd_tls_mandatory_ciphers = medium 
smtpd_tls_auth_only = yes 
tls_random_source = dev:/dev/urandom
Далее открываем файл /etc/postfix/master.cf
nano /etc/postfix/master.cf

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

dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}

Настраиваем безопасное соединение SSL/TLS
В консоле набираем:

openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/dovecot.pem -keyout /etc/ssl/private/dovecot.pem chmod o= /etc/ssl/private/dovecot.pem

 

openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem -keyout /etc/ssl/private/postfix.pem chmod o= /etc/ssl/private/postfix.pem

Настраиваем dovecot
открываем главный конфигурационный файл командой

nano /etc/dovecot/dovecot.conf

Hа ходим и исправляем приведённые ниже параметры:

protocols = imap imaps pop3 pop3s 
listen = * 
disable_plaintext_auth = no 
log_timestamp = "%Y-%m-%d %H:%M:%S " 
login_greeting = Dovecot ready. 
mail_location = maildir:/home/vmail/%d/%n 
mail_privileged_group = vmail 
maildir_copy_with_hardlinks = yes 
protocol lda { 
postmaster_address = [email protected]_domain.com 
hostname = mail.your_domain.com 
mail_plugin_dir = /usr/lib/dovecot/modules/lda 
auth_socket_path = /var/run/dovecot/auth-master 
mail_plugins = sieve 
log_path = /home/vmail/dovecot-deliver.log 
global_script_path = /home/vmail/globalsieverc 
} 
auth_verbose = yes 
auth_debug = yes 
auth_debug_passwords = yes 
auth default { 
mechanisms = plain login cram-md5 passdb sql { # Path for SQL configuration file args = /etc/dovecot/dovecot-sql.conf } userdb static { args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes } userdb sql { # Path for SQL configuration file args = /etc/dovecot/dovecot-sql.conf } user = vmail socket listen { master { path = /var/run/dovecot/auth-master mode = 0600 # Default user/group is the one who started dovecot-auth (root) user = vmail #group = vmail } client { path = /var/run/dovecot/auth-client mode = 0660 user = postfix group = postfix } }

Теперь редактируем файл dovecot-sql.conf набираем команду:

nano /etc/dovecot/dovecot-sql.conf

Копируем и вставляем следующие строки

driver = mysql connect = host=127.0.0.1 dbname=postfixadmin user=root password=123 default_pass_scheme = PLAIN-MD5 password_query = SELECT username as user, password FROM mailbox WHERE username = '%u'

Завершающим этапом будет перезагрузка почтовых сервисов

/etc/init.d/postfix restart && /etc/init.d/dovecot restart

Лог файлы находятся в «/var/log/»

/var/log/mail.err 
/var/log/mail.log 
/var/log/mail.info

Успехов.