пятница, 22 марта 2013 г.

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 http://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 интерфейс, набираем в браузере:
http://your_ip/postfixadmin/setup.php
Если предыдущие действия выполнены правильно, внизу страницы появится запрос на создание пароля установки.
После ввода пароля должна появится строка с хешем, если так, тогда копируем её и возвращаемся в файл config.inc.php находим там эту строку и вставляем хеш
$CONF['setup_password'] = '  ';
Создаём администратора для postfixadmin в первое поле вводим пароль установки, во второе вводим email администратора например admin@yourdomein.com в третье поле вводим пароль и в четвёртое подтверждение пароля.
Создаём конфигурационные файлы обращения к 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 (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_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

Успехов

1 комментарий:

  1. Hi,

    Thank you for your page.
    Recently I setup a homemade e-mail server and wrote a full detailed tutorial that you can find in

    http://cosmolinux.no-ip.org/raconetlinux2/mail.html

    using Debian Squeeze, Postfix, Dovecot, SASL, Spamassassin and Squirrel (and a Google account for SMTP relay).

    I wish it is helpful to someone.

    ОтветитьУдалить