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

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

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


sudo apt-get install apache2

sudo apt-get install libapache2-mod-php5 php5 php5-common  php5-curl php5-gd php5-imagick php5-mcrypt php5-memcache 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

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

wget https://libnix.com/wp-content/uploads/2011/08/postfixadmin-2.3.2_all.deb

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

dpkg -i postfixadmin-2.3.2_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 интерфейс, набираем в браузере:

https://your_ip/postfixadmin/setup.php

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

$CONF['setup_password'] = '  ';

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

Создаём конфигурационные файлы обращения к 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_mynetworks,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_mynetworks,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 (Debian/GNU)
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 = no

# TLS parameters
smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
smtpd_tls_key_file = /etc/ssl/private/postfix.pem
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.you_domain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $myhostname
mydestination = $myhostname
relayhost = 
mynetworks = 127.0.0.0/8 you.inet.ip.0/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/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination 

Далее открываем файл /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 = postmaster@your_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/spool/postfix/private/auth
      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

 


Успехов.