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

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

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

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

Установка 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

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

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

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

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

sudo apt update

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

sudo apt install postfix mailutils

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

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

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

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

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

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

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

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

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

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

sudo vi /etc/postfix/main.cf

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

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

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

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

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

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

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

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

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

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

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

sudo mkdir -p /home/vmail

Всем этим будет владеть пользователь 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

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

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

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

sudo vi /etc/postfix/vmaps

[email protected] vps.losst.ru/admin
[email protected] vps.losst.ru/support
[email protected] vps.losst.ru/info

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

postmap -q [email protected] hash:/etc/postfix/vmaps

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

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

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

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

sudo systemctl restart postfix

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

echo “Test mail” | mail -s “Test mail” [email protected]

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

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

Если же его нет, посмотрите не вернулось ли оно отправителю, выполнив 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

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

Мы будем использовать ту же папку что и раньше, только уже другой программой. Здесь %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
>

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

Найдите эти секции и приведите их к такому же виду. Далее надо включить протокол 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

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

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

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

Дальше настраиваем способ получения пользователей. Для этого откройте файл /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

[email protected]:password
[email protected]:password
[email protected]:password

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

С 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

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

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

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

submission inet n – y – – smtpd

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

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

sudo systemctl restart postfix
sudo systemctl restart dovecot

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

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

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

Первым делом надо проверить доставляется ли почта в новый почтовый ящик. Для этого можно отправить тестовое письмо на [email protected]:

echo “Test mail” | mail -s “Test mail” [email protected]

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

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

Если письма не появилось смотрите лог 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

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

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

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

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

sudo ufw allow 110
sudo ufw allow 995

Потом IMAP и IMAPS:

sudo ufw allow 143
sudo ufw allow 993

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

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

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

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

sudo apt install claws-mail

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

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

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

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

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

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

Выводы

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

Нет похожих записей

Оцените статью:

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

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

Кто-то попробовал этот рецепт? пошло?

Сам пробую настроить по этой инструкции. стоит Ubuntu 16.04

Сразу нашел ошибку. В разделе “Настройка баз данных” указано ввести
$ sudo mysql -u root
У меня это не работает. Выдает:
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

Сработало вот что:
$ sudo mysql -u root -p
далее спросила пароль у пустила в командную строку
>mysql

у автора предполагется что у пользователя mysql root нет пароля. Мне кажется, как зайти в консоль mysql вопрос немного не из области темы статьи.

Следующая ошибка на 3 пункта ниже.
Около часа потратил на нее. Эх, попадись мне сейчас автор.

В статье указано ввести:
> CREATE TABLE `Domains_tbl` ( `DomainId` INT NOT NULL AUTO_INCREMENT , `DomainName` VARCHAR(50) NOT NULL , PRIMARY KEY (`DomainId`)) ENGINE = InnoDB;

Работает только без апострофов. И последнюю директиву ENGINE=InnoDB мой MySQL вообще не понимает. Сработало вот что:

> CREATE TABLE Domains_tbl (DomainId INT NOT NULL AUTO_INCREMENT , DomainName VARCHAR(50) NOT NULL , PRIMARY KEY (DomainId));

Без апострофов и без энджин!

Далее в разделе “Создание пользователей” указано ввести

> INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT(‘пароль1’, CONCAT(‘$6$’, SUBSTRING(SHA(RAND()), -16))), ‘[email protected]’);

что я только не пробовал, выдает следующее:

ERROR 1406 (22001): Data too long for column ‘password’ at row 1

ВСЁ! Приплыли! Я не могу пройти дальше.

АВТОР СТАТЬИ – НА ПОМОЩЬ.

Zimbra Collaboration Open Source, https://www.zimbra.com/downloads. Оставь это мазохистам ��

да кстати, тоже зашёл посмотреть как дела обстоят у postfix и dovecot, видимо буду устанавливать и запускать “zimbra”! Кажется проще эксплуатация!

ALTER TABLE Users_tbl MODIFY password VARCHAR(1000) NOT NULL;

ВНИМАНИЕ ВСЕМ. Весь этот рецепт по настройке почты не работает. Не тратьте свое время на попытки настроить почту по этой статье. УДАЛИТЕ ЭТУ СТАТЬЮ С САЙТА, НЕ ПОЗОРЬТЕСЬ.

Вы спотыкаетесь на базовых вещах. Мне кажется, прежде чем кричать тут капсом и ставить много восклицательных знаков, вам бы следовало почитать основы, хотя бы по Mysql.

Вы считаете статья написана на отлично? Первые же базовые вещи НЕ РАБОТАЮТ! Да ведь и это больше похоже на инструкцию по настройке, а не на статью по основным понятиям принципа настройки почты в Убунту. Эта инструкция – НЕ РАБОТАЕТ. В печь её.

Если у Вас что-то не получается “с разбегу”, то не стоит сразу тыкать в автора. Он старался!
Лучше погуглить ошибки, которые возникают. Например с апострофами таки да, надо вникать где апостроф надо ставить, а где кавычку =)
И еще мысля на заметку: Если инструкция написана, значит как минимум у автора она сработала. Как максимум она сработала у большинства воспользовавшегося ею. Так что сперва стоит поискать ошибки в себе, прежде чем тыкать грязным пальцем во всех окружающих и обвинять их в том, что этот мир не так устроен, как хотелось бы =)

Не работает эта инфтрукция. Не авторизуется пользователь в довекоте так как поле в таблице пароле слишком маленькое и оно режится

Спасибо за совет, я таки авторизовался в довекоте ��

измените скрипт создания таблицы
CREATE TABLE `Users_tbl` (
`UserId` INT NOT NULL AUTO_INCREMENT,
`DomainId` INT NOT NULL,
`password` VARCHAR(254) NOT NULL,
`Email` VARCHAR(100) NOT NULL,
PRIMARY KEY (`UserId`),
UNIQUE KEY `Email` (`Email`),
FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE
) ENGINE = InnoDB;

настраиваю по этому мануалу пока все гладко, есть конечно огрехи, но это больше мои пробелы в той или иной теме. Тем кто не сталкивался с mysql придется отдельно самому поизучать данный вопрос. Если все разжевывать от А до Я это не статья, а книга целая выйдет. Тем кто пытается просто скопипаздить тот будет спотыкаться на каждом шагу. Мозг уже включайте иногда это полезно.

Здравствуйте, а если например, вместо ручного создания таблиц, подключим Postfixadmin, ну и соотвественно к пустой базе, и он создаст свои таблицы, потом в файлах .cf, пропишу свой алгоритм подключения к базе с таблицами как в PA

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

dovecot unix – n n – – pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f $ -d $

/usr/sbin/postconf: fatal: file /etc/postfix/master.cf: line 127: bad field count
postfix/postfix-script: fatal: cannot execute /usr/sbin/postconf!

два пробела перед второй строкой поставьте

Не согласен с большинством отзывов: 1.Если назвался Клизьмой, то будь добр автор уж исправить свои писульки.
фраза а вот вы mysql не знаете, или других “основ” – тут не катит, не уверен не обгоняй! зачем пишешь то что не работает ты ж не Майкрософт!?

Привет! Всем сработало многое, автор пишет круто, но Я застрял на postfix. Честно говоря надо быть чуть профи, чтобы разобраться, что к чему

при вводе команды posfix check вылетает куча ошибок, кроме того не удаётся получить доступ к базу данных, через postmap

Добрый день настраиваю сервер в локальной сети по вашему гайду/инструкции и он не работает – конкретно проблема в том что клиент локальной сети видит сервер, но не может авторизоваться – неверная пара логин/пароль или что-то в этом духе, да и на самом сервере таже проблема.
Возник такой вопрос – при редактировании конфигов мне нужно все закоментировать и оставить только указанные вами параметры или при внесении ваших настроек, остальное не трогать и все должно работать.
И 2-й вопрос – а мрожно настроить без DNS у меня сервер должен работать в локальной сети не обращаясь в интернет, хотя интернет есть

ДНС должен быть и в локальной сети

Может запись MX не обязательна в локалке

Для создание базы MySql используйте Postfixadmin он сам создает необходимые таблицы баз.По инструкции настраивать не пробовал.Но теоретически последовательность описана правильно.Конечно,огрехи в синтаксисе могут быть в статье.Для успешной настп=ройки надо более-менее знать тему MySql PHP ,ну и принципы работы Postfix Dovecit mYsQL,по отдельности и вместе

Спасибо за статью, всё получилось!
Единственное, пока не разобрался, там есть раздел где конфигурируется аутентификация по разным протоколам. Почему-то не получилось настроить imaps на 993 порту – thunderbird упорно отказывается к нему подключаться, хотя порт слушается.

Получилось, проблема была в роутере – забыл пробросить порт.

У меня вот какой вопрос возник – INSERT в таблицу я понял как сделать, с хешом пароля, а что делать если надо поменять пароль?

Возникает ошибка:
imap-login: Error: SSL: Stacked error: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca: SSL alert number 48

$ sudo postconf –n
postconf: warning: . n: unknown parameter
***:

$ sudo postconf –m
postconf: warning: . m: unknown parameter

Здравствуйте, не получается подключиться клиентом к серверу:
dovecot:
imap-login: Info: Disconnected (no auth attempts in 0 secs): user=, rip=xx.xx.xx.xx, lip=xxx.xxx.xxx.xxx, TLS, session=

postfix:
postfix/submission/smtpd[8430]: connect from unknown[xx.xx.xx.xx]
postfix/submission/smtpd[8430]: disconnect from unknown[xx.xx.xx.xx] ehlo=2 starttls=1 quit=1 commands=4

А thunderbird пишет, что сервер скорее всего не поддерживает шифрованные пароли. Я так понимаю, что проблема с сертификатом и его использованием, но что именно?