Задача: поднять почтовый
сервер на базе Postfix, Dovecot 2.x и Ubuntu 12.04 LTS.
Настоящая инструкция была проверена на Ubuntu 12.04 и 12.04.1
Использованные источники:
8. man 5 master
9. http://do.gendocs.ru/docs/index-290726.html?page=19
10. http://www.dovecot.org/list/dovecot/2010-December/055705.html
11. http://wiki.dovecot.org/SSL/DovecotConfiguration
10. http://www.dovecot.org/list/dovecot/2010-December/055705.html
11. http://wiki.dovecot.org/SSL/DovecotConfiguration
Выполнение (старый вариант с ошибками):
Выполнение (новый проверенный вариант от 18.01.2014):
Это предварительная рабочая версия. В самое ближайшее время оформлю и допишу пояснения.
1.
После
установки Ubuntu
Server
12.04.3 LTS
выполним обновление
пакетов
sudo
apt-get update
sudo apt-get upgrade
2.
Устанавливаем
Postfix,
Dovecot,
MySQL
и другие необходимые
пакеты
sudo apt-get install postfix dovecot-common
dovecot-imapd mysql-server mysql-client postfix-mysql dovecot-mysql sasl2-bin
В
процессе установки MySQL
задаем пароль root
в MySQL:
sqlrootpass
В
процессе установки Postfix выбираем
тип конфигурации «no
configuration»
(без конфигурации)
3. Подключаемся к MySQL
mysql
-u
root
–p
и
создаем базу данных, в которой будут храниться учетные записи почтовых
аккаунтов
CREATE DATABASE mail;
USE mail;
Внимание!
Далее будет использоваться пользователь mail_admin и его пароль mail_admin_password для доступа к базе данных
почтовых аккаунтов в MySQL.
Вместо mail_admin и mail_admin_password Вы можете задать свои значения.
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO
'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO
'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'mail_admin_password';
FLUSH PRIVILEGES;
создаем
таблицу доменов
CREATE TABLE domains ( domain varchar(50) NOT NULL,
PRIMARY KEY (domain) );
Создаем
таблицу …
CREATE TABLE forwardings ( source varchar(80) NOT
NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );
Создаем
таблицу для пользователей
CREATE TABLE users ( user varchar(80) NOT NULL, email
varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) );
CREATE TABLE transport ( domain varchar(128) NOT NULL
default '', transport varchar(128) NOT NULL default '', UNIQUE KEY domain
(domain) );
quit
4.
Проверим, что MySQL связана с localhost (127.0.0.1). Для найдем в файле
/etc/mysql/my.cnf строку bind-address = 127.0.0.1
grep 'bind-address' /etc/mysql/my.cnf
в
результате выполнения команды на экран должно быть выведено
bind-address = 127.0.0.1
5.
Создаем
группу virtual и
пользователя virtual,
входящего в эту группу.
sudo groupadd -g 5000 virtual
sudo useradd -g virtual -u 5000 virtual
6.
Создадим
каталог, где будут размещаться почтовые ящики:
sudo mkdir /var/spool/mail/myubuntu.org
сменим
имя и группу владельца созданной директории на virtual:virtual
sudo chown virtual:virtual /var/spool/mail/myubuntu.org
дадим
владельцу и его группе полные права на каталог, а другим все запретим
sudo chmod 770 /var/spool/mail/myubuntu.org
Начинаем
конфигурировать Postfix
7.
Создаем
конфигурационный файл для доступа к почтовым доменам в базе данных MySQL
sudo nano /etc/postfix/mysql-virtual_domains.cf
user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT domain AS virtual FROM domains WHERE
domain = '%s'
hosts = 127.0.0.1
8.
Создаем
конфигурационный файл для определения автоматической пересылки писем с ящика на
ящик
sudo nano /etc/postfix/mysql-virtual_forwardings.cf
user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT destination FROM forwardings WHERE
source = '%s'
hosts = 127.0.0.1
8.
Создаем
конфигурационный файл для доступа к почтовым аккаунтам в базе данных MySQL
sudo nano /etc/postfix/mysql-virtual_mailboxes.cf
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
10.
Создаем
конфигурационный файл для виртуального отображения почты
sudo nano /etc/postfix/mysql-virtual_email2email.cf
user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT email FROM users WHERE email = '%s'
hosts = 127.0.0.1
11.
Владельцем
данных конфигурационных файлов должен быть root, группой владельца - postfix
sudo chown root /etc/postfix/mysql-virtual_*.cf
sudo chgrp postfix /etc/postfix/mysql-virtual_*.cf
12.
Редактируем
конфигурационный файл главного модуля main
sudo nano /etc/postfix/main.cf
Пишем
туда следующее:
#Так наш
сервер будет представляться при отправке и получении почты
smtpd_banner = $myhostname ESMTP (Ubuntu)
#Отключаем
использование comsat
biff = no
#Запрещаем
автоматически дополнять неполное доменное имя в адресе письма
append_dot_mydomain
= no
#Указываем
имя нашего хоста
myhostname =
ubuntu.myubuntu.org
# Указываем
файл с псевдонимами почтовых ящиков
alias_maps = hash:/etc/postfix/aliases
#Указываем,
для каких доменов будем принимать почту
mydestination
= localhost
# Не будем
ограничивать размер почтовых ящиков
mailbox_size_limit = 0
recipient_delimiter = +
#Указываем
прослушивание на всех сетевых интерфейсах
inet_interfaces
= all
#Указываем
обязательность использование клиентами команды helo
smtpd_helo_required
= yes
#Описываем
доступ доменам, почтовым ящикам и т.д.
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 = /var/spool/mail
virtual_alias_maps =
proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf,
mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
home_mailbox = Maildir/
local_recipient_maps = $virtual_mailbox_maps
#Описываем
авторизацию по SMTP для клиентов не из доверенной зоны
smtpd_sasl_type = dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
#broken_sasl_auth_clients = yes
#Указываем каталог очереди для
Postfix
queue_directory = /var/spool/postfix
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,
reject_unauth_destination
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
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/dovecot/myubuntu.key
smtpd_tls_cert_file = /etc/dovecot/myubuntu.cert
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 1s
tls_random_source = dev:/dev/urandom
13. Задаем сообщение, которое будет выводить Postfix в случае, если отправитель будет представляться именем нашего сервера
sudo nano /etc/postfix/helo.list
myubuntu.org 550 Don't use my hostname
прохешируем
sudo postmap /etc/postfix/helo.list
14. Задаем сообщение, которое будет выводить Postfix в случае, если отправитель извне будет говорить, что он из нашей сети
sudo nano /etc/postfix/ext_sender
myubuntu.org 450 Do not use my domain in your envelope sender
прохешируем
sudo postmap /etc/postfix/ext_sender
13. Задаем сообщение, которое будет выводить Postfix в случае, если отправитель будет представляться именем нашего сервера
sudo nano /etc/postfix/helo.list
myubuntu.org 550 Don't use my hostname
прохешируем
sudo postmap /etc/postfix/helo.list
14. Задаем сообщение, которое будет выводить Postfix в случае, если отправитель извне будет говорить, что он из нашей сети
sudo nano /etc/postfix/ext_sender
myubuntu.org 450 Do not use my domain in your envelope sender
прохешируем
sudo postmap /etc/postfix/ext_sender
15.
Настраиваем
демон saslauthd для
взаимодействия с Postfix
sudo mkdir -p /var/spool/postfix/var/run/saslauthd
sudo
nano /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"
16. Настраиваем pam-аутентификацию
sudo nano /etc/pam.d/smtp
Пишем
туда следующее:
auth required pam_mysql.so user=mail_admin
passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=user
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=user
passwdcolumn=password crypt=1
17.
Настраиваем
Postfix для
взаимодействия с saslauthd
sudo 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 user =
'%u'
18.
Владельцем
данных файлов должен быть root
sudo
chown root /etc/pam.d/smtp /etc/postfix/sasl/smtpd.conf
19. Редактируем конфигурационный файл
Postfix
sudo nano /etc/postfix/master.cf
Добавляем
следующие строки
dovecot unix - n n - - pipe flags=DRhu
user=virtual:virtual argv=/usr/lib/dovecot/deliver -d ${recipient}
submission inet n - - - - smtpd
-o smtpd_tls_security_level=encrypt
-o
smtpd_sasl_auth_enable=yes
-o
smtpd_sasl_type=dovecot
-o
smtpd_sasl_path=private/auth
-o
smtpd_sasl_security_options=noanonymous
-o
smtpd_sasl_local_domain=$myhostname
-o
smtpd_client_restrictions=permit_sasl_authenticated,reject
-o
smtpd_sender_login_maps=hash:/etc/postfix/virtual
-o
smtpd_sender_restrictions=reject_sender_login_mismatch
-o
smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
smtps inet n - n - - smtpd
-o
syslog_name=postfix/smtps
-o
smtpd_tls_wrappermode=yes
-o
smtpd_sasl_auth_enable=yes
20.
Добавляем
пользователя postfix в группу sasl
sudo adduser postfix sasl
21.
Конфигурируем
Dovecot
sudo nano /etc/dovecot/dovecot.conf
Нужно
убедится в том, что все строки закомментированы и добавить следующее
!include_try /usr/share/dovecot/protocols.d/*.protocol
#Разрешаем авторизацию в plaintext
#Разрешаем авторизацию в plaintext
disable_plaintext_auth = no
# Журнал
будем писать в файл /var/log/dovecot.err
log_path = /var/log/dovecot.err
# Формат даты
и времени для регистрируемых событий
log_timestamp = "%Y-%m-%d %H:%M:%S "
#Включаем
SSL
ssl = yes
ssl_cert =< /etc/dovecot/myubuntu.cert
ssl_key =< /etc/dovecot/myubuntu.key
#Строка
приветствия при ответе сервера
login_greeting
= Dovecot ready.
#Описываем
тип (maildir) и местонахождения почтовых ящиков (/var/spool/mail/%d/%n) %d -
имя сервера, %n - имя пользователя
mail_location = maildir:/var/spool/mail/%d/%n
#Задаем
идентификатор пользователя и группы, с которыми будет работать dovecot
mail_uid = 5000
mail_gid = 5000
mail_privileged_group = mail
valid_chroot_dirs = /var/spool/mail/
#Настраиваем
вывод отладочных сообщений
auth_verbose
= yes
auth_debug = yes
auth_debug_passwords = yes
#Типы допустимых вариантов аутентификации
auth_mechanisms = plain login digest-md5
#Задаем параметры аутентификации
passdb {
driver =
sql
args =
/etc/dovecot/dovecot-sql.conf
}
service auth {
unix_listener
auth-userdb {
mode = 0660
user =
virtual
group =
virtual
}
unix_listener
/var/spool/postfix/private/auth {
mode = 0660
# Assuming
the default Postfix user and group
user =
postfix
group =
postfix
}
}
}
service imap-login {
inet_listener imap {
port = 0
}
port = 0
}
inet_listener imaps {
port = 993
ssl = yes
}
port = 993
ssl = yes
}
}
22.
Настраиваем
параметры соединения с базой данных MySQL
sudo 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
password_query = SELECT email AS user , password FROM
users WHERE (user = '%u') or (email = '%u');
23.
Проверяем
конфигурацию Dovecot
dovecot -a
24.
Создадим
в базе данных MySQL
почтовый домен и два
пользователя
mysql -u root -p
USE mail;
INSERT INTO domains (domain) VALUES ('myubuntu.org');
INSERT INTO users (user, email, password) VALUES
('user1', 'user1@myubuntu.org', ENCRYPT('user1_password'));
INSERT INTO users (user, email, password) VALUES
('user2', 'user2@myubuntu.org', ENCRYPT('user2_password'));
quit
25.
Создадим
сертификат и ключ для SSL
cd /etc/dovecot
sudo openssl req -new -outform PEM -out myubuntu.cert
-newkey rsa:2048 -nodes -keyout myubuntu.key -keyform PEM -days 365 -x509
В итоге
в каталоге /etc/dovecot будет создан сертификат myubuntu.cert и ключ
myubuntu.key
myubuntu.key
26. Владельцем ключа должен быть root
sudo chown root /etc/dovecot/myubuntu.key
27. Перезапускаем saslauthd, dovecot и postfix
sudo service saslauthd restart
sudo service dovecot restart
sudo service postfix restart
в
Thunderbird настройки:
imap
порт 993 имя пользователя user1 SSL/TLS обычный пароль
smtp
порт 465 имя пользователя user1 SSL/TLS обычный пароль
В процессе возникали следующие ошибки:
1. При выполнении команды
telnet localhost smtp в /var/log/mail.log появляется следующее:
Aug 22
14:14:58 ubuntu postfix/smtpd[3095]: connect from localhost[127.0.0.1]
Aug 22
14:14:58 ubuntu postfix/smtpd[3095]: warning: SASL: Connect to
private/auth failed: No such file or directory (или Connection
refused)
Aug 22
14:14:58 ubuntu postfix/smtpd[3095]: fatal: no SASL authentication mechanisms
Aug 22
14:14:59 ubuntu postfix/master[3089]: warning: process /usr/lib/postfix/smtpd
pid 3095 exit status 1
Это говорит о том, что
dovecot не создает сокет /var/spool/postfix/private/auth , используя который
postfix должен осуществлять авторизацию, и не слушает его.
Решение: в файле
конфигурации dovecot /etc/dovecot/dovecot.conf писать не так
socket
listen {
client {
path =
/var/spool/postfix/private/auth
mode = 0666
user =
postfix
group =
postfix
}
}
, а так:
service auth
{
unix_listener
/var/spool/postfix/private/auth {
mode = 0660
user =
postfix
group =
postfix
}
}
2. При попытке отправки
сообщения через Thunderbird в /var/log/mail.log появляется следующее:
ubuntu
postfix/trivial-rewrite[3223]: warning: do not list domain myubuntu.org in BOTH
mydestination and virtual_mailbox_domains
postfix ругается на то, что в файле /etc/postfix/main.cf доменное имя myubuntu.org прописано сразу в двух параметрах: mydestination и virtual_mailbox_domains
Решение: в файле конфигурации postfix /etc/postfix/main.cf в параметре mydestination убрать домен myubuntu.org (у Вас он другой).
3. После отправки сообщения
через Thunderbird к адресату оно не доходит, а в /var/log/dovecot.err
пишется следующее:
lda: Error:
userdb lookup: connect(/var/run/dovecot/auth-userdb) failed: Permission denied
(euid=5000(virtual) egid=5000(virtual) missing +r perm:
/var/run/dovecot/auth-userdb, dir owned by 0:0 mode=0755)
Сокет /var/run/dovecot/auth-userdb имеет владельца root и группу root, права srw-rw----, поэтому пользователь virtual не имеет доступа к сокету.
Решение: для того, чтобы владельцем /var/run/dovecot/auth-userdb был virtual, в конфигурационном файле /etc/dovecot/dovecot.conf добавим следующее:
service auth
{
unix_listener auth-userdb {
mode = 0660
user = virtual
group = virtual
}
}
Немного теории.
В файле
/etc/postfix/main.cf указан параетр virtual_transport = dovecot .
Сам параметр virtual_transport используется для указания того, что будет
использоваться в качестве транспорта доставки почты по умолчанию. Значение
dovecot указывает на строки в файле /etc/postfix/master.cf, а именно:
dovecot unix - n n - - pipe flags=DRhu
user=virtual:virtual argv=/usr/lib/dovecot/deliver -d ${recipient}
, где
dovecot - имя сервиса
unix - тип службы: данная служба прослушивает сокет
UNIX и доступна только для локальных клиентов
- - пустое значение параметра private: будет ли
для службы ограничен доступ к почтовой системе. Т.к. по умолчанию значение
параметра YES, доступ будет ограничен.
n - значение параметра unpriv (unprivileged):
указывает, работает служба с правами суперпользователя или с правами владельца
postfix. Значение по умолчанию YES.
n - значение параметра chroot: указывает, будет ли
служба ограничена каталогом queue_directory, который прописывается в
/etc/postfix/main.cf . Значение по умолчанию YES.
- - пустое значение параметра wakeup:
автоматическое пробуждение службы после заданного количества секунд.
Пробуждение осуществляется путем подключения к службе и отправки wake up
запроса. Значение по умолчанию 0, т.е. автоматическое пробуждение отключено.
- - пустое значение параметра maxproc:
максимальное количество процессов, которые могут обращаться к службе
одновременно. Значение по умолчанию 100.
pipe flags=DRhu
user=virtual:virtual argv=/usr/lib/dovecot/deliver -d ${recipient} - значение параметра command + args : команда,
которая будет выполнена. Имя команды указывается относительно каталога демона
postfix, который можно задать с помощью параметра daemon_directory. Флаги:
D - запускать службу под
контролем команды, указанной в параметре debugger_command в файле main.cf .
остальное смотреть в
мануалах к службам.
Если данная инструкция оказалась полезной для вас, напишите, пожалуйста, об этом в комментарии.
Если данная инструкция оказалась полезной для вас, напишите, пожалуйста, об этом в комментарии.
Что-то замечательное :) Буду пробовать :)
ОтветитьУдалитьА то у меня чего-то авторизация не хочет появляться в опциях smtp auth...
Сразу в глаза бросилось, что параметр
#Описываем авторизацию по SMTP для клиентов не из доверенной зоны
smtpd_sasl_auth_enable = no
Указан в двух местах как yes и no (победил yes, но можно перепутать).
Исправил.
УдалитьПока не поставил
ОтветитьУдалитьdovecot-imapd
Не было файла
root@maria-laptop:/etc# ls /usr/lib/dovecot/imap
/usr/lib/dovecot/imap
И, соответственно:
dovecot -F
Fatal: service(imap) access(/usr/lib/dovecot/imap) failed: No such file or directory
Благодарю. Внес исправления.
УдалитьВ месте, где ставим saslauthd - в ubuntu 12.04 на самом деле
ОтветитьУдалитьapt-get install sasl2-bin
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
db-util db5.1-util
НОВЫЕ пакеты, которые будут установлены:
db-util db5.1-util sasl2-bin
Спасибо. Исправил.
УдалитьДобрый день, начал прикручивать SSL? выдает ошибку!
ОтветитьУдалитьа вообще статья супер)
Nov 7 15:13:14 mail postfix/smtps/smtpd[9830]: connect from unknown[192.168.100.81]
Nov 7 15:13:14 mail postfix/smtps/smtpd[9830]: Anonymous TLS connection established fr
om unknown[192.168.100.81]: TLSv1 with cipher AES128-SHA (128/128 bits)
Nov 7 15:13:14 mail postfix/smtps/smtpd[9830]: NOQUEUE: reject: RCPT from unknown[192.
168.100.81]: 554 5.7.1 : Client host rejected: Access denied;
from= to= proto=ESMTP helo=
Nov 7 15:13:14 mail postfix/smtps/smtpd[9830]: disconnect from unknown[192...
Может быть потому, что ssl = no ?
УдалитьДоброго времени. Огромная благодарность за статью! Все супер и не так сложно. Возникла только одна проблема. При отправке писем на сервера не моего домена возвращаются письма с отказами от доменов получателей. Куда копнуть?
ОтветитьУдалитьРазобрался. Не корректна rdns запись. Над обращаться к прову для редактирования реверсивной dns иначе другие сервера отбрасывают письма из-за невозможности проверить запись.
Удалитьdoveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:1: 'imaps' protocol is no longer supported. to disable non-ssl imap, use service imap-login { inet_listener imap { port=0 } }
ОтветитьУдалитьДошел до настройки аккаунтов, и вот....
ОтветитьУдалитьWelcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.5.29-0ubuntu0.12.04.1 (Ubuntu)
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> USE mail;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> INSERT INTO domains (domain) VALUES ('POCHTA.ru');
ERROR 1062 (23000): Duplicate entry 'POCHTA.ru' for key 'PRIMARY'
ну с этим понятно, второй раз пытаюсь добавить такой же домен
mysql> INSERT INTO users (email, password) VALUES ('direct@POCHTA.ru', ENCRYPT('1boss1'));
ERROR 1146 (42S02): Table 'mail.users' doesn't exist
а тут?
куда могла деться таблица? и где ее искать?
mysql>
перезагрузки рестарты не помогли
Не знаю, где ее искать. Если он говорит, что ERROR 1146 (42S02): Table 'mail.users' doesn't exist
Удалитьзначит таблицы действительно нет. Возьми и создай.
mysql> INSERT INTO users (user,email, password) VALUES ('direct', 'direct@POCHTA.ru', ENCRYPT('1boss1'));
спасибо за статью, из всего что прочитал более менее действенные рекомендации
ОтветитьУдалитьВ моей версии dovecpt пришлось вписывать в /etc/dovecot/pass не $user:$hash а $user@$domain:$hash
ОтветитьУдалитьто есть еще и домен вписывать - это особенность версии или я ошибся ?
Кроме того в статье явно не хватает пункта проверки через телнет - ну я вот такой маньяк, что провелял так:
telnet 127.0.0.1 110
user мой_юзверь
pass мой_пароль
Просто именно тут я понял что dovecot авторизует именно user'а а не user@domain.com
А может быть почтовый клиент передавал в качестве логина user@domain, и из-за этого пришлось дописывать домен в /etc/dovecot/pass ?
УдалитьМожет быть, я не знаю как правильно, мои пляски с этим начались после того, как у меня не авторизовывался thunderbird, и стал пробовать telnet'Ом.
УдалитьПопробую позже прописать в pass имена без доменов и проверю - будет ли авторизовывать thunderbird.
Для тех, как я, кто хочет в конфиге довкота указать полный путь к сертификатам, указывать нужно так:
ОтветитьУдалитьssl_cert = <
Исправил. Большое спасибо.
УдалитьА для тех кто хочет заюзать шифрованное соедние для smtp (у меня в арче так работает) нужно сделать так:
ОтветитьУдалитьв master.cf расскоментировать эти строки:
smtps inet n - n - - smtpd
# -o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
в main.cf добавить
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /opt/cert/post.key
smtpd_tls_cert_file = /opt/cert/arch.cert
где post.key и arch.cert - это ключ и сертификат, которые использует довкот.
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 1s
tls_random_source = dev:/dev/urandom[root@vps0-1 ~]#
Большое спасибо, добавил в статью.
УдалитьСпасибо за статью. Очень помогла!
ОтветитьУдалитьдля тех кто хочет выборочно включать pop3/imap/pop3s/imaps
ОтветитьУдалитьhttp://pastebin.com/5YyTrczE
тут нужно править port = xxx
укажите 0, чтобы отключить ненужный вам протокол.
Или укажите число отличное, от стандартных, чтобы протоколы работали на не стандартных портах :)
Здарвствуйте! Здесь не говорится о MX. Он нужен или нет, чтоб был связь с инетом?
ОтветитьУдалитьнужен
Удалитьа как его настроить?
Удалитькак я ВАМ благодарен, я уже вторые сутки бился в бестолку, и вот ваша статья просто для меня мана с неба =)
ОтветитьУдалитьИз огромного кол-ва мусора в инете на тему Postfix+dovecot+mysql, реально ТОЛКОВАЯ СТАТЬЯ. Так держать!!!
ОтветитьУдалитьа никто не знает, как выполнить некий скрипт при получении письма с заданным заголовком конкретному пользователю?
ОтветитьУдалитьСпасибо, действительно статья ценная, добавил в закладки.
ОтветитьУдалитьАвтор красава, неделю искал такой ман.
Респект!
Подскажите можно ли без бд сделать на несколько доменов. У каждого просто будет пару учеток не хочется городить бд. Да и ssl мне не требуется.
ОтветитьУдалитьможно:
ОтветитьУдалитьизменить dovecot.conf с
mail_location = maildir:/var/spool/mail/myubuntu.org/%n
на
mail_location = maildir:/var/spool/mail/%d/%n
Убил целый день, в общем postfix 2.10.0 как не рыпался - аутентификация проводится, но на попытку отправить - relay access denied, в общем в новых версиях надо вместо smtpd_recipient_restrictions используется smtpd_relay_restrictions, на всякий случай в конфиге оставил оба параметра.
ОтветитьУдалитьНарод, помогите, пожалуйста.
ОтветитьУдалитьделал вроде все по инструкции, исходящие уходят, а входящие не проходят. в чем может быть проблема, второй день мучаюсь.
на всякий:
deynega.a@gmail.com
Всем привет,
ОтветитьУдалитьпоясните почему в пункте 21:
21. Редактируем файл алиасов почтовых ящиков
sudo gedit /etc/postfix/virtual
Пишем:
user3@myubuntu.org user1@myubuntu.org
?
А не
user1@myubuntu.org user1@myubuntu.org
или
user3@myubuntu.org user3@myubuntu.org
?
Всем большое спасибо!
кстати, ЭТО ВЕРНО!
Удалитья долго голову ломал, почему почта не уходила. ошибка была:
553 5.7.1 adress rejected: not owned by user bla bla bla
РЕШЕНИЕ
/etc/postfix/virtual нужно прописывать все ящики созданные в базе mysql
user1@myubuntu.org user1@myubuntu.org
хорошая статья, проверено, все работает!
УдалитьПотому что user3@myubuntu.org - это алиас реально существующего ящика user1@myubuntu.org
УдалитьДа не надо в /etc/postfix/virtual прописывать все ящики созданные в базе mysql . Данные о почтовых ящиках берутся только из базы данных mysql.
УдалитьДействительно работает и без прописывания почтовых ящиков в /etc/postfix/virtual
УдалитьНо есть интересный эффект. Без прописывания, в тандербёрд письмо почему-то приходит в папку спам, а если прописать то во "входящие"...
Автор, Спасибо за толковую статью! Её бы копию на opennet.ru и хабр выложить.
ОтветитьУдалитьВсе работает! Спасибо за столь подробный мануал!! Три дня наверно настравивал все это дело))
ОтветитьУдалитьБыли проблемы с правами доступа при использовании этой директории:
mail_location = maildir:/var/spool/mail/myubuntu.org/%n (и в других директивах где встречается этот путь)
Заменил на
mail_location = maildir:/var/mail/myubuntu.org/%n
и все стало работать идеально
Были проблемы с настройкой Тандербёрд.
Но в конечном счете настроил прием почты на 993 порт, а отправку на 465 причем в обоих случаях с использованием SSL (а не STARTTLS как рекомендовалось в статье) только при таком раскладе все заработало!
Ну и пришлось открыть (пробросить) внешние порты 25 и 465.
Еще раз спасибо! Очень помогли!!!
Спасибо за помощь. Внес исправления.
Удалитьчто то телнет не может достучаться до сервера. поднял убунту серв, установил postfix и dovecot. открыл порты 25 и 110 input-ом и forward-ом. но попытки тчетны. помогите советом...
ОтветитьУдалитьНадо бы сначала на самом сервере проверить, работает ли Postfix с Dovecot'ом , логи их посмотреть. Вообще попробуй сделать все сначала по новой инструкции.
УдалитьПри рестарте postfix выходит ошибка
Удалить/usr/sbin/postconf: fatal: file /etc/postfix/master.cf line 115 bad filed count
cannot execute /usr/sbin/postconf !
и в dovecot выходит строка 107 '=' exception
Смотри логи.
УдалитьПривет.
ОтветитьУдалитьСделал все по инструкции, работает все кроме одного. Отправить почту через веб-клиент на этой же машине получается без проблем, а вот удаленно через Thunderbird - нет. Клиент выдает сообщение: "Почтовый сервер ответил: 4.3.0 : Temporary lookup failure."
В логе /var/log/mail.log следующие сообщения:
Feb 9 01:21:18 host postfix/smtpd[12589]: Anonymous TLS connection established from unknown[x.x.x.x]: TLSv1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)
Feb 9 01:21:19 host postfix/smtpd[12589]: warning: hash:/etc/postfix/virtual is unavailable. open database /etc/postfix/virtual.db: No such file or directory
Feb 9 01:21:19 host postfix/smtpd[12589]: warning: hash:/etc/postfix/virtual lookup error for "user@host.com"
Feb 9 01:21:19 host postfix/smtpd[12589]: NOQUEUE: reject: RCPT from unknown[x.x.x.x]: 451 4.3.0 : Temporary lookup failure; from= to= proto=ESMTP helo=
В чем может быть дело?
Снова выполните пункты 13 и 14 данной инструкции.
УдалитьВ инструкции нет пункта в котором описывается создание файлв /etc/postfix/virtual
УдалитьПожалуйста поясните.
При попытке настроить Thunderbird на хосте бесконечно идет "поиск конфигурацииЖ идет проверка сервера". В журнале ошибок /var/log/mail.log:
ОтветитьУдалитьApr 6 19:43:36 main postfix/smtps/smtpd[5025]: Anonymous TLS connection established from main.rabbitohs.cz.cc[192.168.1.186]: TLSv1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)
Apr 6 19:43:36 main postfix/smtps/smtpd[5025]: warning: TLS library problem: 5025:error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:s3_pkt.c:1256:SSL alert number 48:
Apr 6 19:43:36 main postfix/smtps/smtpd[5025]: lost connection after CONNECT from main.rabbitohs.cz.cc[192.168.1.186]
В принципе было бы не плохо добавить к статье настройку roundcube что бы так сказать полностью решить вопрос с почтой.
ОтветитьУдалитьПо rouncube:
$rcmail_config['default_host'] = 'ssl://localhost';
$rcmail_config['default_port'] = 993;
$rcmail_config['imap_auth_type'] = 'PLAIN';
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_auth_type'] = 'PLAIN';
Спасибо автору за статью, настроил исключительно по его мануалу.
Вот такая проблема возникает - помогите, плз
ОтветитьУдалитьApr 23 20:00:19 mail postfix/smtps/smtpd[3784]: connect from unknown[5.19.252.235]
Apr 23 20:00:20 mail postfix/smtps/smtpd[3784]: Anonymous TLS connection established from unknown[5.19.252.235]: TLSv1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)
Apr 23 20:00:20 mail postfix/smtps/smtpd[3784]: warning: TLS library problem: 3784:error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:s3_pkt.c:1256:SSL alert number 48:
Apr 23 20:00:20 mail postfix/smtps/smtpd[3784]: lost connection after CONNECT from unknown[5.19.252.235]
Apr 23 20:00:20 mail postfix/smtps/smtpd[3784]: disconnect from unknown[5.19.252.235]
При попытках подключиться из Thunderbird. В самос Thunderbird пишет, что thunderbird failed to find settings for your email account
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьВсем привет!
ОтветитьУдалитьВозникла проблема, выполнив все действия указанные в данной инструкции, но при настройке Thunderbird , он мне пишет что "Thunderbird не удалось найти настройки для вашей учетной записи почты"
С клиентской машины, где установлен почтовый клиент: проходит ping до ubuntu.myubuntu.org, проходит telnet ubuntu.myubuntu.org 993 и 465
, где можно найти эти настройки и что может способствовать решению данной проблемы?
Спасибо)
Вот как это выглядит - http://hkar.ru/sHFm
УдалитьВопрос с альясами. Как правильно писать в базу альяс (для копирования, а не редиректа) почты с локального ящика на другие адреса?
ОтветитьУдалитьПомогите пожалуйста, все делал по статье, но потом вот такая штука получается, уже два дня не могу понять в чем дело:
ОтветитьУдалитьOct 31 16:17:03 proxyub postfix/smtps/smtpd[6635]: connect from unknown[192.168.12.212]
Oct 31 16:17:03 proxyub postfix/smtps/smtpd[6635]: Anonymous TLS connection established from unknown[192.168.12.212]: TLSv1.2 with cipher ECDHE-$
Oct 31 16:17:13 proxyub postfix/smtps/smtpd[6635]: fatal: no SASL authentication mechanisms
Oct 31 16:17:14 proxyub postfix/master[5815]: warning: process /usr/lib/postfix/smtpd pid 6635 exit status 1
Oct 31 16:17:14 proxyub postfix/master[5815]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling
Причем все механизмы кодирования и декодирования во всех файлах указаны((((
и вот еще с лога
2014-10-31 16:45:33 auth: Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_mysql.so
2014-10-31 16:45:33 auth: Fatal: mysql: Missing value in connect string: default_pass_scheme
2014-10-31 16:45:33 master: Error: service(auth): command startup failed, throttling for 60 secs
2014-10-31 16:45:33 imap-login: Info: Disconnected: Auth process broken (disconnected before auth was ready, waited 0 secs): user=<>, rip=192.16$
нашли решение?
УдалитьПеределал конфиги, на 25 порту Connection refused
ОтветитьУдалитьмне помогло добавить в dovecot.conf строчку:
Удалитьlisten = *