I. Для
начала поднимем почтовый сервер с авторизацией по паролю, пароли будут
храниться в текстовом файле. Тип почтовых ящиков - maildir.
1.Установим Postfix и
Dovecot:
sudo apt-get
install postfix dovecot-common dovecot-imapd
Отказываемся от предложенных
вариантов настроек postfix, т.е. выбираем вариант "Без конфигурации" (No configuration).
2. Создаем основной файл
конфигурации Postfix:
sudo touch
/etc/postfix/main.cf
3. Редактируем его:
sudo gedit
/etc/postfix/main.cf
#Так наш
сервер будет представляться при отправке и получении почты
smtpd_banner
= $myhostname ESMTP (Ubuntu)
#Отключаем
использование comsat
biff = no
#Запрещаем
автоматически дополнять неполное доменное имя в адресе письма
append_dot_mydomain
= no
#Указываем
каталог очереди для Postfix
queue_directory
= /var/spool/postfix
#Указываем
имя нашего хоста
myhostname =
ubuntu.myubuntu.org
# Указываем
файл с превдонимами почтовых ящиков
alias_maps =
hash:/etc/postfix/aliases
#Указываем,
для каких доменов будем принимать почту
mydestination
= localhost
#Указываем
список доверенных подсетей
#mynetworks
= 127.0.0.0/8
# Не будем
устанавливать лимит на размер почтовых ящиков
mailbox_size_limit
= 0
recipient_delimiter
= +
#Указываем
прослушивание на всех подсетях
inet_interfaces
= all
#Указываем
обязательность использование клиентами команды helo
smtpd_helo_required
= yes
#Далее идет
настройка ограничений для приема почты
#Принимаем
всю почту от нашей доверенной подсети
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
#Проверяем, не
представились ли нами самими
#check_helo_access
= hash:/etc/postfix/helo.list,
#Если
отправитель письма из внешнего мира представляется, что он из нашего домена -
отвергаем письмо
#check_sender_access
= hash:/etc/postfix/ext_sender,
#Отвергаем
письмо, если получатель не входит в нашу зону ответственности
#reject_unauth_destination
= yes,
#Отклоняем
письма от неизвестных доменов
#reject_unknown_sender_domain
= yes,
#Отклоняем
письма для неизвестных доменов
#reject_unknown_recipient_domain
= yes,
#Отклоняем
письма для пользователей с неполным именем домена
#reject_non_fqdn_recipient
= yes,
#Отклоняем
письма от отправителей с неполным именем домена
#reject_non_fqdn_sender
= yes,
#Отвергаем
сообщения от любого клиента, не предоставившего полностью определенное доменное
имя хоста
#reject_non_fqdn_hostname
= yes,
#Отвергаем
сообщение, если в команде helo неправильно сформировано имя домена
#reject_invalid_hostname
= yes,
#Отвергаем сообщения,
если клиент представился неизвестным именем хоста
#reject_unknown_hostname
= yes
4. Создаем
sudo touch
/etc/postfix/helo.list
5. Редактируем
sudo gedit
/etc/postfix/helo.list
Пишем:
myubuntu.org
550 Don't use my hostname
6. Прохешируем его:
sudo postmap
/etc/postfix/helo.list
7. Создаем
sudo touch
/etc/postfix/ext_sender
8. Редактируем
sudo gedit
/etc/postfix/ext_sender
Пишем:
myubuntu.org
450 Do not use my domain in your envelope sender
9. Прохешируем его:
sudo postmap
/etc/postfix/ext_sender
10. Создадим файл псевдонимов:
sudo touch
/etc/postfix/aliases
11. Редактируем файл псевдонимов
sudo gedit
/etc/postfix/aliases
запишем туда:
postmaster
root
12. Прохешируем его:
sudo postmap
/etc/postfix/aliases
---настройка
dovecot---
13. Редактируем
конфигурационный файл dovecot
sudo gedit
/etc/dovecot/dovecot.conf
Пишем:
#Описываем
поддерживаемые протоколы, pop3 не будем использовать
protocols =
imap
#Разрешаем
авторизацию в plaintext
disable_plaintext_auth
= no
#Описываем логирование
# Каталог
log_path =
/var/log/dovecot.err
# Формат
даты и времени для регистрируемых событий
log_timestamp
= "%Y-%m-%d %H:%M:%S "
#Отключаем
SSL
ssl = no
#Строка
приветствия при ответе сервера
login_greeting
= Dovecot ready.
#Описываем
тип (maildir) и местонахождения почтовых ящиков (/var/spool/mail/%d/%n) %d -
имя сервера, %n - имя пользователя
mail_location
= maildir:/var/spool/mail/myubuntu.org/%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 = passwd-file
#
Each domain has a separate passwd-file:
args
= /etc/dovecot/pass
}
# Для
того, чтобы postfix мог использовать авторизацию через dovecot
service auth
{
unix_listener /var/spool/postfix/private/auth
{
mode = 0660
# Assuming the default Postfix user
and group
user = postfix
group = postfix
}
}
15. Добавляем в систему пользователя
virtual и группу virtual
sudo groupadd -g 5000 virtual
sudo useradd
-g virtual -u 5000 virtual
16. Создадим каталог, где
будут размещаться почтовые ящики пользователей:
sudo mkdir
/var/spool/mail/myubuntu.org
sudo chown
virtual:virtual /var/spool/mail/myubuntu.org
sudo chmod
770 /var/spool/mail/myubuntu.org
17. Редактируем конфигурационный файл postfix
sudo gedit
/etc/postfix/master.cf
добавляем одну! строку:
dovecot unix
- n n - - pipe flags=DRhu
user=virtual:virtual argv=/usr/local/libexec/dovecot/deliver -d ${recipient}
18. Редактируем конфигурационный файл postfix
sudo gedit
/etc/postfix/main.cf
добавляем:
#Описываем
доступ к локальным почтовым ящикам
virtual_mailbox_domains
= myubuntu.org
virtual_mailbox_base
= /var/spool/mail
virtual_mailbox_maps
= hash:/etc/postfix/vmailbox
virtual_minimum_uid
= 100
virtual_uid_maps
= static:5000
virtual_gid_maps
= static:5000
virtual_alias_maps
= hash:/etc/postfix/virtual
home_mailbox
= Maildir/
local_recipient_maps
= $virtual_mailbox_maps
#Описываем
авторизацию по SMTP для клиентов не из
доверенной зоны
smtpd_sasl_auth_enable
= yes
smtpd_sasl_type
= dovecot
smtpd_sasl_path
= private/auth
smtpd_sasl_security_options
= noanonymous
#broken_sasl_auth_clients
= yes
19. Создаем файлы
sudo touch
/etc/postfix/vmailbox
sudo touch
/etc/postfix/virtual
20. Редактируем
sudo gedit
/etc/postfix/vmailbox
Пишем:
user1@myubuntu.org
myubuntu.org/user1/
user2@myubuntu.org
myubuntu.org/user2/
21. Редактируем файл алиасов почтовых ящиков
sudo gedit
/etc/postfix/virtual
Пишем:
user3@myubuntu.org user1@myubuntu.org
22. Перечитываем файлы конфигурации
sudo postmap
/etc/postfix/virtual
sudo postmap
/etc/postfix/vmailbox
23. Перезапускаем postfix:
sudo service
postfix restart
24. Создаем файл, в котором
будут расположены пользователи почтового сервера и их пароли:
sudo touch
/etc/dovecot/pass
Далее получаем хеш для
паролей пользователей:
doveadm pw
-s SHA512-CRYPT -u user1@myubuntu.org
примерный результат после
ввода пароля "123":
{SHA512-CRYPT}$6$7x.iFM/rgVFg7AWV$VFGPXrviBHwvvJ.mVrz/pZVroc76QaAWBtbGohL6ckubUXFeZopucICgQ.y4hrc0EpPDcbNedwKKa0o4JjOmN0
doveadm pw
-s SHA512-CRYPT -u user2@myubuntu.org
примерный результат после
ввода пароля "456":
{SHA512-CRYPT}$6$AV5kfwlyUPSjOrN.$6tv4iKIqWrgpVQKwy4pl09p4eEvrYv4ttk1rSErhS48XwFKQb/qUCwFIBswTjc/OxDQX.vQLOGZ.2FSaySbmu/
25. Записываем полученные
хеши в /etc/dovecot/pass:
sudo gedit
/etc/dovecot/pass
Пишем две! строки:
user1:{SHA512-CRYPT}$6$7x.iFM/rgVFg7AWV$VFGPXrviBHwvvJ.mVrz/pZVroc76QaAWBtbGohL6ckubUXFeZopucICgQ.y4hrc0EpPDcbNedwKKa0o4JjOmN0
user2:{SHA512-CRYPT}$6$AV5kfwlyUPSjOrN.$6tv4iKIqWrgpVQKwy4pl09p4eEvrYv4ttk1rSErhS48XwFKQb/qUCwFIBswTjc/OxDQX.vQLOGZ.2FSaySbmu/
26. Настройка завершена.
Приведу получившиеся файлы конфигурации Postfix и Dovecot:
/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
= myubuntu.org
virtual_mailbox_base
= /var/spool/mail
virtual_mailbox_maps
= hash:/etc/postfix/vmailbox
virtual_minimum_uid
= 100
virtual_uid_maps
= static:5000
virtual_gid_maps
= static:5000
virtual_alias_maps
= hash:/etc/postfix/virtual
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
/etc/postfix/master.cf :
# service
type private unpriv chroot wakeup maxproc command +
args
#
(yes) (yes) (yes) (never) (100)
#
smtp
inet n
- -
- -
smtpd
#628 inet
n -
- -
- qmqpd
pickup
fifo n
- -
60 1 pickup
cleanup
unix n
- -
- 0
cleanup
qmgr
fifo n
- n
300 1 qmgr
#qmgr
fifo n
- n
300 1 oqmgr
tlsmgr
unix -
- -
1000? 1 tlsmgr
rewrite
unix -
- -
- -
trivial-rewrite
bounce
unix -
- -
- 0
bounce
defer
unix -
- -
- 0
bounce
trace
unix -
- -
- 0
bounce
verify
unix -
- -
- 1
verify
flush
unix n
- -
1000? 0 flush
proxymap
unix -
- n
- -
proxymap
proxywrite
unix -
- n
- 1
proxymap
smtp
unix -
- -
- -
smtp
relay
unix -
- -
- -
smtp
#
-o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq
unix n
- -
- -
showq
error
unix -
- -
- -
error
retry
unix -
- -
- -
error
discard
unix -
- -
- -
discard
local
unix -
n n
- -
local
virtual
unix -
n n
- -
virtual
lmtp
unix -
- -
- -
lmtp
anvil
unix -
- -
- 1
anvil
scache
unix -
- -
- 1
scache
maildrop
unix -
n n
- -
pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp
unix - n
n -
- pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail
unix -
n n
- -
pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp
unix -
n n
- -
pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend
unix - n n
- 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop}
${user} ${extension}
mailman
unix -
n n
- -
pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
dovecot
unix - n n - - pipe flags=DRhu user=virtual:virtual argv=/usr/local/libexec/dovecot/deliver
-d ${recipient}
/etc/dovecot/dovecot.conf :
#Описываем
поддерживаемые протоколы, pop3 не будем использовать
protocols =
imap
#Разрешаем
авторизацию в plaintext
disable_plaintext_auth
= no
#Описываем логирование
# Каталог
log_path =
/var/log/dovecot.err
# Формат
даты и времени для регистрируемых событий
log_timestamp
= "%Y-%m-%d %H:%M:%S "
#Отключаем
SSL
ssl = no
#Строка
приветствия при ответе сервера
login_greeting
= Dovecot ready.
#Описываем
тип (maildir) и местонахождения почтовых ящиков (/var/spool/mail/%d/%n) %d -
имя сервера, %n - имя пользователя
mail_location
= maildir:/var/spool/mail/myubuntu.org/%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 = passwd-file
#
Each domain has a separate passwd-file:
args
= /etc/dovecot/pass
}
service auth
{
unix_listener /var/spool/postfix/private/auth {
mode = 0660
# Assuming the default Postfix user and group
user = postfix
group = postfix
}
}
27. Проверку конфигурации dovecot можно выполнить командой doveconf -a . Если выводится данные конфигурации dovecot, значит все
в норме. В противном случае будет выделено сообщение с указанием ошибки.
Для проверки можно
попробовать подключиться через telnet:
для проверки postfix:
telnet
localhost smtp
В результате должно
появиться примерно следующее:
Trying
127.0.0.1...
Connected to
localhost.
Escape
character is '^]'.
220 имя хоста ESMTP (Ubuntu)
Для проверки dovecot:
telnet
localhost imap
В результате должно появиться примерно следующее:
Trying
127.0.0.1...
Connected to
localhost.
Escape
character is '^]'.
* OK
[CAPABILITY] IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERALS ID ENABLE IDLE
AUTH=PLAIN AUTH=LOGIN AUTH=DIGEST-MD5] Dovecot ready.
28. Для проверки на реальном
клиенте установим Mozilla Thunderbird:
sudo apt-get
install thunderbird
При добавлении в Thunderbird
учетной записи, к примеру, user1 задаем следующие данные:
Your Name: user1
Email address: user1@myubuntu.org
Password: пароль
Incoming: IMAP, Server Hostname: имя нашего хоста (к примеру, localhost), Port: 143, SSL: None,
Authentification: normal password
Outcoming: SMTP, Server Hostname: имя нашего хоста (к примеру, localhost), Port: 25, SSL: None,
Authentification: normal password
Далее можно попробовать
через Thunderbird написать письмо по адресу user2@myubuntu.org или
user3@myubuntu.org (в этом случае письмо должно прийти пользователю user1, т.к.
user3@myubuntu.org есть псевдоним для user1@myubuntu.org)
Теперь попробуем использовать mysql для хранения данных о почтовых ящиках,
учетных записей пользователей и их паролей.
1. Устанавливаем MySQL и др.
sudo apt-get
install mysql-server mysql-client postfix-mysql dovecot-mysql sasl2-bin
После установки MySQL задайте пароль для суперпользователя (root) MySQL.
2. Входим в 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
3. Проверим, что MySQL
связана с localhost (127.0.0.1). Для этого откроем файл /etc/mysql/my.cnf и найдем следующую строку:
bind-address
= 127.0.0.1
4. Начинаем настройку
Postfix для работы с MySQL. Создаем конфигурационные файлы:
файл для работы с почтовыми
доменами Postfix:
sudo touch
/etc/postfix/mysql-virtual_domains.cf
sudo gedit /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
файл для настройки пересылки
почты с ящика на ящик:
sudo touch
/etc/postfix/mysql-virtual_forwardings.cf
sudo gedit
/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
файл для работы с почтовыми
аккаунтами:
sudo touch
/etc/postfix/mysql-virtual_mailboxes.cf
sudo gedit
/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
вспомогательный файл для
виртуального отображения почты:
sudo touch
/etc/postfix/mysql-virtual_email2email.cf
sudo gedit
/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
5. Установим нужные
права и владельца на только что созданные файлы:
sudo chmod o=
/etc/postfix/mysql-virtual_*.cf
sudo chgrp postfix /etc/postfix/mysql-virtual_*.cf
6. Редактируем файл /etc/postfix/main.cf:
sudo gedit
/etc/postfix/main.cf
закомментируем строки:
virtual_mailbox_domains
= myubuntu.org
virtual_mailbox_maps
= hash:/etc/postfix/vmailbox
virtual_alias_maps
= hash:/etc/postfix/virtual
и добавим:
virtual_mailbox_domains
= proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps
= proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_alias_maps
= proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf,
mysql:/etc/postfix/mysql-virtual_email2email.cf
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
7. Настройка saslauthd для доступа
к MySQL.
sudo mkdir -p
/var/spool/postfix/var/run/saslauthd
sudo gedit /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"
8. Создаем файл и редактируем его
sudo touch
/etc/pam.d/smtp
sudo gedit
/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
9. Создаем файл и редактируем
его
sudo touch
/etc/postfix/sasl/smtpd.conf
sudo gedit
/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'
10.
sudo chmod o=
/etc/pam.d/smtp
sudo chmod o= /etc/postfix/sasl/smtpd.conf
10.1
sudo gedit
/etc/postfix/master.cf
вместо
dovecot unix
- n n - - pipe flags=DRhu user=virtual:virtual
argv=/usr/local/libexec/dovecot/deliver -d ${recipient}
пишем
dovecot unix
- n n - - pipe flags=DRhu user=virtual:virtual argv=/usr/lib/dovecot/deliver -d
${recipient}
11. Добавляем пользователя
sudo adduser postfix sasl
Перезапускаем postfix и saslauthd
sudo service
postfix restart
sudo service saslauthd restart
12. Настройка dovecot.
sudo gedit
/etc/dovecot/dovecot.conf
закомментируем строки
passdb {
driver
= passwd-file
Each
domain has a separate passwd-file:
args =
/etc/dovecot/pass
}
и добавим
passdb {
driver
= sql
args =
/etc/dovecot/dovecot-sql.conf
}
service auth
{
unix_listener auth-userdb {
mode = 0660
user = virtual
group = virtual
}
}
13.
sudo gedit
/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');
14. -
15. Перезапускаем Dovecot
sudo service
dovecot restart
16.Настройка почтовых
доменов и аккаунтов. Создадим в базе данных домен myubuntu.org и два почтовых ящика: user1@myubuntu.org и user2@myubuntu.org
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
17. Теперь прикрутим SSL. Сначала сгенерируем сертификат. Пусть он будет лежать в /etc/dovecot. Итак:
cd /etc/dovecot
openssl req -new -outform PEM -out myubuntu.cert -newkey rsa:2048 -nodes -keyout myubuntu.key -keyform PEM -days 365 -x509
,где
365 - количество дней, в течение которых действителен сертификат.
В итоге в каталоге /etc/dovecot будет создан сертификат
myubuntu.cert и ключ
myubuntu.key
18. sudo
chmod o= /etc/dovecot/
myubuntu
.key
19. Изменим конфигурационный файл dovecot:
sudo gedit /etc/dovecot/dovecot.conf
вместо
#Отключаем SSL
ssl =no
пишем
#Включаем SSL
ssl = yes
ssl_cert =< /etc/dovecot/myubuntu.cert
ssl_key =<
/etc/dovecot/myubuntu
.key
и еще вместо
protocols = imap
пишем
protocols = imaps
для того, чтобы соединение шло только через ssl
20. Изменим конфигурационный файл postfix:
gedit /etc/postfix/master.cf
добавим
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
21. Перезупаскаем postfix, saslauthd и dovecot:
sudo service saslauthd restart
sudo service dovecot restart
sudo service
postfix restart
22. В Thunderbird изменяем настройки аккаунта: Edit > Account settings... > Server Settings > Connection Security: SSL/TLS
23. После этого Thunderbird предложит принять сертификат.
24. Теперь последнее - сделаем так, чтобы postfix тоже использовал шифрование. Редактируем файл конфигурации postfix:
sudo gedit /etc/postfix/master.cf
раскомментируем строки
#smtps inet n - n - - smtpd
# -o syslog_name=postfix/smtps
#-o smtpd_tls_wrappermode=yes
#-o smtpd_sasl_auth_enable=yes
25. Далее правим /etc/postfix/main.cf:
sudo gedit /etc/postfix/main.cf
В конец файла добавляем
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
, где myubuntu.key и myubuntu.cert - те же сертификат и ключ, которые использует dovecot.
26. Перезапускаем postfix:
sudo service postfix restart
27. В Thunderbird изменяем настройки SMTP-сервера: Edit > Account settings... > Outgoing server (SMTP) > Edit > Connection Security: STARTTLS
Конец. Если настоящая инструкция Вам помогла, пожалуйста, напишите об этом в комментарии. Ваши предложения и замечания также помогут в ее совершенствовании.