Установка и настройка Postfix и Dovecot на Ubuntu 20.04

Обсудить
Установка и настройка Postfix и Dovecot на Ubuntu

Postfix – это программный продукт, позволяющий организовать почтовый сервер. Он был создан как альтернатива Sendmail – старейшему агенту передачи почты (MTA – Mail Transfer Agent). Postfix распространяется с открытым исходным кодом и используется разработчиками для маршрутизации и пересылки почтовых писем внутри системы Linux.

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

Требования

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

  • Сервер на Ubuntu 20.04, который будет функционировать в режиме почтовой службы. Требуется, чтобы он включал в себя пользователя без прав root с привилегиями sudo. Вместе с этим также необходим брандмауэр, настроенный с помощью Uncomplicated Firewall (UFW).
  • Доменное имя сервера. Если вам потребуется получить доступ к почте из внешнего источника, то нужно также позаботиться об MX-записи, которая будет указывать на почтовый сервер.

Обратите внимание на то, что настройка хоста будет выполняться с доменным именем типа email.example2.com. В последующем вам потребуется заменить все подобные значения на свое собственное доменное имя.  

Как установить Postfix

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

Первым делом обновляем кэш пакетов:

sudo apt update

Затем устанавливаем непосредственно сам пакет Postfix. Здесь важно обратить внимание на значение DEBIAN_PRIORITY=low – оно позволяет нам подключить некоторые дополнительные опции.

sudo DEBIAN_PRIORITY=low apt install postfix

В результате перед нами отобразится ряд вопросов и сообщений. Отвечаем на них следующим образом:

  • General type of mail configuration? – в нашем случае мы указываем значение «Internet Site», но оно может отличаться в зависимости от инфраструктуры.
  • System mail name – стандартный домен, который используется для создания точного адреса электронной почты. Он необходим в тех случаях, когда имеется только часть адреса с именем профиля. Например, имя сервера email.example2.com, но мы хотим, чтобы имя системной почты выглядело как example2.com. В этом случае для пользователя user будет использоваться адрес user@example2.com.
  • Root and postmaster mail recipient – это аккаунт Linux, на который будет перенаправляться почта, адресованная root@ и postmaster@. В данном случае вам потребуется использовать свою учетную запись, например, UserNameZ7.
  • Other destinations to accept mail for – текущий параметр определяет получателей почты, которых будет принимать этот экземпляр Postfix. При необходимости вы можете указать собственные доменные имена, для которых сервер будет получать почту.
  • Force synchronous updates on mail queue? – если в вашем случае используется журнальная файловая система, то укажите значение «No».
  • Local networks – это список локальных сетей, для которых почтовая служба настроена как устройство пересылки сообщений. Начальные значения подойдут для всех, но если вы захотите их изменить, то рекомендуется максимально сократить диапазон сетей.
  • Mailbox size limit – позволяет сократить размер сообщения. Если установлено значение «0», то в таком случае ограничения будут полностью отключены.
  • Local address extension character – символ, который используется для отделения обычной части адреса от расширения. По умолчанию значение установлено как «+», можете его оставить.
  • Internet protocols to use – здесь указываем, требуется ли ограничивать версии IP, которые поддерживаются Postfix. Выбираем значение «All».

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

sudo dpkg-reconfigure postfix

На этом установка Postfix на Ubuntu завершена, теперь можем переходить к более детальным настройкам.

Настройка Postfix

Большинство настроек конфигурации Postfix заданы в файле main.cf, который можно найти по адресу /etc/postfix/main.cf. Здесь мы можем пойти следующим образом: изменять параметры непосредственно в самом файле либо воспользоваться командой postconf.

Для настройки Postfix первым делом нам потребуется прописать расположение почты обычного пользователя Ubuntu. В нашем случае мы используем формат Maildir – в нем сообщения выделяются в отдельные файлы, перемещаемые между каталогами. Также вы можете хранить сообщения в формате mbox или любом удобном для вас.

Указываем значение Maildir для переменной home_mailbox. Настроить ее можно с помощью команды:

sudo postconf -e 'home_mailbox= Maildir/'

Прописываем расположение таблицы virtual_alias_maps, где  все учетные записи почты сопоставляются с аккаунтами системы Linux. Также активируем еще одну команду, с помощью которой мы сопоставим расположение таблицы с файлом базы данных хэша в /etc/postfix/virtual:

sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

Теперь мы можем начать сопоставление учетных записей почты с профилями пользователей в ОС Linux. Для этого создадим файл в nano, вы же можете выбрать любой другой текстовый редактор:

sudo nano /etc/postfix/virtual

Записываем все адреса, для которых мы хотим получать электронную почту, а также прописываем пользователей Ubuntu Postfix, которым будут приходить письма. Для примера возьмем следующую ситуацию: нам нужно получать все письма на адреса excontact@example2.com и exadmin@examlpe2.com и отправлять их пользователю операционной системы Linux с именем UserNameZ7. В таком случае настройка файла будет выглядеть следующим образом:

excontact@example2.com UserNameZ7

exadmin@examlpe2.com UserNameZ7

После успешного ввода данных сохраняемся и выходим из файла. В нашем случае это редактор nano, поэтому зажимаем на клавиатуре комбинацию клавиш «CTRL+X, Y» и жмем «Enter». После этого осуществляем сопоставление строчкой кода:

sudo postmap /etc/postfix/virtual

Затем перезагружаемся командой:

sudo systemctl restart postfix

Если брандмауэр был настроен с помощью UFW, вам потребуется добавить одно исключение. Это связано с тем, что UFW по умолчанию блокирует все внешние подключения к службам сервера. Решить проблему можно одной строчкой кода:

sudo ufw allow Postfix

Готово! Настройка Postfix на Ubuntu 20.04 прошла успешно. Теперь было бы хорошо его протестировать на почтовом клиенте, но сделать этого мы пока не можем. Прежде чем установить почтовый клиент, для начала нам нужно внести некоторые корректировки в параметры сервера Ubuntu.

Установка почтового клиента

В данном разделе мы установим пакет s-nail для взаимодействия с доставляемой почтой. Перед тем как начать установку, рекомендуем проверить настройку переменной среды «MAIL». Клиенту эта переменная необходима для того, чтобы определять места почты для пользователя.

Если необходимо гарантированно задать переменную MAIL, вне зависимости от способа доступа к учетной записи, потребуется указать ее в файле /etc/bash.bashrc и добавить в /etc/profile.d, чтобы она использовалась всеми юзерами.

Для этого введем следующее:

echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

Чтобы прочитать переменную текущего сеанса, можно ввести:

source /etc/profile.d/mail.sh

Теперь мы можем переходить к установке клиента s-nail. Прописываем для этого:

sudo apt install s-nail

Пока что не запускаем его, добавим в него несколько записей. Сначала откроем файл в редакторе nano:

sudo nano /etc/s-nail.rc

В конец вставим следующее:

. . .

set emptystart

set folder=Maildir

set record=+sent

Расшифруем каждую строчку:

  • set emptystart – дает возможность клиенту открываться даже при пустом почтовом ящике;
  • set folder=Maildir – прописывает для директории Maildir переменную folder;
  • set record=+sent – создает файл sent в формате mbox для хранения отправленной почты в каталоге, заданном в переменной folder.

На этом с файлом заканчиваем – сохраняемся и закрываем его. Теперь нам потребуется выполнить еще одно действие – инициализировать структуру Maildir. Чтобы это сделать, необходимо отправить себе электронное письмо командой s-nail. Так как файл sent доступен только после создания Maildir, потребуется отключить запись в этот файл. Для этого воспользуемся командой -Snorecord.

Для отправки письма добавим строку в команду s-nail. Обратите внимание, что в конце указывается имя пользователя – вам потребуется изменить его на свое.

echo 'init' | s-nail -s 'init' -Snorecord UserNameZ7

В ответе вы можете увидите сообщение:

Can't canonicalize "/home/sammy/Maildir" 

Это нормально – такое сообщение обычно появляется только при первой отправке.

Убедимся, что каталог был создан:

ls -R ~/Maildir

В результате должно отобразиться примерно следующее:

/home/ UserNameZ7/Maildir/:

cur  new  tmp

/home/ UserNameZ7/Maildir/cur:

/home/ UserNameZ7/Maildir/new:

1463177269.Vfd01I40e4dM691221.mail.example.com

/home/ UserNameZ7/Maildir/tmp:

Теперь мы можем перейти к тестированию почтового клиента.

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

Для начала запустим клиент, для этого используем команду:

s-nail

Чтобы отправить сообщение, передадим содержимое текстового файла в процесс s-nail. Откроем для этого текстовый редактор:

nano ~/test_message

Пропишем туда сообщение, например:

Привет! Это тестовое сообщение.

Сохраняемся и закрываем редактор. Для передачи сообщения в s-nail, используем команду cat. Она может принимать следующие значения:

  • -s – задает строку темы сообщения;
  • -r – изменяет поле «From», в котором по умолчанию указан текущий пользователь Linux. Данный параметр необходим для того, что заменить его на необходимый адрес, например, на excontact@example2.com.

Также вам потребуется заменить последний адрес, указанный в строчке кода:

cat ~/test_message | s-nail -s 'Test email subject line' -r contact@example2.com exuser@example2.com

После этого на указанную электронную почту должно прийти письмо. Чтобы проверить отправленные сообщения через s-nail, нужно прописать file +sent, где file – ваше уникальное название.

Установка и настройка Dovecot

Dovecot – это свободный IMAP- и POP3-сервер, разработанный с упором на безопасность. Нам он потребуется для того, чтобы подключить авторизацию по протоколу SMTP.

Устанавливаем Dovecot с компонентом для работы с СУБД:

apt-get install dovecot-imapd dovecot-pop3d dovecot-mysql

Настраиваем способ хранения сообщений, для этого откроем файл:

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

Пропишем в него следующее:

mail_location = maildir:/home/mail/%d/%u/

В данном случае сообщения будут храниться в уже известном нам формате Maildir.

Далее настраиваем слушателя для аутентификации:

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

В файле прописываем:

service auth {

  unix_listener /var/spool/postfix/private/auth {

    mode = 0666

    user = postfix

    group = postfix

  }

  unix_listener auth-userdb {

    mode = 0600

    user = vmail

    group = vmail

  }

}

На этом примере мы настраиваем сервис для аутентификации и создаем два прослушивателя: /var/spool/postfix/private/auth – для возможности Постфиксом использовать авторизацию через Dovecot, auth-userdb – сокет для авторизации через dovecot-lda.

В этот же файл добавляем:

service stats {

    unix_listener stats-reader {

        user = vmail

        group = vmail

        mode = 0660

    }

    unix_listener stats-writer {

        user = vmail

        group = vmail

        mode = 0660

    }

}

Переходим к настройке аутентификации в Dovecot, открываем файл 10-auth.conf:

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

Задаем в нем следующие значения:

#!include auth-system.conf.ext

!include auth-sql.conf.ext

Открываем файл 10-ssl.conf командой vi /etc/dovecot/conf.d/10-ssl.conf и настраиваем в нем использование шифрования:

ssl = required

ssl_cert = </etc/ssl/mail/public.pem

ssl_key = </etc/ssl/mail/private.key

Рассмотрим параметры:

  • ssl = required – прикажет Dovecot требовать от клиентов использование шифрования;
  • ssl_cert – путь до открытого сертификата;
  • ssl_key – путь к закрытому ключу.

Добавляем автоматическое создания каталогов в файле vi /etc/dovecot/conf.d/15-lda.conf:

lda_mailbox_autocreate = yes

Настраиваем подключение к базе данных. Для начала открываем нужный файл:

​sudo nano /etc/dovecot/conf.d/auth-sql.conf.ext

Вставляем в него:

passdb {

  …

  args = /etc/dovecot/dovecot-sql.conf.ext

}

userdb {

  …

  args = /etc/dovecot/dovecot-sql.conf.ext

}

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

Переходим к корректированию файла с настройками работы mySQL:

sudo nano /etc/dovecot/dovecot-sql.conf.ext

В конце файла добавляем:

driver = mysql

connect = host=localhost dbname=postfix user=postfix password=postfix123

default_pass_scheme = MD5-CRYPT

password_query = SELECT password FROM mailbox WHERE username = '%u'

user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'

user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'

Таким образом, мы смогли настроить запрос на получение данных из БД. Осталось сконфигурировать интерфейс, на котором мы будем слушать Dovecot:

sudo nano /etc/dovecot/dovecot.conf

В этот файл прописываем:

listen = *

По умолчанию Dovecot слушает и на ipv6 (listen = *, ::). Если на сервере не используется 6-я версия протокола TCP/IP, то в логах могут быть ошибки.

Разрешаем запуск Dovecot:

systemctl enable dovecot

Перезагружаемся:

systemctl restart dovecot

Изменение конфигурации Postfix для Dovecot

Так как для отправки писем мы используем протокол SMTP через Dovecot, нам потребуется внести некоторые изменения в основном файле. Откроем его:

sudo nano /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

Также комментируем строки:

#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

Откроем файл sudo nano /etc/postfix/master.cf и раскомментируем в нем строчку:

submission inet n - y - - smtpd

Осталось перезагрузиться в Postfix:

sudo systemctl restart postfix

И в Dovecot:

sudo systemctl restart dovecot

Теперь вы можете протестировать отправку почты. Обратите внимание, что у Dovecot также есть лог – чтобы его включить, необходимо открыть файл sudo nano /etc/dovecot/conf.d/10-logging.conf и внести в него корректировки:

log_path = /var/log/dovecot.log

auth_verbose = yes

Первая строка указывает на путь к логу, а вторая показывает неудачные попытки авторизации.

Заключение

Теперь вы знаете, как выполняется установка и настройка Postfix и Dovecot на Ubuntu 20.04. Начинающим системным администраторам на первый взгляд это может показаться непосильной задачей, но с данными инструкциями все должно получиться. Удачи!

Комментарии

С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
С помощью соцсетей
У меня уже есть аккаунт Войти
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email, который Вы использовали для входа на сайт.