Как сделать почтовый сервер на linux

Обновлено: 07.07.2024

Как вам может быть известно, я не очень доверяю SaaS-решениям. Причин тому больше одной. SaaS’ы оставляют за собой право менять Terms of Service в любой момент как им вздумается. SaaS’ы сливают персональные данные. SaaS’ы меняют пользовательский интерфейс и функционал на свое усмотрение. Наконец, если вы используете SaaS’ы от какого-нибудь Google, то однажды получив в них бан за любое нарушение ToS (который, напомню, постоянно меняется), назад вы больше никогда не разбанитесь. В прошлой статье мы решали описанные проблемы, поднимая / перенося на VDS свой блог. Сегодня же мы попробуем разобраться, как с нуля поднять собственный почтовый сервер с TLS, спам-фильтром и списками рассылок.

Примечание: Описанные далее действия производились на Ubuntu Linux 16.04. Однако для других версий Ubuntu, ровно как и для других дистрибутивов Linux, последовательность шагов должна не сильно отличаться.

Подготовка

Примем за рабочую теорию, что у вас есть выделенный сервер (VDS) и указывающее на него доменное имя. Далее в качестве примера я буду использовать домен mail.eax.me. Если VDS у вас нет, сейчас есть множество VDS-провайдеров, предоставляющих их за смешные деньги. На момент написания этих строк я предпочитаю пользоваться DigitalOcean. При регистрации в DigitalOcean по моей реферальной ссылке вы получаете на счет 10$, что позволит бесплатно пользоваться VDS в течение двух месяцев.

В /etc/hosts прописываем Fully Qualified Domain Name (FQDN):

Ставим необходимые пакеты:

sudo apt install mysql-server mysql-client postfix postfix-mysql \
dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql

Postfix представляет собой Mail Transfer Agent (MTA), он будет отвечать за отправку и получение почты по SMTP. Dovecot будет предоставлять доступ к письмам по протоколу IMAP (также поддерживается ныне устаревший POP3). СУБД MySQL будет использоваться для хранения информации о доменах, пользователях и алиасах. Вместо MySQL с тем же успехом можно взять и MariaDB.

Наполняем базу

В MySQL создаем пользователя и базу данных:

$ mysql --user root --password
mysql> CREATE DATABASE mail;
mysql> CREATE USER 'mail'@'localhost' IDENTIFIED BY 'pa55w0rd';
mysql> GRANT ALL ON mail.* TO 'mail'@'localhost';
mysql> exit

Заходим под новым пользователем:

Создаем следующие таблицы:

CREATE TABLE `virtual_domains` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR ( 50 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

CREATE TABLE `virtual_users` (
`id` INT NOT NULL AUTO_INCREMENT ,
`domain_id` INT NOT NULL ,
`password` VARCHAR ( 106 ) NOT NULL ,
`email` VARCHAR ( 120 ) NOT NULL ,
PRIMARY KEY ( `id` ) ,
UNIQUE KEY `email` ( `email` ) ,
FOREIGN KEY ( domain_id ) REFERENCES virtual_domains ( id )
ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

CREATE TABLE `virtual_aliases` (
`id` INT NOT NULL AUTO_INCREMENT ,
`domain_id` INT NOT NULL ,
`source` VARCHAR ( 100 ) NOT NULL ,
`destination` VARCHAR ( 100 ) NOT NULL ,
PRIMARY KEY ( `id` ) ,
FOREIGN KEY ( domain_id ) REFERENCES virtual_domains ( id )
ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Вводим информацию о доменах, пользователях и алиасах:

INSERT INTO virtual_domains ( `id` , `name` ) VALUES ( 1 , 'eax.me' ) ;

INSERT INTO virtual_users ( `id` , `domain_id` , `email` , `password` )
VALUES ( 1 , 1 , 'mail@eax.me' ,
ENCRYPT ( 's3cr3t' , CONCAT ( '$6$' , SUBSTRING ( SHA ( RAND ( ) ) , - 16 ) ) ) ) ;

INSERT INTO virtual_aliases
( `id` , `domain_id` , `source` , `destination` )
VALUES ( 1 , 1 , 'postmaster@eax.me' , 'mail@eax.me' ) ;

Настраиваем Postfix

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,⏎
permit_mynetworks,reject_unauth_destination

hosts = 127.0.0.1
user = mail
password = pa55w0rd
dbname = mail
query = SELECT 1 FROM virtual_domains WHERE name='%s'

…, а также /etc/postfix/mysql-users.cf:

hosts = 127.0.0.1
user = mail
password = pa55w0rd
dbname = mail
query = SELECT 1 FROM virtual_users WHERE email='%s'

…, и наконец /etc/postfix/mysql-aliases.cf:

hosts = 127.0.0.1
user = mail
password = pa55w0rd
dbname = mail
query = SELECT destination FROM virtual_aliases WHERE source='%s'

Поскольку файлы содержат пароль от базы, стоит выставить на них правильные права:

sudo chown postfix:postfix / etc / postfix / mysql- * .cf
sudo chmod o-rwx / etc / postfix / mysql- * .cf

Проверяем, что он видит домены, пользователей и алиасы:

$ sudo postmap -q mail@eax.me mysql:/etc/postfix/mysql-users.cf
1
$ sudo postmap -q eax.me mysql:/etc/postfix/mysql-domains.cf
1
$ sudo postmap -q postmaster@eax.me mysql:/etc/postfix/mysql-aliases.cf
mail@eax.me

Теперь самое время заняться настройкой Dovecot.

Настраиваем Dovecot

В /etc/dovecot/conf.d/10-auth.conf меняем следующее:

Далее правим /etc/dovecot/conf.d/auth-sql.conf.ext:

passdb <
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
>
userdb <
driver = static
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
>

driver = mysql
connect = host=127.0.0.1 user=mail password=pa55w0rd dbname=mail
default_pass_scheme = SHA512-CRYPT
password_query = \
SELECT email as user, password \
FROM virtual_users \
WHERE email='%u';

Правим в /etc/dovecot/conf.d/10-master.conf следующее:

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

service auth unix_listener /var/spool/postfix/private/auth mode = 0666
user = postfix
group = postfix
>

unix_listener auth-userdb mode = 0600
user = vmail
>

service auth-worker user = vmail
>

Наконец, в файле /etc/dovecot/conf.d/15-lda.conf указываем:

Фух, с конфигами покончено. Теперь для каждого домена говорим:

Создаем пользователя и группу vmail, проставляем права и перезапускаем Dovecot:

sudo groupadd -g 5000 vmail
sudo useradd -g vmail -u 5000 vmail -d / var / mail
sudo chown -R vmail:vmail / var / mail
sudo chown -R vmail:dovecot / etc / dovecot
sudo chmod -R o-rwx / etc / dovecot
sudo service dovecot restart

Проверяем

;; ANSWER SECTION:
eax.me. 3599 IN MX 5 mail.eax.me.

Прикручиваем TLS

Поскольку мы не дураки платить за сертификаты, то воспользуемся Let’s Encrypt. После установки certbot’а говорим:

Теперь актуальный ключ и сертификат всегда будут лежать в:

Затем редактируем /etc/dovecot/conf.d/10-ssl.conf

Но это еще не все! Нужно, чтобы Postfix и Dovecot автоматически перечитывали сертификаты при их обновлении.

Этот урок расскажет как настроить работающий почтовый сервер в Ubuntu или Debian. Как мы знаем, два главных протокола используются в почтовом сервере — это SMTP и POP/IMAP. В этом уроке postfix будет использован для SMTP, в то время как dovecot будет использоваться для POP/IMAP. Они оба с открытым исходным кодом, стабильные и имеют множество настроек.

Пожалуйста, обратите внимание, что вопросы безопасности почтового сервера за сферой данного урока, и они освещены в статье "Как установить Clam Antivirus, SpamAssassin и MailScanner на почтовом сервере под Ubuntu".

Предварительные требования

Каждый домен должен иметь запись на DNS сервере. Рекомендуется НЕ использовать живые домены для целей тестирования. В этом уроке тестовый домен example.tst будет использован в лабораторных условиях. DNS сервер для этого гипотетического домена имел бы, по крайней мере, следующие записи.

  • Прямая зона для example.tst:
  • Обратная зона для example.tst:

Когда настраивается живой почтовый сервер, эти записи могут быть изменены, в соответствии с системными требованиями.

Настройка имени хоста (hostname)

Во-первых, hostname почтового сервера должно быть определено в /etc/hostname и /etc/hosts. Причём в первом файле следует размещать только имя хоста.

Добавление пользователей

Каждый пользователь Linux, по умолчанию, имеет автоматически созданный почтовый ящик. Эти пользователи и почтовые ящики будут использоваться как почтовые учётные записи и соответствующие им адреса почтовых ящиков. Создание пользователя очень простое.

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

Профиль службы: postfix
Каталог с конфигурационными файлами /etc/postfix/
Скрипт /etc/init.d/postfix
Лог-файл /var/log/mail.log
Номер порта TCP/25

SMTP: Установка postfix

postfix это один из наиболее используемых SMTP серверов, поскольку он стабильный, лёгкий, масштабируемый и высоко настраиваемый. Установка postfix может быть выполнена использованием apt-get.

Во время установки задаются тип почтового сервера и доменное имя.

01

02

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

03

Также задаём доменное имя почтового сервера. Эта настройка определяет, что все письма, приходящие с этого почтового сервера, будут иметь @example.tst в качестве домена отправителя.

Конфигурационные файлы postfix размещены в /etc/postfix. Важны следующие конфигурационные файлы. Некоторые из них могут отсутствовать и их нужно создать вручную.

SMTP: Настройка конфигурационных файлов

Время приготовить конфигурационные файлы. Файлы transport и aliases не поставляются при установке, их нужно создать вручную.

Сделайте резервную копию main.cf а затем модифицируйте. Следующие строки добавлены/изменены в конфигурационном файле. Для дальнейших подробностей о параметрах обратитесь к официальному README и документу по настройки.

Письмам, предназначенным для домена example.tst, определено быть доставлено локально без каких-либо DNS запросов.

Предполагаем, что все письма, отправленные пользователю userA, должны быть доставлены также пользователю userB, для этого файл aliases изменён как показано ниже:

Обратите внимание: Синтекс 'userA: userB' определяет, что почта должна быть направлена только пользователю userB. Пользователь userA не будет получать копию письма.

SMTP: Запуск и обслуживание

postfix может быть запущен командой.

Лог-файл в /var/log/mail.log должен предоставить полезную информацию, если что-то пойдёт не так. Прослушивает ли почтовый сервер TCP порт 25 можно также проверить используя netstat.

Как видно из вывода, сервер прослушивает TCP порт 25 для входящих запросов соединений.

Установка и настройка POP/IMAP

Профиль службы: dovecot
Директория конфигурационных файлов /etc/dovecot
Скрипт /etc/init.d/dovecot
Файл журнала /var/log/mail.log
Номер порта TCP: 110 (POP3), 143 (IMAP), 993 (IMAPS), 995 (POP3S)

POP/IMAP: Установка dovecot

dovecot — это, без сомнений, лидирующее IMAP и POP серверное программное обеспечения в сообществе опен сорс. Очень просто установить и настроить dovecot. Для установки dovecot мы опять будем использовать apt-get .

Прямо из коробки dovecot может поддерживать POP3 и IMAP (обычный текст), а также зашифрованный POP3S и IMAPS (безопасный). По умолчанию dovecot создаёт и использует самоподписанный сертификат для SSL шифрования. Сертификаты могут быть созданы вручную или ипортированы позже, в зависимости от требований. В этом уроке будет использован сапомодписанный сертификат, сгенерированный dovecot.

На последних версиях больше не создаёт. Сертификаты нужно создавать вручную и вручную подключать их. Как это сделать, описано в этой инструкции.

POP/IMAP: Подготовка конфигурационных файлов

Следующие параметры изменяются как нужно.

Этого должно быть достаточно для запуска службы POP/IMAP в почтовом сервере.

POP/IMAP: Установка службы

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

Вновь лог-файл (/var/log/mail.log) может предоставить важные зацепки, если что-то пойдёт не так. Узнать, запущен ли dovecot, можно при использовании netstat следующим образом.

Использование почтового сервера с пользовательской почтовой программой

Почтовый сервер теперь готов к использованию. Почтовая учётная запись может быть настроена с использованием вашего любимого почтового клиента на настольном компьютере, ноутбуке, планшете или телефоне. Можно настроить и webmail (почту с веб-интерфейсом) на сервере, но инструкция по webmail будет в следующих уроках. На данном этапе, почтовая программа Mozilla Thunderbird определила следующие настройки для моего сервера:

01

Крайне рекомендуется перейти и продолжить по этой инструкции для включения SSL шифрования.

Решение проблем с почтовым сервером

  • Лучший ваш друг — это лог-файл /var/log/mail.log. Любые зацепки, почему почта не работает, могут быть найдены здесь.
  • Убедитесь, что файервол должным образом настроен.
  • Убедитесь, что DNS сервер имеет должные записи.

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

Валидные DNS записи необходимы для живых почтовых серверов. Можно сделать тюнинг настроек postfix и dovecot в соответствии с потребностями.

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

Надеюсь это поможет.

Эти программы нельзя установить на виртуальный хостинг. Полностью автономный почтовый сервер можно сделать только на виртуальном частном (выделенном) сервере, т. е. На VDS (VPS). Самые дешёвые облачные VDS (VPS) сервера! За 180 рублей/мес — эта статья, как следует из заголовка, расскажет вам о качественном и при этом самом дешёвом варианте виртуального частного сервера, которые при этом ещё и используют облачные технологии.

Как Установить и Настроить Почтовый Сервер в Ubuntu 18.04 LTS

Если вы компания среднего размера, наличие собственного почтового сервера даст вам ряд преимуществ. Вы сможете контролировать весь ваш трафик и определять правила. Таким образом, вам будет проще управлять своими услугами.

В этом руководстве мы покажем вам, как установить и настроить почтовый сервер Ubuntu на VPS-сервер под управлением Ubuntu 18.04. Существует множество альтернатив и способов создания почтового сервера в Linux, однако мы сосредоточимся на Postfix!

Скидки до 77% на планы VPS-хостинга от Hostinger!

Настройка DNS-сервера для почтового сервера Ubuntu

Просто следуйте этому пошаговому руководству, и проблем с настройкой возникнуть не должно!

1. Подключитесь и Обновите Сервер

Войдите на свой сервер, используя SSH. Если у вас возникли проблемы, ознакомьтесь с нашим руководством по PuTTY! После входа в систему обновите свой компьютер, используя следующую команду:

2. Установите Bind

Чтобы настроить DNS-сервер, который будет использовать Postfix, нам понадобится дополнительный инструмент — Bind. Давайте его установим:

3. Настройте /var/cache/db.test

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

Затем добавьте следующее:

Не забудьте заменить IP-адрес на адрес вашего сервера и изменить домен на тот, который вы хотите использовать. Нажмите CTRL+O, чтобы сохранить изменения, и CTRL+X, чтобы закрыть редактор nano.

4. Добавить Новую Зону к Конфигурации Bind

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

Теперь мы можем добавить нашу новую зону в файл конфигурации зоны Bind. Для этого выполните следующую команду:

И добавляем новую зону:

Опять-таки нажмите CTRL+O, чтобы сохранить изменения, и CTRL+X, чтобы закрыть редактор файла.

5. Настройте/etc/bind/named.conf.options

Теперь в файле /etc/bind/named.conf.options необходимо раскомментировать строку с перенаправлением и добавить Google DNS — 8.8.8.8. Для этого просто удалите символы //, как показано на скриншоте ниже.

6. Перезапустите Bind

Теперь нам нужно перезапустить службу bind9. Сделать это можно одной из двух команд:

Настройка Текущего Подключения

Когда закончите, необходимо сменить DNS-сервер на почтовый сервер Ubuntu, так как он тоже будет нашим DNS-сервером.

1. Загрузите Network-Manager

Для этого мы можем использовать программу управления сетевыми подключениями network-manager. Установите его, введя следующую команду в командную строку.

2. Покажите Все Активные Соединения

После этого мы покажем все активные подключения.

Активные соединения будут выделены зелёным.

3. Выберите Соединение для Редактирования

Теперь, когда мы знаем, какое соединение редактировать, можно двигаться дальше. В следующей команде замените [имя активного соединения] на своё:

4. Удалите Существующий DNS-сервер

Удалите DNS-сервер с помощью следующей команды:

5. Установите Новый DNS-сервер

Чтобы установить новый DNS-сервер, вам необходимо выполнить следующие команды:

Сохраняем изменения и выходим:

6. Перезапустите Соединение

Дальше мы перезапустим наше соединение, чтобы изменения вступили в силу. Не забудьте ввести имя вашего соединения:

7. Измените Текущее Имя Хоста

И последний шаг перед установкой почтового сервера — изменить текущее имя хоста:

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

Как Установить и Настроить Почтовый Сервер в Ubuntu 18.04

Мы почти закончили, ваш почтовый сервер Ubuntu скоро будет готов к работе. Вот что нам осталось сделать:

1. Установка Почтового Сервера Postfix

Пришло время установить Postfix. Postfix — это почтовый сервер, написанный на C. Его главная особенность — скорость выполнения и открытый исходный код. Установите его с помощью следующей команды:

Во время установки нам будет предложено настроить пакет. На первом экране выберите опцию Internet Site.

Postfix очень гибкий и допускает обширную настройку, но в этом руководстве мы лишь подправим конфигурацию по умолчанию.

2. Добавляем Пользователя

Затем мы должны добавить нашего пользователя в групповую почту:

Это необходимо сделать, поскольку в Ubuntu 18.04 эту утилиту могут использовать только пользователи, входящие в почтовую группу.

После этого мы должны создать пользователей и добавить их в почтовую группу, чтобы они могли отправлять и получать почту. Я добавлю Габриэля:

Затем нам нужно установить пароль для нового пользователя:

Проверка Почтового Сервера Ubuntu

Теперь давайте проверим, что у нас получилось. Мы отправим и получим электронное письмо с терминала. Для этого установим пакет mailutils:

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

Там после выполнения команды mail, мы увидим только что отправленное письмо. Чтобы открыть его, просто введите номер письма, в данном случае 1.

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

Вот и всё! Теперь вы отправляете электронные письма со своего собственного почтового сервера в Ubuntu 18.04! Поздравляем.

Итоги

Настроить почтовый сервер в Ubuntu довольно просто, чего не скажешь про управление. Однако в Linux это рекомендуется делать с целью безопасности и управления ресурсами.

К тому же довольно полезно иметь настроенный и функциональный почтовый сервер в компании.

Есть много способов улучшить и поддерживать почтовый сервер. Этот процесс требует времени и постоянного внимания. Поэтому мы рекомендуем продолжить изучать эту тему. Удачи и успешных рассылок!

Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.

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

Перед началом установки всех необходимых компонентов, подготовим сервер. Это будет выделенный сервер с готовой конфигурацией.

В панели управления 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[‘default_language’] — параметр задает язык интерфейса.

$CONF[‘database_type’] — параметр задает тип базы данных, в которой будут храниться данные PostfixAdmin. Доступны значения:

  • mysql для MySQL 3.23 и 4.0, 4.1 или 5;
  • mysqli для MySQL 4.1+ или MariaDB;
  • pgsql для PostgreSQL;
  • sqlite для SQLite 3.

$CONF[‘database_host’] — параметр задает имя сервера, на котором расположена база данных.

$CONF[‘database_user’] — параметр задает имя пользователя, которое используется для подключения к базе данных.

$CONF[‘database_password’] — параметр задает пароль, который используется для подключения к базе данных.

$CONF[‘database_name’] — параметр задает имя базы данных, к которой выполняется подключение.

$CONF[‘admin_email’] — электронная почта администратора PostfixAdmin. Можно оставить этот параметр пустым.

$CONF[‘encrypt’] — параметр задает тип шифрования, которым будет зашифрован пароль. Доступные опции:

  • md5crypt;
  • md5;
  • system — учетная запись по умолчанию, от которой работает PHP;
  • cleartext — это простой открытый текст (не рекомендуется, т.к. пропадает смысл использования базы данных для повышения безопасности);
  • mysql_encrypt используется для интеграции с PAM;
  • authlib использует пароли типа courier-authlib и требует установки значения параметра $CONF[‘authlib_default_flavor’];
  • dovecot:CRYPT-METHOD использует зашифрованный пароль из dovecot, например, dovecot:CRAM-MD5;
  • php_crypt:CRYPT-METHOD:DIFFICULTY:PREFIX использует встроенную в PHP функцию шифрования. Пример: php_crypt:SHA512:50000
    • php_crypt CRYPT-METHOD: Поддерживаемые значения DES, MD5, BLOWFISH, SHA256, SHA512;
    • php_crypt DIFFICULTY поддерживает значения BLOWFISH:4-31, SHA256:1000-999999999, SHA512:1000-999999999;
    • не используйте методы dovecot:*, которые включают имя пользователя в хэш;
    • минимально допустимая версия dovecot 2.1 (‘doveadm pw’ версии 2.0.x не поддерживают опцию ‘-t’);
    • dovecot 2.0.0 — 2.0.7 не поддерживается.

    $CONF[‘default_aliases’] — параметр определяет алиасы для почтовых адресов пользователей. Например:

    $CONF[‘domain_path’] — параметр определяет директорию, в которой будут храниться письма пользователей.

    $CONF[‘domain_in_mailbox’] — параметр автоматически определяет директорию для хранения писем пользователей. Если в предыдущем параметре установлено ‘NO’, то в этом принудительно будет выставлено ‘YES’.

    Как только указаны все параметры, можно открывать интерфейс управления PostfixAdmin. После задания установочного пароля на первоначальном экране, вы увидите его хэш. Этот хэш нужно вписать в значение параметра $CONF[‘setup_password’] и обновить интерфейс PostfixAdmin.

    Альтернативный способ создать привилегированного пользователя — выполнить специальную команду в консоли:


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



    Установка Postfix

    Установим из пакетов сам Postfix и коннектор к базе данных MySQL:

    После окончания установки в консоли откроется графический интерфейс первоначальной настройки.

    На первом экране настройки выбираем Internet Site:


    На следующем экране нужно указать FQDN сервера, на котором работает почтовый сервис:


    Затем добавляем следующее:

    Открываем файл конфигурации /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:


    Видим для начала, что в 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.


    Далее убедимся, что схема данных корректно создана и отсутствуют критические ошибки.



    На этом настройка 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


    Заключение

    В статье мы рассмотрели целую группу инструментов для создания полноценного сервиса электронной почты. Самое сложное при реализации подобной задачи — это настройка корректного взаимодействия всех компонентов друг с другом.

    Еще одна важная задача при эксплуатации этих инструментов — следить за выходом обновлений для каждого из них и своевременно их применять.

    Все команды мы будем выполнять от имени пользователя root, поэтому мы не будем использовать в командах sudo для повышения прав, если вы выполняете под своим пользователям добавляйте sudo в начале команды.

    Необходимо чтобы был установлен mysql server | apache2 | php, если его нет необходимо установить:

    Также мы будем использовать Midnight Commander, если у вас его нет необходимо установить следующей командой:

    Краткая справка по командам MC:

    • запуск: mc
    • открытие файла для редактирования: F4
    • открытие файла для чтения: F3
    • удаление файла или выделенного текста в файле: F8
    • сохранение отредактированного файла: F2
    • создание директории: F7
    • переход в верхнее меню: F9
    • закрытие mc: F10
    • история команд: alt + H
    • свернуть и развернуть mc: Ctrl + O

    Краткая справка по работе в shell - консоли unix | linux:

    • переход по директория: cd /путь/путь
    • создание файла: :>имяфайла
    • копирование файла: cp имяисходного имянового
    • перемещение или переименование файла: mv имяисходного имянового
    • список файлов и папок в текущей директории: ls -l

    Установка пакетов почтового сервера:

    * Все команды будут выполняться от имени root, если вы выполняете под своим пользователям добавляйте sudo в начале команды.

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

    Создание базы mysql

    * Необходимо чтобы был установлен mysql-server, введите команды ниже и пароль от пользователя root в mysql.

    * Необходимо заменить MysqlPasswordForMailBase на ваш пароль cгенерированный либо придуманный для пользователя mail в mysql:

    Устанавливаем postfixadmin систему управления ящиками через веб-интерфейс:

    Переходим в директорию

    * Пример команды скачивания файла в текущую директорию:

    Переименовываем полученный файл в postfixadmin.tar.gz:

    Промотрим список директорий и файлов в текущей папке:

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

    Переходим в директорию и выставляем права 770 и владельца root:www-data, на директорию postfixadmin также нужно выставить такие значения:

    Вставляем в файл:

    Запуск конфигурирования почтового демона exim:

    Копируем в файл exim4.conf содержимое нижнего блока:

    Для начала создадим файл:

    Копируем в файл /etc/dovecot/dovecot.conf содержимое нижнего блока:

    Обнулим содержимое файла:

    * Необходимо заменить MysqlPasswordForMailBase на пароль от вашего пользователя mail в mysdl который мы создали выше:

    Копируем в файл /etc/dovecot/dovecot-sql.conf содержимое нижнего блока

    Создаим файл конфигурации:

    * Необходимо заменить MysqlPasswordForMailBase на пароль от вашего пользователя mail в mysdl который мы создали выше:

    Необходимо создать dovecot-sieve.log в директории /var/log и выставить владельца и права:

    Для dovecot.log аналогично:

    Установка и настройка spamassassin:

    Обнулим содержимое файла конфигурации:

    Копируем в файл /etc/spamassassin/local.cf содержимое нижнего блока:

    После установки он по умолчанию выключен.

    Поэтому открываем файл /etc/default/spamassassin и меняем строку:
    ENABLED=1

    Установка и настройка clamav - антивирус:

    Выполним команду для просмотра прав:

    Результат должен быть похож на:

    Дополнительно поставить модуль dovecot:

    И просмотрим статус работы:

    Настройка postfixadmin:

    Проходим в настройки и устанавливаем данное значение.

    Также находим строчки с подключением к базе и меняем на имя нашей базы и пароль от неё.

    Прокручиваем страницу в конец и здесь нам предлагают установить пароль для установки (Change setup password), придумываем любой пароль.

    * Важно: пароль должен содержать минимум три буквы.

    После установки пароля нам необходимо скопировать сгенерированный hash скопировать в настройки (config.inc.php), у вас он будет другой не копируйте наше значение.

    Далее вводим наш пароль который мы придумали (не hash).

    И придумываем для администратора пароль, с этими данными мы будем заходить в администрование почтовых ящиков.

    Нажимаем Add Admin, и нас поздравят с основной настройкой postfixadmin:

    Далее переходим в список доменов, добавить домен:

    Обзор, создать ящик:

    Все работает осталось немного, установить и настроить roundcube для просмотра и отправки писем, это почтовый клиент на подобее outlook, the bat. только в веб-интефейсе на подобее gmail.

    Установка, настройка roundcube:

    * Название файла может не совпадать, вы можете скачать другую версию, будьте внимательно и подставляйте свою версию.

    Переходим в директорию и выставляем права 770 и владельца root:www-data или вашпользователь:www-data, на директорию roundcubemail также нужно выставить такие значения:

    Вставляем в файл:

    Создадим базу для roundcubemail, подключаемся под root пользователем mysql, не путать root в системе linux (ubuntu|debian . ):

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

    На первом шаге нажимаем Next и здесь нас интересует:

    Нажимаем Create Config. Нам сообщают что конфиг успешно создан, нажимаем Continue (Продолжить):

    Нажимаем Initialized Database.

    Переходим в диреторию roundcubeamail и открываем файл конфигурации config.inc.php:

    И добавьте в конец следующие строчки:

    Для безопасности необходимо удалить папку installer:

    На этом все настройка почтового сервера завершена.

    ClamAV returned lstat() failed: Permission denied. ERROR

    Нужно в конфигурационных файлах

    изменить параметр на "yes":

    Подписывайтесь на наш канал в YouTube, ведь это ещё не конец!

    Читайте также: