для чего нужен dovecot
Установка и настройка Postfix и Dovecot на Ubuntu 20.04
Postfix – это программный продукт, позволяющий организовать почтовый сервер. Он был создан как альтернатива Sendmail – старейшему агенту передачи почты (MTA – Mail Transfer Agent). Postfix распространяется с открытым исходным кодом и используется разработчиками для маршрутизации и пересылки почтовых писем внутри системы Linux.
В ходе сегодняшней статьи мы подробно рассмотрим, как выполняется установка и настройка Postfix на сервере Ubuntu 20.04, а также поговорим о том, что представляет собой Dovecot и как правильно его установить в связке с Postfix.
Требования
Прежде чем переходить к установке программного средства, рекомендуем ознакомиться c необходимыми требованиями. Для реализации рассматриваемой задачи нам потребуется:
Обратите внимание на то, что настройка хоста будет выполняться с доменным именем типа email.example2.com. В последующем вам потребуется заменить все подобные значения на свое собственное доменное имя.
Как установить Postfix
По умолчания Postfix включен в репозиторий операционной системы Ubuntu, поэтому с установкой не должно возникнуть никаких проблем. Провести ее мы можем с использованием команды apt.
Первым делом обновляем кэш пакетов:
Затем устанавливаем непосредственно сам пакет Postfix. Здесь важно обратить внимание на значение DEBIAN_PRIORITY=low – оно позволяет нам подключить некоторые дополнительные опции.
В результате перед нами отобразится ряд вопросов и сообщений. Отвечаем на них следующим образом:
Все вышеуказанные настройки мы в любой момент времени можем подкорректировать. Чтобы открыть окно редактирования, достаточно ввести:
На этом установка Postfix на Ubuntu завершена, теперь можем переходить к более детальным настройкам.
Настройка Postfix
Большинство настроек конфигурации Postfix заданы в файле main.cf, который можно найти по адресу /etc/postfix/main.cf. Здесь мы можем пойти следующим образом: изменять параметры непосредственно в самом файле либо воспользоваться командой postconf.
Для настройки Postfix первым делом нам потребуется прописать расположение почты обычного пользователя Ubuntu. В нашем случае мы используем формат Maildir – в нем сообщения выделяются в отдельные файлы, перемещаемые между каталогами. Также вы можете хранить сообщения в формате mbox или любом удобном для вас.
Указываем значение Maildir для переменной home_mailbox. Настроить ее можно с помощью команды:
Прописываем расположение таблицы virtual_alias_maps, где все учетные записи почты сопоставляются с аккаунтами системы Linux. Также активируем еще одну команду, с помощью которой мы сопоставим расположение таблицы с файлом базы данных хэша в /etc/postfix/virtual:
Теперь мы можем начать сопоставление учетных записей почты с профилями пользователей в ОС Linux. Для этого создадим файл в nano, вы же можете выбрать любой другой текстовый редактор:
Записываем все адреса, для которых мы хотим получать электронную почту, а также прописываем пользователей Ubuntu Postfix, которым будут приходить письма. Для примера возьмем следующую ситуацию: нам нужно получать все письма на адреса excontact@example2.com и exadmin@examlpe2.com и отправлять их пользователю операционной системы Linux с именем UserNameZ7. В таком случае настройка файла будет выглядеть следующим образом:
После успешного ввода данных сохраняемся и выходим из файла. В нашем случае это редактор nano, поэтому зажимаем на клавиатуре комбинацию клавиш «CTRL+X, Y» и жмем «Enter». После этого осуществляем сопоставление строчкой кода:
Затем перезагружаемся командой:
Если брандмауэр был настроен с помощью UFW, вам потребуется добавить одно исключение. Это связано с тем, что UFW по умолчанию блокирует все внешние подключения к службам сервера. Решить проблему можно одной строчкой кода:
Готово! Настройка Postfix на Ubuntu 20.04 прошла успешно. Теперь было бы хорошо его протестировать на почтовом клиенте, но сделать этого мы пока не можем. Прежде чем установить почтовый клиент, для начала нам нужно внести некоторые корректировки в параметры сервера Ubuntu.
Установка почтового клиента
В данном разделе мы установим пакет s-nail для взаимодействия с доставляемой почтой. Перед тем как начать установку, рекомендуем проверить настройку переменной среды «MAIL». Клиенту эта переменная необходима для того, чтобы определять места почты для пользователя.
Если необходимо гарантированно задать переменную MAIL, вне зависимости от способа доступа к учетной записи, потребуется указать ее в файле /etc/bash.bashrc и добавить в /etc/profile.d, чтобы она использовалась всеми юзерами.
Для этого введем следующее:
Чтобы прочитать переменную текущего сеанса, можно ввести:
Теперь мы можем переходить к установке клиента s-nail. Прописываем для этого:
Пока что не запускаем его, добавим в него несколько записей. Сначала откроем файл в редакторе nano:
В конец вставим следующее:
Расшифруем каждую строчку:
На этом с файлом заканчиваем – сохраняемся и закрываем его. Теперь нам потребуется выполнить еще одно действие – инициализировать структуру Maildir. Чтобы это сделать, необходимо отправить себе электронное письмо командой s-nail. Так как файл sent доступен только после создания Maildir, потребуется отключить запись в этот файл. Для этого воспользуемся командой -Snorecord.
Для отправки письма добавим строку в команду s-nail. Обратите внимание, что в конце указывается имя пользователя – вам потребуется изменить его на свое.
В ответе вы можете увидите сообщение:
Это нормально – такое сообщение обычно появляется только при первой отправке.
Убедимся, что каталог был создан:
В результате должно отобразиться примерно следующее:
Теперь мы можем перейти к тестированию почтового клиента.
Тестирование отправки почты
Для начала запустим клиент, для этого используем команду:
Чтобы отправить сообщение, передадим содержимое текстового файла в процесс s-nail. Откроем для этого текстовый редактор:
Пропишем туда сообщение, например:
Сохраняемся и закрываем редактор. Для передачи сообщения в s-nail, используем команду cat. Она может принимать следующие значения:
Также вам потребуется заменить последний адрес, указанный в строчке кода:
После этого на указанную электронную почту должно прийти письмо. Чтобы проверить отправленные сообщения через s-nail, нужно прописать file +sent, где file – ваше уникальное название.
Установка и настройка Dovecot
Dovecot – это свободный IMAP- и POP3-сервер, разработанный с упором на безопасность. Нам он потребуется для того, чтобы подключить авторизацию по протоколу SMTP.
Устанавливаем Dovecot с компонентом для работы с СУБД:
Настраиваем способ хранения сообщений, для этого откроем файл:
Пропишем в него следующее:
В данном случае сообщения будут храниться в уже известном нам формате Maildir.
Далее настраиваем слушателя для аутентификации:
В файле прописываем:
На этом примере мы настраиваем сервис для аутентификации и создаем два прослушивателя: /var/spool/postfix/private/auth – для возможности Постфиксом использовать авторизацию через Dovecot, auth-userdb – сокет для авторизации через dovecot-lda.
В этот же файл добавляем:
Переходим к настройке аутентификации в Dovecot, открываем файл 10-auth.conf:
Задаем в нем следующие значения:
Открываем файл 10-ssl.conf командой vi /etc/dovecot/conf.d/10-ssl.conf и настраиваем в нем использование шифрования:
Добавляем автоматическое создания каталогов в файле vi /etc/dovecot/conf.d/15-lda.conf:
Настраиваем подключение к базе данных. Для начала открываем нужный файл:
В этом фрагменте мы указали на файл, в котором будут находиться настройки для получения пользователей и паролей из БД.
Переходим к корректированию файла с настройками работы mySQL:
В конце файла добавляем:
Таким образом, мы смогли настроить запрос на получение данных из БД. Осталось сконфигурировать интерфейс, на котором мы будем слушать Dovecot:
В этот файл прописываем:
По умолчанию Dovecot слушает и на ipv6 (listen = *, ::). Если на сервере не используется 6-я версия протокола TCP/IP, то в логах могут быть ошибки.
Разрешаем запуск Dovecot:
Изменение конфигурации Postfix для Dovecot
Так как для отправки писем мы используем протокол SMTP через Dovecot, нам потребуется внести некоторые изменения в основном файле. Откроем его:
Изменяем в нем следующее:
Также комментируем строки:
Вместо них прописываем:
Откроем файл sudo nano /etc/postfix/master.cf и раскомментируем в нем строчку:
Осталось перезагрузиться в Postfix:
Теперь вы можете протестировать отправку почты. Обратите внимание, что у Dovecot также есть лог – чтобы его включить, необходимо открыть файл sudo nano /etc/dovecot/conf.d/10-logging.conf и внести в него корректировки:
Первая строка указывает на путь к логу, а вторая показывает неудачные попытки авторизации.
Заключение
Теперь вы знаете, как выполняется установка и настройка Postfix и Dovecot на Ubuntu 20.04. Начинающим системным администраторам на первый взгляд это может показаться непосильной задачей, но с данными инструкциями все должно получиться. Удачи!
Установка и настройка Postfix и Dovecot на Ubuntu 20.04
Postfix — почтовый сервер с открытым исходным кодом, который чаще всего используется как почтовый сервер для веб-сайтов. После установки Postfix уже готов к выполнению своей основной задачи — работе с почтовыми сообщения, однако, в нем нет подсистемы авторизации.
То есть любой человек может подключиться к почтовому серверу и отправить или получить сообщения для любого почтового ящика. Dovecot — специальный плагин, которые добавляет возможность подключения функционала авторизации к Postfix. Именно эти два инструмента мы и рассмотрим в этой статье. Заварите чаю и садитесь поудобнее.
Перед началом установки всех необходимых компонентов, подготовим сервер. Это будет выделенный сервер с готовой конфигурацией.
В панели управления Selectel перейдем в представление Серверы и оборудование и нажмем на кнопку Заказать сервер.
На следующем представлении на вкладке Готовые серверы выберем сервер.
Выбираем сервер EL 10-SSD с процессором Intel Xeon E3-1230v5 3.4 ГГц, 4 ядра, памятью 32 ГБ DDR4 и двумя SSD-дисками по 240 ГБ. На сервер установим Ubuntu 20.04 LTS (64-bit).
Выбираем доступную площадку с возможностью ежедневной оплаты и нажимаем кнопку Оплатить сейчас.
В появившемся pop-up окне также нажимаем кнопку Оплатить.
После заказа сервера мы увидим таймлайн с шагами подготовки сервера: заказ сервера, оплата и настройка. Еще раз проверим конфигурацию и дождемся готовности сервера.
Через несколько минут сервер будет готов к работе.
Теперь можем приступать к установке программного обеспечения. Почтовый сервер Postfix можно установить с хранением учетных данных пользователей в базе данных и на файловой системе. Ниже расскажем про работу Postfix с базой данных MySQL, об установке интерфейса PostfixAdmin для управления почтовым сервером и Dovecot для авторизации. Вы также узнаете про работу с письмами через Roundcube и о повышении доверия почтовых сервисов при помощи SPF, DKIM и DMARC. Поехали!
Подготовительные действия
Перед началом установки пакетов, подготовим учетную запись postfix, от имени которой будем в дальнейшем выполнять все действия. Дополнительно выдадим учетной записи права sudo:
Установка и настройка MySQL для Postfix и Roundcube
Базу данных MySQL мы будем использовать сразу для двух целей: хранение учетных данных пользователей Postfix и хранение конфигурации и данных Roundcube.
Установим базу данных MySQL, PHP и веб-сервер Apache:
Запускаем MySQL, веб-сервер и добавим их в автозагрузку:
После установки базы данных, зададим пароль для учетной записи root и создадим базы данных для Postfix и Roundcube:
В консоли mysql> выполняем следующие команды, подтверждая каждую нажатием Enter:
Теперь все готово к установке интерфейса администрирования PostfixAdmin, который позволит в дальнейшем управлять почтовым сервером.
Установка и настройка PostfixAdmin
Загрузим PostfixAdmin, перенесем исполнимые файлы в /usr
Чтобы веб-сервер мог работать с директорией PostfixAdmin, изменим владельца соответствующей директории (и всех вложенных) на www-data:
Далее добавим символическую ссылку из директории веб-сервера:
Осталось создать файл конфигурации PostfixAdmin, перезагрузить веб-сервер и можно будет открывать веб-интерфейс PostfixAdmin.
В файле конфигурации PostfixAdmin содержатся следующие параметры:
$CONF[‘configured’] — параметр, который при значении true указывает на то, что в интерфейсе должна быть возможность конфигурирования. После завершения конфигурации значение автоматически изменится на false.
$CONF[‘setup_password’] — в этом параметре нужно указать хэш пароля, который будет использоваться для конфигурирования утилиты. Этот хэш можно получить в веб-интерфейсе по адресу http:// /postfixadmin/setup.php при его первом запуске.
$CONF[‘default_language’] — параметр задает язык интерфейса.
$CONF[‘database_type’] — параметр задает тип базы данных, в которой будут храниться данные PostfixAdmin. Доступны значения:
$CONF[‘database_host’] — параметр задает имя сервера, на котором расположена база данных.
$CONF[‘database_user’] — параметр задает имя пользователя, которое используется для подключения к базе данных.
$CONF[‘database_password’] — параметр задает пароль, который используется для подключения к базе данных.
$CONF[‘database_name’] — параметр задает имя базы данных, к которой выполняется подключение.
$CONF[‘admin_email’] — электронная почта администратора PostfixAdmin. Можно оставить этот параметр пустым.
$CONF[‘encrypt’] — параметр задает тип шифрования, которым будет зашифрован пароль. Доступные опции:
$CONF[‘default_aliases’] — параметр определяет алиасы для почтовых адресов пользователей. Например:
$CONF[‘domain_path’] — параметр определяет директорию, в которой будут храниться письма пользователей.
$CONF[‘domain_in_mailbox’] — параметр автоматически определяет директорию для хранения писем пользователей. Если в предыдущем параметре установлено ‘NO’, то в этом принудительно будет выставлено ‘YES’.
Как только указаны все параметры, можно открывать интерфейс управления PostfixAdmin. После задания установочного пароля на первоначальном экране, вы увидите его хэш. Этот хэш нужно вписать в значение параметра $CONF[‘setup_password’] и обновить интерфейс PostfixAdmin.
Альтернативный способ создать привилегированного пользователя — выполнить специальную команду в консоли:
После того, как привилегированный пользователь создан, можно входить в систему. Для этого нужно перейти по URL http:// /postfixadmin и ввести логин и пароль.
После этого откроется интерфейс PostfixAdmin, в котором можно управлять пользователями, создавать почтовые ящики, отправлять письма и т.д.
При тестировании отправки в почтовый ящик на mail.ru приходил ответ, что письмо подозрительное и оно даже не появлялось в почтовом ящике. Gmail отнесся более лояльно и помещал письма в папку Спам. Ниже скриншот из Gmail.
Установка Postfix
Установим из пакетов сам Postfix и коннектор к базе данных MySQL:
После окончания установки в консоли откроется графический интерфейс первоначальной настройки.
На первом экране настройки выбираем Internet Site:
На следующем экране нужно указать FQDN сервера, на котором работает почтовый сервис:
На этом настройка почтового сервера окончена и можно переходить к работе с остальными инструментами для почтового обмена. Если позже появится необходимость внести изменения в выполненные настройки, можно воспользоваться утилитой dpkg-reconfigure:
Для настройки Postfix, закомментируем в файле /etc/postfix/main.cf следующие строки символом #:
Затем добавляем следующее:
Открываем файл конфигурации /etc/postfix/master.cf на редактирование:
Добавляем в конец файла следующие строки:
На следующих шагах создадим конфигурационные файлы, при помощи которых Postfix сможет обращаться к базе данных MySQL.
Осталось сгенерировать самоподписанный сертификат. При выполнении команды openssl будут задаваться вопросы. Ответы на них могут быть любыми, на работу сервиса это никак не повлияет.
На этом настройка Postfix завершена и можно проверить ее корректность и запускать сервис:
Настройка брандмауэра для postfix
Для внесения изменений изменений в правила брандмауэра воспользуемся специальной утилитой ufw (расшифровывается как uncomplicated firewall). По сравнению с известным iptables, у ufw проще синтаксис. Установим и запустим ufw:
Проверим текущее правило для Postfix:
Разрешаем сетевое взаимодействие с Postfix при помощи следующей команды:
Настройка почтового сервера Dovecot
Перед началом работы с Dovecot, установим пакеты самого приложения и коннектор для работы с базой данных MySQL. Сразу же активируем службу и добавим в автозапуск.
Создадим специализированную учетную запись для работы с Dovecot и добавим права sudo:
Далее создадим конфигурационный файл /etc/dovecot/local.conf, в который впишем настройки сервиса. Обратите внимание, что сертификат из переменных ssl_key и ssl_cert будет использоваться тот же самый, который был сгенерирован для Postfix.
Теперь создадим конфигурацию для подключения к базе данных MySQL:
Настройки выполнены, остается перезапустить сервис:
Настройка брандмауэра для Dovecot
Аналогично Postfix, для настроек будем использовать утилиту ufw. Проверим текущее правило для сервисов Dovecot (их два):
Разрешаем сетевое взаимодействие с Dovecot при помощи следующей команды:
Установка веб-интерфейса Roundcube
Веб-сервис Roundcube представляет из себя почтовый клиент, который предназначен для получения и отправки электронной почты. Работает на основе сервера приложений Apache и базы данных MySQL, которые мы уже подготовили к работе.
Начнем с создания конфигурации для Apache:
После этого перезагрузим Apache:
Загрузим пакет Roundcube из репозитория на Github, распакуем его и копируем в созданную папку сервера Apache:
Теперь нужно дать веб-серверу права на доступ к директории с файлами Roundcube:
Теперь откроем интерфейс Roundcube по адресу http://ip_address/installer и убедимся, что отсутствуют критические ошибки.
Если таковые ошибки присутствуют, то их необходимо исправить. К примеру, мы получили следующие ошибки:
Видим для начала, что в PHP-интерпретаторе не хватает расширения php-xml, отвечающий за поддержку формата XML и программного интерфейса DOM. Также у нас отсутствует расширение функций интернационализации php-intl. Устанавливаем оба недостающих пакета:
Перезагружаем веб-сервер для активации расширений:
Перезагружаем страничку инсталлятора Roundcube и видим, что ошибки ушли, а требуемые расширения работают корректно.
Желательно также установить и опциональные расширения по той же схеме, например:
Следующим этапом надо проверить, что у нас есть необходимый коннектор к базе данных. Поскольку в инструкции мы рассматриваем классический вариант с MySQL, то будет достаточно только его. Еще нужно установить правильную временную зону.
Открываем на редактирование конфигурационный файл PHP:
Нажимаем Ctrl + W и вводим слово timezone. Подтверждаем выполнение поиска нажатием Enter. Раскомментируем строку (убрав символ ;) date.timezone и приводим ее к виду:
Выходим из режима редактирования Ctrl + X, подтверждаем сохранение изменений и еще раз перезагружаем веб-сервер:
Еще раз обновляем страничку инсталлятора и видим, что переменная date.timezone успешно определена:
В нижней части интерфейса нужно нажать Next и перейти к следующему представлению. Здесь мы укажем настройки базы данных. Имя базы данных, равно как и имя пользователя задаем roundcube. При первой проверке соединения Roundcube сообщит о том, что у нас нет схемы данных. Позволяем ее создать, нажав на кнопку Initialize database.
Далее убедимся, что схема данных корректно создана и отсутствуют критические ошибки.
Переходим по URL http:// /roundcube и авторизуемся при помощи логина и пароль от почтового аккаунта.
На этом настройка Roundcube завершена. Для безопасности не забудьте удалить директорию installer из корня сайта по адресу /var/www/html/sites/roundcube или выставьте переменную enable_installer в config.inc.php в disabled.
Настройка DKIM, SPF и DMARC записей
Настройка DKIM
Для чего нужен DKIM? Этот инструментарий добавляет к заголовкам письма цифровую электронную подпись, что по задумке должно гарантировать подлинность того, что письмо отправлено именно от указанного в заголовках домена. Для генерации DKIM-ключа мы будем использовать утилиту opendkim. Установим утилиту, запустим ее и добавим в автозапуск.
Теперь создадим специальную директорию с ключами, сгенерируем ключи (закрытый и открытый), внесем изменения в конфигурационные файлы и перезапустим сервис.
Теперь посмотрим содержимое файла /etc/opendkim/keys/ /dkim.txt. В нем содержится публичный ключ, который необходимо указать в настройках домена.
Копируем значение без кавычек, которое указано в круглых скобках и вставляем в значение новой TXT-записи в настройках DNS. Для этого в панели управления Selectel перейдем в представление DNS-хостинг, откроем настройки домена и нажмём кнопку Добавить запись. В выпадающем меню нужно выбрать тип записи TXT.
Настройка SPF
Этот инструмент помогает внешним интернет-сервисам (а особенно сервисам электронной почты) однозначно определять серверы, с которых может отправляться почта от домена. Для этого, аналогично примеру выше, нужно создать новую TXT-запись в настройках домена.
Настройка DMARC
DMARC позволяет настроить указание для других сервисов что делать с теми письмами, которые не были одобрены по итогу проверок DKIM и SPF. Самый оптимальный способ — это ничего не делать и отправить уведомление администратору домена. Именно такую настройку мы и произведем в консоли управления доменом. Для этого также создаем новую TXT-запись.
Заключение
В статье мы рассмотрели целую группу инструментов для создания полноценного сервиса электронной почты. Самое сложное при реализации подобной задачи — это настройка корректного взаимодействия всех компонентов друг с другом.
Еще одна важная задача при эксплуатации этих инструментов — следить за выходом обновлений для каждого из них и своевременно их применять.























