Postfix - это один из самых популярных почтовых серверов, который используется для отправки, приема и пересылки почты в различных системах. Очень часто Postfix используют в качестве почтового сервера по умолчанию для веб-сайтов, поскольку он поддерживает все необходимые функции и несложен в настройке, в отличие от SendMail.
В этой статье мы рассмотрим, как выполняется установка Postfix Ubuntu 20.04. Хотя статья ориентирована именно на Ubuntu, но, вся информация может быть применена и для других дистрибутивов. Раньше на этом месте была другая статья, она была более обширная, но и более сложная. Я решил сделать её проще.
Установка Postfix в Ubuntu 20.04
1. Настройка DNS зоны
Вы не сможете заставить все это работать на локальной машине, без привязанного к ней домена. И на сервере со статическим IP нужно сначала правильно настроить доменную зону. Это очень важно.
Вам нужно чтобы A и MX записи вашего домена указывали на IP адрес вашего сервера. Обычно это можно настроить в панели управления доменом. На обновление доменной зоны может уйти 1-2 дня. Например, в данной статье я буду использовать домен vps.kovalets.net. A запись будет выглядеть вот так:
В данном случае надо писать только поддомен. А В MX записи для корневого домена следует указывать знак @. Но для поддомена надо указать этот поддомен:
2. Настройка имени хоста
Дальше вам нужно правильно настроить доменное на вашем VPS. FQDN (Fully Qualified Domain Name) должно состоять из имени хоста и зарегистрированного доменного имени. Сначала установим имя хоста с помощью hostnamectl. Например:
sudo hostnamectl set-hostname vps
Затем нужно добавить строчку с именем домена FQDN в файл /etc/hosts. Обратите внимание, что если у вас есть другие домены, то нужный надо расположить в самом верху. Здесь нужно указать ваш статический адрес, имя хоста и зарегистрированный домен:
sudo vi /etc/hosts
Теперь у вас есть FQDN, который будет использоваться почтовым сервером. Переходим к установке ПО.
3. Установка Postfix
Сначала обновите репозитории до самой новой версии:
sudo apt update
Затем выполните команду для установки Postfix и нужных программ:
sudo apt install postfix mailutils
Кроме самого почтового сервиса нам понадобиться набор утилит mailutils для тестирования его работы. Установка займет некоторое время в зависимости от скорости вашего интернета. Во время установки вам предстоит ответить на несколько вопросов. Надо выбрать вариант конфигурации Postfix:
Здесь нажмите Ок, затем на следующем шаге выберите Интернет сайт:
Дальше вам нужно ввести ваш FQDN, настроенный ранее, в данном случае, vps.kovalets.net:
После завершения все сервисы запустятся автоматически, а мы можем перейти к дальнейшей настройке.
4. Настройка имени хоста
Осталось настроить имя хоста и можно пробовать тестировать работу Postfix. Откройте файл /etc/postfix/main.cf и убедитесь, что в переменной myhostname содержится ваш FQDN. Если нет - поправьте:
sudo vi /etc/postfix/main.cf
В переменной mydestination должны быть перечислены все домены, для которых вы собираетесь принимать почту. В том числе и vps.kovalets.net.
5. Тестирование отправки почты
Теперь почтовый сервер готов к работе. Он будет отправлять письма от имени настроенного домена, в данном случае vps.kovalets.net, а в качестве почтовых ящиков будут использоваться пользователи в системе. В данном случае 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_base содержит путь к папке, в которой будет хранится почта от виртуальных ящиков, virtual_mailbox_maps - путь к файлу, в котором перечислены все почтовые ящики, а три следующих директивы указывают идентификатор и группу пользователя, который будет управлять папкой с почтой.
Осталось создать файл с виртуальными почтовыми ящиками. Каждая запись этого файла состоит из двух полей: имени пользователя в формате имя@домен и пути к файлу, в который будет складываться его почта, относительно папки из virtual_mailbox_base. Например, давайте создадим три почтовых ящика:
sudo vi /etc/postfix/vmaps
Чтобы убедится, что всё читается используйте команду postmap с опцией -q. Например:
postmap -q [email protected] hash:/etc/postfix/vmaps
Утилита должна вывести значение пути к файлу для этого пользователя. В примере с файлом это не очень актуально, но когда вы будете настраивать получение виртуальных пользователей из базы данных MySQL, это вам понадобится.
7. Тестирование виртуальных ящиков
Когда всё будет настроено не забудьте перезапустить почтовый сервер командой:
sudo systemctl restart postfix
Затем можно отправить себе письмо с помощью той же утилиты mail:
echo "Test mail" | mail -s "Test mail" [email protected]
Если всё хорошо, письмо должно лежать в файле /home/vmail/vps.kovalets.net/admin:
cat /home/vmail/vps.kovalets.net/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
Мы будем использовать ту же папку что и раньше, только уже другой программой. Здесь %d - означает домен, а %n - имя пользователя. Далее надо настроить какие сервисы будут использоваться. В файле /etc/dovecot/conf.d/10-master.conf надо расскомментировать настройки для таких сервисов:
- imaps - получение почты по протоколу IMAP с поддержкой SSL;
- pop3s - получение почты по протоколу POP3 с поддержкой SSL;
sudo vi /etc/dovecot/conf.d/10-master.conf
Найдите эти секции и приведите их к такому же виду. Далее надо включить протокол LMTP, он будет использоваться Postfix для доставки писем в почтовые ящики.
Ищите секцию service lmtp и приведите её к такому виду. Путь /var/spool/postfix/private/dovecot-lmtp - это сокет, на котором сервис будет ожидать подключения. Позже нам надо будет использовать его в конфигурации Postfix. И осталось настроить ещё один сокет для авторизации по SMTP:
В файле /etc/dovecot/conf.d/10-auth.conf надо включить метод авторизации plain login:
sudo vi /etc/dovecot/conf.d/10-auth.conf
Далее пролистайте в самый низ файла и закомментируйте такую строчку:
Это надо чтобы отключить использование системных пользователей для авторизации в Dovecot. Вместо этого мы будем использовать файл со списком своих пользователей. Поэтому расскоментируйте такую строчку:
Дальше настраиваем способ получения пользователей. Для этого откройте файл /etc/dovecot/conf.d/auth-passwdfile.conf.ext и приведите его к такому виду:
sudo vi /etc/dovecot/conf.d/auth-passwdfile.conf.ext
Здесь мы указываем, что пароли пользователей будут хранится в файле /etc/dovecot/users открытым текстом. Осталось создать этот файл:
sudo vi /etc/dovecot/users
С Dovecot всё. Сертификаты SSL, настраивать не обязательно, так как во время установки программы генерируются самоподписные и на первое время их хватит.
9. Настройка Postfix для Dovecot
Поскольку теперь для доставки писем в почтовые ящики и для авторизации при отправке писем по SMTP мы будем использовать Dovecot, надо поменять несколько строк в /etc/postfix/main.cf
Здесь private/auth - это ссылка на сокет в /var/spool/postfix, который мы создали в секции smtp-auth при конфигурации dovecot. Затем закоментируйте строки:
И вместо них добавьте:
virtual_transport = lmtp:unix:private/dovecot-lmtp
Далее откройте файл /etc/postfix/master.cf и раскомментируйте такую строчку:
Всё, осталось перезапустить Postfix и Dovecot:
sudo systemctl restart postfix
sudo systemctl restart dovecot
Не забудьте удалить старый почтовый ящик:
sudo rm /home/vmail/vps.kovalets.net/admin
10. Тестирование доставки почты
Первым делом надо проверить доставляется ли почта в новый почтовый ящик. Для этого можно отправить тестовое письмо на [email protected]:
echo "Test mail" | mail -s "Test mail" [email protected]
После этого в папке /home/vmail/vps.kovalets.net/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
Первая указывает путь к логу, а вторая включает отображение подробностей о неудачных попытках авторизации. Посмотрев содержимое логов вы сможете разобраться в чём была проблема с отправкой почты и решить её.
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 и пользоваться почтой. Если у вас остались вопросы, спрашивайте в комментариях!