Debian-Postfix-Dovecot

Postfix — очень мощный почтовый сервер, основанный на идеологии Open Source,
его часто называют Postfix MTAPostfix Mail Transfer Agent.
В этом руководстве, собранном из разных истоников и дополненных личными переживаниями, я расскажу как установить Postfix в связке с Dovecot (IMAP/POP3) и MySQL на сервер Apache под управлением OC Debian. Руководство было опробовано на Debian 5 Lenny и Debian 6 Squeeze.

Текст статьи достаточно объёмный! Но не пугайтесь :))  все просто и понятно, выполнив все шаги,
мы получим в своё распоряжение надёжный почтовый сервер с возможностью добавления почтовых доменов и ящиков прямо через интерфейс MySQL, а это многого стоит.

Базовая настройка системы:
Предполагается, что в файле /etc/hosts уже есть запись для нашего сервера,
в этом примере и ниже по тексту будет использована следующая запись:
127.0.0.1 localhost.localdomain localhost
12.34.56.78 mysrv.example.com mysrv

В файле /etc/hostname должно содержаться сокращённое название сервера, в днном случае mysrv:
#echo "mysrv" > /etc/hostname
#hostname -F /etc/hostname


Перед установкой пакетов следует обновить сведения и систему:
#aptitude update && aptitude safe-upgrade

Установка нужных пакетов
#aptitude install postfix postfix-mysql postfix-doc mysql-client mysql-server dovecot-common dovecot-imapd dovecot-pop3d postfix-tls libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl 
dovecot-mysql telnet
В процессе установки появится несколько диалогов первоначальной настройки пакетов,
вот основные шаги:

 Во время установки сервера MySQL, если он не был установлен ранее, потребуется ввести пароль для пользователя root.  Пароль следует выбрать надёжный;
Тип используемого Postfix сервера, — в одноимённом диалоге, — «Internet Site»;
В диалоге настройки Postfix следует определиться с почтовым именем. Имеется ввиду полное доменное имя сервера, в нашем примере это
mysrv.example.com, его ещё называют FQDN (Fully Qualified Domain Name).

Так же нам понадобится отличный инструмент mailx, с его помощью мы будем отсылать
тестовые письма непосредственно из консоли:
#aptitude aptitude install mailx
или
#aptitude install bsd-mailx
Итак мы установили все необходимые пакеты и готовы перейти к детальной настройке конфигурации.

Настройка MySQL базы данных доменных имён и пользователей

Для начала подключимся к MySQL серверу прямо из командной строки.
#mysql -u root -p
После этого должно появиться приглашение к вводу команд MySQL
вроде этого:
mysql>
Создадим базу данных для Postfix и выберем её для дальнейшего использования:
mysql>CREATE DATABASE mail;
mysql>USE mail;

все это сожно выполнить и через интерфейс phpMyAdmin, но это менее безопасно во всех случаях.

Создадим пользователя с говорящим именем «mail_admin», он у нас будет главный по почте,
поэтому наделим его всему привилегиями на всех локальных доменах. ВАЖНО!
Сейчас и ниже «mail_admin_password» следует заменить на пароль для этого пользователя,
в первой строке он задаётся впервые:
mysql>GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
mysql>GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'mail_admin_password';
mysql>FLUSH PRIVILEGES;


Далее создаём таблицу в которой будут храниться все активные почтовые домены, доменов может быть сколько угодно и это радует:
mysql>CREATE TABLE domains ( domain varchar(50) NOT NULL, PRIMARY KEY (domain) );

Создадим таблицу пересылки почты с ящика на ящик:
mysql>CREATE TABLE forwardings ( source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );

Создадим таблицу для хранения почтовых аккаунтов:
mysql>CREATE TABLE users ( email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) );

И наконец создадим таблицу транспортировки:
mysql>CREATE TABLE transport ( domain varchar(128) NOT NULL default '', transport varchar(128) NOT NULL default '', UNIQUE KEY domain (domain) );

Работа с MySQL на данном этапе завершена, выходим обратно в консоль:
mysql>quit

Проверим, что MySQL связана с localhost (127.0.0.1). Для этого откроем файл /etc/mysql/my.cnf и найдём следующую строку:
bind-address=127.0.0.1
Если MySQL на сервере уже настроен на другой IP адрес, следует это учесть в поледующих шагах настройки Postfix. Не рекомендуется запускать MySQL сервер на публичном IP адресе — это небезопасно.

Чтобы внесённые нами изменения корректно вступили в силу — перезапустим MySQL сервер:
/etc/init.d/mysql restart
На следующем этапе мы настроим Postfix на работу с MySQL.

Настройка Postfix на работу с MySQL
Для каждой таблицы в MySQL нам следует создать файл соответствия для Postfix.
Создадим файл для работы с почтовыми доменами Postfix:
#nano /etc/postfix/mysql-virtual_domains.cf

В созданный файл /etc/postfix/mysql-virtual_domains.cf нужно добавить следующие строки,
замените пароль «mail_admin_password» на пароль пользователя «mail_admin»:
user = mail_admin
password =
mail_admin_password
dbname = mail
query = SELECT domain AS virtual FROM domains WHERE domain = '%s'
hosts = 127.0.0.1


Создадим похожий файл для настройки пересылки почты с ящика на ящик:
#nano /etc/postfix/mysql-virtual_forwardings.cf

В созданный файл /etc/postfix/mysql-virtual_forwardings.cf нужно добавить следующие строки, замените пароль «mail_admin_password» на пароль пользователя «mail_admin»:
user = mail_admin
password =
mail_admin_password
dbname = mail
query = SELECT destination FROM forwardings WHERE source = '%s'
hosts = 127.0.0.1


Далее создадим файл для работы с почтовыми аккаунтами:
#nano /etc/postfix/mysql-virtual_mailboxes.cf

В созданный файл /etc/postfix/mysql-virtual_mailboxes.cf нужно добавить следующие строки, замените пароль «mail_admin_password» на пароль пользователя «mail_admin»:
user = mail_admin
password =
mail_admin_password
dbname = mail
query = SELECT CONCAT( SUBSTRING_INDEX(email, '@', -1), '/' , SUBSTRING_INDEX(email, '@', 1), '/' ) FROM users WHERE email = '%s'
hosts = 127.0.0.1


И наконец создаём вспомогательный файл для виртуального отображения почты:
#nano /etc/postfix/mysql-virtual_email2email.cf

В созданный файл /etc/postfix/mysql-virtual_email2email.cf нужно добавить следующие строки, замените пароль «mail_admin_password» на пароль пользователя «mail_admin»:
user = mail_admin
password =
mail_admin_password
dbname = mail
query = SELECT email FROM users WHERE email = '%s'
hosts = 127.0.0.1


Установим нужные права и владельца на только что созданные файлы:
#chmod o= /etc/postfix/mysql-virtual_*.cf
#chgrp postfix /etc/postfix/mysql-virtual_*.cf


Добавим почтовую группу и пользователя для передачи почты. Все сообщения виртуальных почтовых ящиков будут храниться в папке /home/vmail на сервере:
#groupadd -g 5000 vmail
#useradd -g vmail -u 5000 vmail -d /home/vmail -m


Скопируем файл конфигурации:
# cp /usr/lib/postfix/main.cf /etc/postfix/main.cf

Редактируем файл /etc/postfix/main.cf и убедимся в наличии следующих строк,
адрес сервера следует заменить на выбранный ранее:
myhostname = mysrv.example.com
mydestination = mysrv.example.com, localhost, localhost.localdomain
mynetworks = 127.0.0.0/8
message_size_limit = 30720000
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
virtual_create_maildirsize = yes
virtual_maildir_extended = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1


На этом мы закончим конфигурировать Postfix и перейдём к настройке SSL и генерации сертификата.

 

Создание SSL сертификата для Postfix и Dovecot

Нам нужно сгенерировать SSL сертификат для Postfix и Dovecot, чтобы работать с почтой по защищённому соединению. Это гораздо безопаснее нежели обычный доступ по незащищённому каналу. Перейдём в директорию Postfix и создадим там сертификат с приватным ключом:
#cd /etc/postfix
#openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509

#openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/dovecot.pem -keyout /etc/ssl/private/dovecot.pem

Сертификат создаётся на год, о чём говорит цифра 365.

На экран будет выведен диалог ввода информации о ключе:
Country Name (2 letter code) [US]: UA
State or Province Name (full name) [Some-State]: Central District
Locality Name (eg, city) : Kiev
Organization Name (eg, company) [Internet Widgits Pty Ltd]: MyCompany, LLC
Organizational Unit Name (eg, section) : Email Services
Common Name (eg, YOUR name) : mysrv.example.com
Email Address []: admin@example.com

Установим права на файл ключа таким образом, чтобы любой доступ был только у владельца, иными словами — отменим права у остальных:
#chmod o= /etc/postfix/smtpd.key

На этом создание SSL сертификата завершено, перейдём к настройке saslauthd для доступа к MySQL.

Настройка saslauthd для доступа к MySQL
Saslauthd
это демон аутентификации, который работает посредствам SASL.
Нам он нужен, чтобы связать Postfix с
MySQL и позволять им совместно работать.

Для начала создадим директорию для saslauthd:
#mkdir -p /var/spool/postfix/var/run/saslauthd
Сохраним начальную версию файла:
#cp -a /etc/default/saslauthd /etc/default/saslauthd.bak
Откроем на редактирование файл /etc/default/saslauthd и установим в нём следующие значения:
START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="pam"
MECH_OPTIONS=""
THREADS=5
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

После этого нам нужно создать файл /etc/pam.d/smtp:
#nano /etc/pam.d/smtp
И внести в него следующие строки. Укажите нужный пароль для пользователя «mail_admin», заменив «mail_admin_password» на верное значение:

auth required pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mail_admin passwd=
mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1

Создадим файл /etc/postfix/sasl/smtpd.conf:
#nano /etc/postfix/sasl/smtpd.conf
И внесём в него следующие строки, так же заменив пароль на верный:
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
auxprop_plugin: mysql
sql_hostnames: 127.0.0.1
sql_user: mail_admin
sql_passwd:
mail_admin_password
sql_database: mail
sql_select: SELECT password FROM users WHERE email = '%u'


Установим права на вновь созданные файлы:
#chmod o= /etc/pam.d/smtp
#chmod o= /etc/postfix/sasl/smtpd.conf

Теперь добавим пользователя postfix в группу sasl и перезапустим сервисы:
#adduser postfix sasl
#/etc/init.d/postfix restart
#/etc/init.d/saslauthd restart

На этом конфигурирование saslauthd завершено. Далее мы настроим Dovecot на использование базы данных MySQL для IMAP/POP3 идентификации.

Настройка Dovecot
Dovecotэто IMAP и POP3 сервер, который позволит нам забирать почту программами сборщиками. Это гибкий и безопасный инструмент в системе Linux.

Нам нужно открыть на редактирование файл /etc/postfix/master.cf и добавить в конце следующие ниже строки:

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


Сохраним для потомков изначальный конфигурационный файл Dovecot:

#cp -a /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.bak
Рабочий конфигурационный файл Dovecot 2.0.9:

#nano /etc/dovecot/dovecot.conf

# Мы не используем специализированные файлы из поставки Dovecot из папки /etc/dovecot/conf.d/.
# Основная причина: отсутствие ясного руководства по их использованию. А также сравнительно небольшой
# размер всего конфига (все перед глазами, нет необходимости раскидывать по отдельным файлам).
#!include conf.d/*.conf


# Нет необходимости явно указывать imaps и pop3s - Dovecot 2.* по-умолчанию их включает.
protocols = imap pop3
listen = *


# Завершать все дочерние процессы, если завершен мастер-процесс
shutdown_clients = yes

# Владелец почтовых папок (также см. конфиг Postfix):
mail_uid = vmail
mail_gid = vmail


# Только наш пользователь с uid и gid 5000 (vmail) может быть использован.
first_valid_uid = 5000
last_valid_uid = 5000


# Лог-файлы. Подробнее: http://wiki2.dovecot.org/Logging
log_path = /var/log/dovecot.log
# Отладка. Если все настроено, отключаем (no)
# http://maint.unona.ru/doc/dovecot2.shtml
mail_debug = no
auth_verbose = no
auth_debug = no
auth_debug_passwords = no


# SSL
# http://wiki2.dovecot.org/SSL/DovecotConfiguration
ssl = yes
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem


# Запрет аутентификации открытым текстом. yes - запретить, no - разрешить.
disable_plaintext_auth = yes

# Список разрешенных символов в имене пользователя.
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@

# Расположение и формат файлов почты (%d - домен, %n - имя пользователя).
mail_location = maildir:/var/vmail/%d/%n

# Если при аутентификации не указан домен, то добавить этот (в данном примере - пустой)
auth_default_realm =

# Доступные варианты аутентификации (PLAIN, DIGEST-MD5, CRAM-MD5...).
# Для того, чтобы иметь меньше головной боли ставьте PLAIN
auth_mechanisms = PLAIN

# Приветственное сообщение
login_greeting = POP3/IMAP server ready.

# Одно из самых важных мест - предоставление сокетов для аутентификации пользователей.
# Если настроено неверно - ничего работать не будет!
service auth {
    # http://maint.unona.ru/doc/dovecot2.shtml
    # Указывает, что данный сокет будет использовать SMTP сервер для аутентификации.
    # Указывается пользователь, группа и права доступа к сокету. В данном случае это postfix
    # ("mail_owner = postfix" в файле /etc/postfix/main.cf).
    unix_listener /var/spool/postfix/private/auth {
        user = postfix
        group = postfix
        mode = 0660
    }
    unix_listener auth-master {
        user = vmail
        group = vmail
        mode = 0660
    }
    unix_listener auth-userdb {
        user = vmail
        group = vmail
        mode = 0660
    }
}

# Запрос параметров виртуальных почтовых пользователей
# (логин, пароль, домен, активный/неактивный и др.)
userdb {
    args = /etc/dovecot/dovecot-sql.conf
    driver = sql
}
passdb {
    args = /etc/dovecot/dovecot-sql.conf
    driver = sql
}


# Plugins
protocol imap {
    imap_client_workarounds = tb-extra-mailbox-sep
    mail_plugins = autocreate
}
protocol pop3 {
    pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
    pop3_uidl_format = %08Xu%08Xv
}
protocol lda {

    # Куда будут перенаправлены недоставленные письма
    postmaster_address = postmaster@localhost
    auth_socket_path = /var/run/dovecot/auth-master
}


plugin {
    auth_socket_path = /var/run/dovecot/auth-master


    # Plugin: autocreate. Создаем и подписываемся на папки IMAP.
    autocreate = INBOX
    autocreate2 = Sent
    autocreate3 = Trash
    autocreate4 = Drafts
    autocreate5 = Junk
    autosubscribe = INBOX
    autosubscribe2 = Sent
    autosubscribe3 = Trash
    autosubscribe4 = Drafts
    autosubscribe5 = Junk


    # Plugin: квоты. Пока отключим.
    # http://wiki2.dovecot.org/Quota/Configuration
    #quota = maildir:User quota
    #quota_rule = *:storage=1GB
    #quota_rule2 = Trash:storage=+10%% # 10% of 1GB = 100MB
    #quota_rule3 = Junk:storage=+10%% # 10% of 1GB = 100MB
    #quota_rule4 = Drafts:storage=+10%% # 10% of 1GB = 100MB
}

MySQL будет сохранять в себе пароли доступа, поэтому мы сохраним копию первоначального /etc/dovecot/dovecot-sql.conf,
а потом произведём настройку:
#cp -a /etc/dovecot/dovecot-sql.conf /etc/dovecot/dovecot-sql.conf.bak
Содержимое исходного файла /etc/dovecot/dovecot-sql.conf полностью заменим на нижеуказанное,
не забудем поменять пароль «mail_admin_password» на актуальный:
#nano /etc/dovecot/dovecot-sql.conf

driver = mysql
connect = host=127.0.0.1 dbname=mail user=mail_admin password=mail_admin_password
#default_pass_scheme =
CRYPT
default_pass_scheme = CRAM-MD5
password_query = SELECT email as user, password FROM users WHERE email='%u';

 

Обратите внимание на то, что в конфиге Dovecot (/etc/dovecot/dovecot.conf) стоит
auth_mechanisms = PLAIN
а в /etc/dovecot/dovecot-mysql.conf
default_pass_scheme = CRAM-MD5
Это не опечатка. Суть: почтовый клиент отправляет Postfix-у пароль почтового ящика простым текстом.
Postfix передает этот пароль Dovecot. А вот тут внимание: сам Dovecot ничего с паролем не придумывает,
а тупо отдает его на проверку с помощью файла dovecot-mysql.conf. А в этом файле обычный текстовый пароль преобразуется функцией MD5
и результат сравнивается с хранимым в базе данных хешем (вы ведь еще не забыли, что PostfixAdmin создает учетные записи
с параметром $CONF['encrypt'] = 'dovecot:CRAM-MD5'). Если ок, Dovecot дает отмашку, что все ок. Самому Dovecot-у по барабану, что там сравнивается.
Ему, как директору, в данном случае интересно получить результат: тот пользователь или не тот.
 

На этом настройка Dovecot завершена, следует перезагрузить его:
#/etc/init.d/dovecot restart
Проверим файл /var/log/mail.log на отсутсвие ошибок:
#tail -50 /var/log/mail.log

И найдём примерно следующие строки:
Feb 13 14:00:17 somevar dovecot: Dovecot v1.0.15 starting up
Jan 21 20:00:18 somevar dovecot: auth-worker(default): mysql: Connected to 127.0.0.1 (mail)


Перед началом тестирования следует установить права и владельца на файл конфигурации
Dovecot /etc/dovecot/dovecot.conf:
#chgrp vmail /etc/dovecot/dovecot.conf
#chmod g+r /etc/dovecot/dovecot.conf

Проверим корректность работы POP3 сервера, для этого мы подключимся к POP3 серверу через терминал:
#telnet localhost pop3
После ввода команды в консоли должно отобразиться примерно следующие:
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK Dovecot ready

Выйдем из режима терминала, пока он нам больше не нужен:
quit

С Dovecot разобрались, теперь перейдём к настройке алиасов.

Настройка почтовых алиасов
Откроем на редактирование файл /etc/aliases и убедимся в корректности значений для директив «postmaster» и «root», адрес почты для root следует изменить на желаемый:
#postmaster: root
#root: postmaster@example.com

Активируем новые алиасы и перезагрузим Postfix:
#newaliases
#/etc/init.d/postfix restart

На этом настройка алиасов завершена, перейдём к тестированию Postfix.

Тестирование Postfix
Для проверки корректности функционирования SMTP-AUTH и TLS, в консоли введём следующую команду:
#telnet localhost 25
После успешного соединения, в терминале должно появиться что-то вроде этого:
220 mysrv.example.com ESMTP Postfix (Debian/GNU)
Далее вводим команду в терминал:
ehlo localhost
После ввода команды, в терминале должно отобразиться нечто вроде этого:
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 mysrv.example.com ESMTP Postfix (Debian/GNU)
ehlo localhost
250-mysrv.example.com
250-PIPELINING
250-SIZE 30720000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Для нас важно наличие строки «250-STARTTLS». Вводим в терминал команду «quit»
и перейдём к наполнению базы данных MySQL почтовыми доменами и пльзователями.


Настройка почтовых доменов и аккаунтов
На этом этапе нужно иметь настроенные записи DNS для почтовых доменов. Для этого следует создать необходимую запись MX, если её ещё нет, в списках DNS, которая будет указывать на полный домен.
Подключимся к MySQL из консоли, добавить аккаунт в MySQL можно любым другим способом, в том числе
и из PHP или Python скрипта, но сейчас мы остановимся на консоли:
#mysql -u root -p

Добавим в список доменов наш основной домен и создадим первый почтовый аккаунт, «example.com», «info@example.com» и «password» следует заменить корректными значениями:
USE mail;
INSERT INTO domains (domain) VALUES ('example.com');
INSERT INTO users (email, password) VALUES ('info@example.com', ENCRYPT('
password'));
quit

Обратите внимание на команду шифрования пароля, добавлять или менять пароль нужно именно так.

Теперь попробуем отправить почту вновь созданному аккаунту. Это необходимо для создания структуры директорий на диске, которые появяться после получения первого письма. Для отправки почты непосредственно из консоли мы будем использовать mailx или bsd-mailx, в зависимости от того, что установилось выше:
#mailx info@example.com
После ввода команды будет предложено ввести тему сообщения. Вводим, нажимаем Enter, после чего нажимаем Ctrl+D. Поле «CC» можно оставить пустым.
Так как почтовых доменов может быть несколько, следует указывать полный почтовый адрес «info@example.com» для сборщика почты, иначе по имени пользователя «info» нельзя будет определить, к какому домену он принадлежит и почта не будет отправлена или получена.
На этом перейдём к следующему шагу — проверке лог файлов.

Проверка логов
После отправки тестового сообщения нам следует проверить логи на остутствие ошибок. Проверим содержимое файла /var/log/mail.log в последних 50 строках:
#tail -50 /var/log/mail.log
Мы должны увидеть нечто подобное:
Feb 13 15:07:49 somevar postfix/cleanup[5877]: E1D145803: message-id=<2011022113150749.E1D148908@mysrv.example.com>
Feb 13 15:07:49 somevar postfix/qmgr[5867]: E1D145803: from=, size=377, nrcpt=1 (queue active)
Feb 13 15:07:49 somevar postfix/pipe[5883]: E1D145803: to=, relay=dovecot, delay=0.05, delays=0.04/0.01/0/0.01, dsn=2.0.0, status=sent (delivered via dovecot service)
Feb 13 15:07:49 somevar postfix/qmgr[5867]: E1D145803: removed

Далее мы проверим лог доставки Dovecot
#tail -50 /home/vmail/dovecot-deliver.log
и должны увидеть нечто похожее на:
deliver(info@example.com): 2011-02-13 17:05:19 Info: msgid=<20110213170519.E1D145803@mysrv.example.com>: saved mail to INBOX
Если в логе есть ошибки в работе сервиса cmusieve, не обращайте на них внимания, в конце статьи я расскажу как от них избавиться.

Теперь можно проверить структуру почтового хранилища и директорий на диске.

Проверка структуры директорий на диске
Перейдём в директорию /home/vmail/example.com/sales/Maildir, где «example.com» адрес нашего почтового домена:
#cd /home/vmail/example.com/sales/Maildir
Выполним команду поиска:
#find
Внутри директории должно содержаться примерно следующее:
./dovecot-uidlist
./cur
./new
./new/1285673545.P4152W0M168494.somevar
./dovecot.index
./dovecot.index.log
./tmp

Просмотреть почту можно прямо из консоли при помощи утилиты mutt:
#cd /home/vmail/example.com/sales/Maildir
#mutt -f .


Настройка почтовых программ
Пользователь может забрать почту любой доступной почтовой программой. В качестве IMAP/POP3 и SMTP сервера следует указать домен, записанный в MX записи интерфейса DNS, например «mail.example.com». Логин — это почтовый адрес пользователя, как уже говорилось это необходимо при мультидоменной конфигурации, которую мы и реализовали. Шифрование входящей почты — SSL, исходящей — TLS.
Чтобы забирать почту пользователя root, в нашем примере его почтовый ящик «root@mysrv.example.com», следует настроить переадресацию в таблице forwardings:
#mysql -u root -p
USE mail;
INSERT INTO forwardings (source, destination) VALUES ('root@mysrv.example.com', 'postmaster@example.com');
quit

После этого вся системная почта — уведомления CRON, сообщение от вспомогательных программ и сервисов — будет пренаправлена на новый адрес, с которого мы можем её забрать.


Возможные проблемы
Единственная проблема, замеченная в логах, это несоответствие пакета cmusieve в Debian 6 Squeeze.
В файле /home/vmail/ наблюдалось примерно следующее:
2011-02-13 20:23:31 deliver(info@example.com): Fatal: Plugin cmusieve not found from directory /usr/lib/dovecot/modules/lda
Дабы исправить положение установим нужный пакет, который теперь называется sieve, в этом собственно и проблема:
#aptitude install libsieve2-1
Потом, нужно открыть файл /etc/dovecot/dovecot.conf на редактирование и заменить строку:
mail_plugins = cmusieve
На нижеуказанную:
mail_plugins = sieve
Перезагружаем Dovecot:
#/etc/init.d/dovecot restart
После этих несложных действий логи стали чисты.

Вот и всЁ.


Список базовых почтовых портов
    POP3 — port 110
    IMAP — port 143
    SMTP — port 25
    HTTP — port 80
    Secure SMTP (SSMTP) — port 465
    Secure IMAP (IMAP4-SSL) — port 585
    IMAP4 over SSL (IMAPS) — port 993
    Secure POP3 (SSL-POP) — port 995

 

Коментувати

Простий текст

  • Не дозволено жодних HTML теґів.
  • Рядки й абзаци переносяться автоматично.
  • Адреси вебсторінок та адреси електронної пошти автоматично перетворюються у посилання.