Установка Postfix Ubuntu с Dovecot

Postfix - это один из самых популярных почтовых серверов, который используется для отправки, приема и пересылки почты в различных системах. Очень часто Postfix используют в качестве почтового сервера по умолчанию для веб-сайтов, поскольку он поддерживает все необходимые функции и несложен в настройке, в отличие от SendMail.

В этой статье мы рассмотрим, как выполняется установка Postfix Ubuntu 20.04. Хотя статья ориентирована именно на Ubuntu, но, вся информация может быть применена и для других дистрибутивов. Раньше на этом месте была другая статья, она была более обширная, но и более сложная. Я решил сделать её проще.


Установка Postfix в Ubuntu 20.04

1. Настройка DNS зоны

Вы не сможете заставить все это работать на локальной машине, без привязанного к ней домена. И на сервере со статическим IP нужно сначала правильно настроить доменную зону. Это очень важно.

Вам нужно чтобы A и MX записи вашего домена указывали на IP адрес вашего сервера. Обычно это можно настроить в панели управления доменом. На обновление доменной зоны может уйти 1-2 дня. Например, в данной статье я буду использовать домен vps.losst.ru. A запись будет выглядеть вот так:

vps A 185.117.155.209

В данном случае надо писать только поддомен. А В MX записи для корневого домена следует указывать знак @. Но для поддомена надо указать этот поддомен:

vps MX vps.losst.ru.

2. Настройка имени хоста

Дальше вам нужно правильно настроить доменное на вашем VPS. FQDN (Fully Qualified Domain Name) должно состоять из имени хоста и зарегистрированного доменного имени. Сначала установим имя хоста с помощью hostnamectl. Например:

sudo hostnamectl set-hostname vps

 

Затем нужно добавить строчку с именем домена FQDN в файл /etc/hosts. Обратите внимание, что если у вас есть другие домены, то нужный надо расположить в самом верху. Здесь нужно указать ваш статический адрес, имя хоста и зарегистрированный домен:

sudo vi /etc/hosts

 

185.117.155.209 vps.losst.ru vps

Теперь у вас есть FQDN, который будет использоваться почтовым сервером. Переходим к установке ПО.

3. Установка Postfix

Сначала обновите репозитории до самой новой версии:

sudo apt update

Затем выполните команду для установки Postfix и нужных программ:

sudo apt install postfix mailutils

 

Кроме самого почтового сервиса нам понадобиться набор утилит mailutils для тестирования его работы. Установка займет некоторое время в зависимости от скорости вашего интернета. Во время установки вам предстоит ответить на несколько вопросов. Надо выбрать вариант конфигурации Postfix:

 

 

Здесь нажмите Ок, затем на следующем шаге выберите Интернет сайт:

 

Дальше вам нужно ввести ваш FQDN, настроенный ранее, в данном случае, vps.losst.ru:

 

После завершения все сервисы запустятся автоматически, а мы можем перейти к дальнейшей настройке.

4. Настройка имени хоста

Осталось настроить имя хоста и можно пробовать тестировать работу Postfix. Откройте файл /etc/postfix/main.cf и убедитесь, что в переменной myhostname содержится ваш FQDN. Если нет - поправьте:

sudo vi /etc/postfix/main.cf

В переменной mydestination должны быть перечислены все домены, для которых вы собираетесь принимать почту. В том числе и vps.losst.ru.

5. Тестирование отправки почты

Теперь почтовый сервер готов к работе. Он будет отправлять письма от имени настроенного домена, в данном случае vps.losst.ru, а в качестве почтовых ящиков будут использоваться пользователи в системе. В данном случае root. Чтобы отправить тестовое письмо воспользуйтесь утилитой mail:

echo "Test mail" | mail -s "Test mail" ваш_ящик@mail.ru

Далее на своей почте вы должны найти отправленное письмо. Сейчас для отправки почты не используется шифрование, поэтому если письмо не пришло, проверьте папку Спам.

Убедитесь, что отправитель такой, как мы обсудили. А затем ответьте на это письмо. Если всё настроено верно, то выполнив утилиту mail без параметров вы сможете прочитать ваш ответ:

mail

6. Виртуальные почтовые ящики

На данный момент почтовый сервер умеет получать почту только для пользователей, зарегистрированных в системе. Но в большинстве случаев этого не достаточно. Надо чтобы сервер позволял работать с виртуальными пользователями, которых создали мы сами. Сначала давайте создадим папку, в которой будут храниться наши виртуальные почтовые ящики, а также сами ящики:

sudo mkdir -p /home/vmail{admin,support,info}

Всем этим будет владеть пользователь vmail с группой vmail, их надо тоже создать:

sudo groupadd -g 5000 vmail
sudo useradd -g vmail -u 5000 vmail -d /home/vmail -m

Далее дайте права на ранее созданную папку пользователю vmail:

chown vmail:vmail /home/vmail

Далее можно переходить к настройке Postfix. Сначала надо убрать домен для которого мы будем принимать почту на виртуальные почтовые ящики из переменной mydestinations. Доставка почты для домена можно выполняться либо по системным пользователям через директиву mydestinations, либо по виртуальным ящикам с помощью директивы virtual_mailbox_domains. Добавьте его в эту директиву и ещё несколько параметров:

sudo vi /etc/postfix/main.cf

virtual_mailbox_domains = vps.losst.ru
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = hash:/etc/postfix/vmaps
virtual_minimum_uid = 1000
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

Параметр virtual_mailbox_base содержит путь к папке, в которой будет хранится почта от виртуальных ящиков, virtual_mailbox_maps - путь к файлу, в котором перечислены все почтовые ящики, а три следующих директивы указывают идентификатор и группу пользователя, который будет управлять папкой с почтой.

Осталось создать файл с виртуальными почтовыми ящиками. Каждая запись этого файла состоит из двух полей: имени пользователя в формате имя@домен и пути к файлу, в который будет складываться его почта, относительно папки из virtual_mailbox_base. Например, давайте создадим три почтовых ящика:

sudo vi /etc/postfix/vmaps

admin@vps.losst.ru vps.losst.ru/admin
support@vps.losst.ru vps.losst.ru/support
info@vps.losst.ru vps.losst.ru/info

Чтобы убедится, что всё читается используйте команду postmap с опцией -q. Например:

postmap -q admin@vps.losst.ru hash:/etc/postfix/vmaps

Утилита должна вывести значение пути к файлу для этого пользователя. В примере с файлом это не очень актуально, но когда вы будете настраивать получение виртуальных пользователей из базы данных MySQL, это вам понадобится.

7. Тестирование виртуальных ящиков

Когда всё будет настроено не забудьте перезапустить почтовый сервер командой:

sudo systemctl restart postfix

Затем можно отправить себе письмо с помощью той же утилиты mail:

echo "Test mail" | mail -s "Test mail" admin@vps.losst.ru

Если всё хорошо, письмо должно лежать в файле /home/vmail/vps.losst.ru/admin:

cat /home/vmail/vps.losst.ru/admin

Если же его нет, посмотрите не вернулось ли оно отправителю, выполнив mail без параметров. Если вернулось, то там будет указана причина почему. Ещё можно посмотреть лог отправки писем в /var/log/mail.log. Одной из причин того, что письма не приходят может быть то, что вы неверно выставили права на папку /home/vmail или же забыли убрать виртуальный домен из mydestination.

8. Настройка Dovecot

Почтовый сервер вряд-ли обойдется без возможности отправки почты по SMTP. Поддержка этого протокола уже есть в Postfix, но по умолчанию там нет никакой авторизации. Для добавления поддержки авторизации следует использовать Dovecot. Как бонус вы получите возможность просматривать ваши письма по протоколам POP3 и IMAP. Сначала надо установить сам сервис Dovecot:

sudo apt install -y dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd

Поскольку для получения почты по IMAP будет использоваться Dovecot, то и для доставки почты в почтовые ящики теперь тоже следует использовать Dovecot. Поэтому сначала надо указать где будут хранится почтовые ящики и в каком формате. Для этого откройте файл /etc/dovecot/conf.d/10-mail.conf и измените значение параметра mail_location на следующее:

sudo vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/home/vmail/%d/%n

Мы будем использовать ту же папку что и раньше, только уже другой программой. Здесь %d - означает домен, а %n - имя пользователя. Далее надо настроить какие сервисы будут использоваться. В файле /etc/dovecot/conf.d/10-master.conf надо расскомментировать настройки для таких сервисов:

  • imaps - получение почты по протоколу IMAP с поддержкой SSL;
  • pop3s - получение почты по протоколу POP3 с поддержкой SSL;

sudo vi /etc/dovecot/conf.d/10-master.conf

inet_listener imaps {
port = 993
ssl = yes
}
inet_listener pop3s {
port = 995
ssl = yes
}

Найдите эти секции и приведите их к такому же виду. Далее надо включить протокол LMTP, он будет использоваться Postfix для доставки писем в почтовые ящики.

service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}

Ищите секцию service lmtp и приведите её к такому виду. Путь /var/spool/postfix/private/dovecot-lmtp - это сокет, на котором сервис будет ожидать подключения. Позже нам надо будет использовать его в конфигурации Postfix. И осталось настроить ещё один сокет для авторизации по SMTP:

#Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

В файле /etc/dovecot/conf.d/10-auth.conf надо включить метод авторизации plain login:

sudo vi /etc/dovecot/conf.d/10-auth.conf

auth_mechanisms = plain login

Далее пролистайте в самый низ файла и закомментируйте такую строчку:

!include auth-system.conf.ext

Это надо чтобы отключить использование системных пользователей для авторизации в Dovecot. Вместо этого мы будем использовать файл со списком своих пользователей. Поэтому расскоментируйте такую строчку:

!include auth-passwdfile.conf.ext

Дальше настраиваем способ получения пользователей. Для этого откройте файл /etc/dovecot/conf.d/auth-passwdfile.conf.ext и приведите его к такому виду:

sudo vi /etc/dovecot/conf.d/auth-passwdfile.conf.ext

passdb {
driver = passwd-file
args = scheme=PLAIN username_format=%u /etc/dovecot/users
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/home/vmail/%d/%n
}

Здесь мы указываем, что пароли пользователей будут хранится в файле /etc/dovecot/users открытым текстом. Осталось создать этот файл:

sudo vi /etc/dovecot/users

admin@vps.losst.ru:{plain}password
support@losst.ru:{plain}password
info@vps.losst.ru:{plain}password

С Dovecot всё. Сертификаты SSL, настраивать не обязательно, так как во время установки программы генерируются самоподписные и на первое время их хватит.

9. Настройка Postfix для Dovecot

Поскольку теперь для доставки писем в почтовые ящики и для авторизации при отправке писем по SMTP мы будем использовать Dovecot, надо поменять несколько строк в /etc/postfix/main.cf

smtp_use_tls = yes
smtp_tls_security_level = may
smtpd_tls_security_level = may

smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

Здесь private/auth - это ссылка на сокет в /var/spool/postfix, который мы создали в секции smtp-auth при конфигурации dovecot. Затем закоментируйте строки:

#virtual_mailbox_base = /home/vmail
#virtual_mailbox_maps = hash:/etc/postfix/vmaps
#virtual_minimum_uid = 1000
#virtual_uid_maps = static:5000
#virtual_gid_maps = static:5000

И вместо них добавьте:

virtual_transport = lmtp:unix:private/dovecot-lmtp

Далее откройте файл /etc/postfix/master.cf и раскомментируйте такую строчку:

submission inet n - y - - smtpd

Всё, осталось перезапустить Postfix и Dovecot:

sudo systemctl restart postfix
sudo systemctl restart dovecot

Не забудьте удалить старый почтовый ящик:

sudo rm /home/vmail/vps.losst.ru/admin

10. Тестирование доставки почты

Первым делом надо проверить доставляется ли почта в новый почтовый ящик. Для этого можно отправить тестовое письмо на admin@vps.losst.ru:

echo "Test mail" | mail -s "Test mail" admin@vps.losst.ru

После этого в папке /home/vmail/vps.losst.ru/admin/new/ должно появится новое письмо:

Если письма не появилось смотрите лог postfix:

tail -f /var/log/mail.log

У Dovecot тоже есть лог, но его надо включить. Откройте файл /etc/dovecot/conf.d/10-logging.conf и исправьте там такие строчки:

sudo vi /etc/dovecot/conf.d/10-logging.conf

log_path = /var/log/dovecot.log
auth_verbose = yes

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

11. Настройка брандмауэра

Прежде чем вы сможете получить доступ к почтовому серверу из сети интернет, надо открыть несколько портов. Сначала POP3 и POP3S:

sudo ufw allow 110
sudo ufw allow 995

Потом IMAP и IMAPS:

sudo ufw allow 143
sudo ufw allow 993

А затем SMTP:

sudo ufw allow 25
sudo ufw allow 465
sudo ufw allow 587

Установка Postfix Dovecot завершена, можно переходить к тестированию.

12. Тестирование получения почты

Для получения почты по POP3 в этой статье я буду использовать клиент claws-mail. Для его на рабочем компьютере выполните:

sudo apt install claws-mail

После запуска надо будет пройти несколько шагов настройки. Сначала настройте POP3 сервер для получения почты:

Затем настройте SMTP сервер для отправки почты:

После этого вы увидите все свои письма в программе:

Выводы

В этой статье мы рассмотрели как выполняется установка Postfix Ubuntu 20.04, а также как установить и настроить Dovecot. На первый взгляд, все может показаться очень сложным, но если разобраться, то установка и настройка Postfix Dovecot вполне выполнима. Дальше вы можете установить Roundcube и пользоваться почтой. Если у вас остались вопросы, спрашивайте в комментариях!

41 комментарий

  1. Сергей 16 января, 2017 Ответить
  2. Сергей 17 января, 2017 Ответить
    • Amadeus 19 января, 2017 Ответить
  3. Сергей 17 января, 2017 Ответить
  4. Сергей 17 января, 2017 Ответить
    • Евгений 18 января, 2017 Ответить
      • Евгений 9 августа, 2017 Ответить
    • Владимир 16 апреля, 2019 Ответить
  5. Сергей 18 января, 2017 Ответить
    • Amadeus 19 января, 2017 Ответить
      • Сергей 20 января, 2017 Ответить
        • mao 20 марта, 2017 Ответить
  6. Жора 2 февраля, 2017 Ответить
    • Andrei 14 марта, 2018 Ответить
  7. Макс 10 февраля, 2017 Ответить
  8. Yakubovich 4 апреля, 2017 Ответить
  9. psiklop 17 мая, 2017 Ответить
    • podmigor 19 января, 2018 Ответить
  10. sasha 3 января, 2018 Ответить
  11. komron 22 февраля, 2018 Ответить
  12. komron 22 февраля, 2018 Ответить
  13. кеаонукк 25 апреля, 2018 Ответить
  14. fopmaceft 2 июля, 2018 Ответить
    • Алексей 2 ноября, 2018 Ответить
    • Алексей 2 ноября, 2018 Ответить
  15. Алексей 2 ноября, 2018 Ответить
  16. Евгений 7 декабря, 2018 Ответить
    • Евгений 8 декабря, 2018 Ответить
  17. Евгений 8 декабря, 2018 Ответить
  18. Nikita 21 декабря, 2018 Ответить
  19. Алексей 5 марта, 2019 Ответить
  20. Сергей 15 июля, 2019 Ответить
  21. Александр 18 ноября, 2019 Ответить
    • admin 18 ноября, 2019 Ответить
    • Алекс 29 ноября, 2019 Ответить
  22. Евгений 24 марта, 2020 Ответить
  23. Павел 20 апреля, 2020 Ответить
  24. Александр 29 января, 2021 Ответить
  25. madmentat 27 сентября, 2021 Ответить
    • admin 28 сентября, 2021 Ответить

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: