настройка smtp сервера linux

Установка и настройка SMTP-сервера Postfix в Ubuntu 20.04

Postfix – это агент пересылки сообщений (Mail Transfer Agent, или MTA), приложение для обмена электронной почтой. Это руководство поможет вам установить и настроить Postfix только для отправки сообщений локальных приложений. Такая настройка полезна в ситуациях, когда вам нужно регулярно отправлять уведомления ваших приложений по электронной почте или просто обрабатывать большой исходящий трафик, который не поддерживают сторонние провайдеры электронной почты. Кроме того, это позволяет получить легкую альтернативу полноценному SMTP-серверу с сохранением требуемой функциональности.

В этом руководстве мы установим и настроим Postfix как SMTP-сервер исходящей почты. Также мы расскажем, как запрашивать бесплатные сертификаты TLS от Let’s Encrypt и шифровать исходящие электронные письма с их помощью.

Требования

Примечание: Имя хоста сервера должно соответствовать этому домену или поддомену. Чтобы проверить имя хоста своего сервера, введите команду hostname. Вывод должен совпадать с именем сервера, которое он получил при создании.

1: Установка Postfix

Чтобы установить Postfix, а вместе с ним и ряд вспомогательных программ, необходимых для настройки почты, просто установите пакет mailutils.

Обновите индекс пакетов:

А затем установите mailtuils:

sudo apt install mailutils

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

Please select the mail configuration type that best meets your needs.
[…] General type of mail configuration:
No configuration
Internet site
Internet with smarthost
Satellite system
Local only

Рекомендуется выбрать стандартную опцию Internet site. Для этого нажмите Tab и Enter. Если вы видите только описательный текст, нажмите Tab, чтобы выбрать OK, а затем нажмите Enter.

Если диалоговое окно не запустилось автоматически, откройте его вручную:

sudo dpkg-reconfigure postfix

После этого программа предложит выбрать имя почты, которое определяется параметром System mail name.

The ‘mail name’ is the domain name used to ‘qualify’ _ALL_ mail addresses without a domain name.
[…] System mail name:

Поле System mail name должно совпадать с именем сервера, которое вы выбрали при его создании. Укажите имя, а затем нажмите Tab и Enter.

2: Настройка Postfix

Теперь нужно настроить Postfix для отправки и получения сообщений с localhost – то есть с локального хоста, на котором установлен почтовый сервер.

Для этого Postfix должен прослушивать интерфейс loopback – это виртуальный сетевой интерфейс, который используется сервером для внутреннего взаимодействия. Откройте конфигурационный файл Postfix в текстовом редакторе:

sudo nano /etc/postfix/main.cf

Найдите там эти строки:

Измените значение строки inet_interfaces на loopback-only.

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

Вместо стандартного списка нужно использовать этот:

Если вместо домена вы используете поддомен и хотите, чтобы почта выглядела так, будто она была отправлена с главного домена, добавьте в конец файла main.cf такую строку:

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

Сохраните и закройте файл.

Примечание: Если вы разместили несколько доменов в рамках одного сервера, остальные домены можно добавить в настройки Postfix с помощью директивы mydestination.

sudo systemctl restart postfix

3: Тестирование SMTP-сервера

Теперь нужно проверить, может ли Postfix отправлять сообщения на внешний электронный адрес. Для этого используется команда mail, которая также входит в пакет mailutils.

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

Примечание: Вы можете указать другую тему и тело сообщения. Вместо your_email_address используйте валидный адрес электронной почты.

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

Если вы получили сообщение об ошибке от команды mail или не получили тестовое сообщение на указанный адрес, хотя прошло много времени, убедитесь, что не допустили ошибок в конфигурациях Postfix и что имя вашего сервера и имя хоста направлены на ваш домен.

Обратите внимание, в этой конфигурации адрес в поле From для отправляемых вами тестовых электронных писем будет иметь вид your_user_name@your_domain, где your_user_name – это пользователь сервера, от имени которого вы запускали команду.

4: Пересылка почты

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

Чтобы Postfix отправлял сообщения, сгенерированные системой, на ваш почтовый адрес, отредактируйте файл /etc/aliases.

sudo nano /etc/aliases

Стандартный файл выглядит так:

# See man 5 aliases for format
postmaster: root

Пока что тут есть всего одна директива, которая пересылает все системные письма на root. Чтобы сообщения перенаправлялись на ваш адрес электронной почты, добавьте в конец файла эту строку:

Замените your_email_address своим адресом электронной почты. Сохраните и закройте файл. Чтобы изменения вступили в силу, введите команду:

Эта команда составит базу алиасов, которые использует команда mail.

Теперь проверьте работу пересылки, отправив сообщение пользователю root:

Это сообщение должно появиться в вашем почтовом ящике (если его нет, проверьте спам).

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

5: Настройка SMTP-шифрования

Теперь вы можете включить шифрование SMTP, запросив бесплатный TLS сертификат для вашего домена у сервиса Let’s Encrypt (используя клиент Certbot) и настроив Postfix для его поддержки при отправке сообщений.

Ubuntu включает Certbot в стандартный репозиторий пакетов. Чтобы установить его, введите следующую команду:

sudo apt install certbot

Чтобы подтвердить установку, нажмите Y и Enter.

При начальной настройке сервера вы установили брандмауэр UFW. Вам нужно открыть в нем HTTP-порт 80, чтобы можно было выполнить проверку домена. Запустите следующую команду, чтобы открыть этот порт:

Вывод будет выглядеть так:

Rule added
Rule added (v6)

Теперь, когда порт открыт, запустите Certbot, чтобы получить сертификат:

Эта команда запросит сертификаты с размером ключа RSA 4096 бит, запустит временный автономный веб-сервер (–standalone) для их проверки и выполнит проверку через порт 80 (–preferred-challenge http). Не забудьте заменить your_domain своим доменом перед запуском команды и введите свой адрес электронной почты при появлении запроса.

Вы получите такой вывод:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for `your_domain`
Waiting for verification.
Cleaning up challenges
IMPORTANT NOTES:
— Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2020-07-11. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
«certbot renew»
— If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Читайте также:  как узнать у себя способности

Как написано в примечаниях в выводе, ваш сертификат и файл закрытого ключа были сохранены в /etc/letsencrypt/live/your_domain.

Теперь, когда у вас есть сертификат, откройте файл main.cf в редакторе:

sudo nano /etc/postfix/main.cf

Найдите такой раздел:

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:$/smtp_scache

Обновите в нем параметры TLS для Postfix (вместо your_domain укажите ваш домен).

# TLS parameters
smtpd_tls_cert_file=/etc/letsencrypt/live/your_domain/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/your_domain/privkey.pem
smtpd_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:$/smtp_scache

Сохраните и закройте файл.

Чтоб применить новые настройки, перезапустите Postfix.

sudo systemctl restart postfix

Попробуйте снова отправить письмо:

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

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

Заключение

Теперь у вас есть сервер исходящей почты Postfix. Шифрование всех исходящих сообщений – это хороший способ сделать ваши сообщения непохожими на спам. Для среды разработки этой меры должно быть достаточно.

Однако если вы собираетесь отправлять электронные письма потенциальным пользователям сайта (например, письма с подтверждением регистрации), вам следует настроить записи SPF, чтобы повысить вероятность того, что сообщения, отправленные с вашего сервера, будут нормально восприняты.

Источник

Установка и настройка SMTP-сервера передачи сообщений Postfix в Ubuntu 14.04

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

Зачем это нужно?

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

Отличным примером приложения для отправки оповещений является OSSEC; эта система может отправлять предупреждения на любой указанный адрес электронной почты. Как и многие другие приложения такого рода, OSSEC может использовать для отправки уведомлений как SMTP-сервер стороннего поставщика, так и локальный SMTP-сервер передачи сообщений.

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

Если же сервер должен отправлять извещения потенциальным пользователям сайта (например, электронные подтверждения регистрации), нужно защитить домен от спамеров; тогда извещения сервера с меньшей вероятностью будут помечены как спам.

Требования

Для выполнения данного руководства нужны:

Имя хоста сервера должно соответствовать этому домену или поддомену. Чтобы проверить имя хоста сервера, введите в командную строку hostname. Вывод должен совпадать с именем сервера, которое он получил при создании (например, example.com).

1: Установка Postfix

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

sudo apt-get install mailutils

Вместе с пакетом mailutils будет установлен Postfix и его зависимости. Вывод команды выглядит примерно так:

The following NEW packages will be installed:
guile-2.0-libs libgsasl7 libkyotocabinet16 libltdl7 liblzo2-2 libmailutils4 libmysqlclient18 libntlm0 libunistring0 mailutils mailutils-common mysql-common postfix ssl-cert
0 upgraded, 14 newly installed, 0 to remove and 3 not upgraded.
Need to get 5,481 kB of archives.
After this operation, 26.9 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Чтобы установить все вышеперечисленные пакеты, нажмите ENTER. В конце установки появится окно настройки Postfix, в котором нужно выбрать тип почтовой настройки; опция по умолчанию – Internet Site, что полнее удовлетворяет требования данного руководства (чтобы подтвердить, нажмите TAB и ENTER).

После этого появится новое окно настройки Postfix с полем System mail name. Это поле должно совпадать с именем сервера, которое вы выбрали при его создании. Укажите имя, а затем нажмите TAB и ENTER.

Примечание: Если в строке появляется поддомен вроде first.example.com, сократите его до example.com.

2: Настройка Postfix

Данный раздел покажет, как настроить Postfix для отправки сообщений с сервера, на котором он установлен (то есть, с локального хоста).

Для этого Postfix должен быть настроен на прослушивание только интерфейса внутренней петли (loopback interface) – это виртуальный сетевой интерфейс, который используется сервером для внутреннего взаимодействия. Откройте конфигурационный файл Postfix с помощью редактора nano:

sudo nano /etc/postfix/main.cf

Найдите в нем следующий блок кода:

mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

Замените строку inet_interfaces = all строкой inet_interfaces = loopback-only. Теперь этот блок выглядит так:

mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

Вместо loopback-only можно также использовать localhost:

mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = localhost

Завершив редактирование файла, сохраните изменения и закройте его (CTRL+X, затем Y и ENTER). После этого перезапустите Postfix:

sudo service postfix restart

3: Тестирование SMTP-сервера

Теперь необходимо проверить, может ли Postfix отправлять сообщения на внешний электронный адрес. Для этого используется команда mail, которая также входит в пакет mailutils.

Итак, чтобы отправить тестовое сообщение, наберите:

Примечание: Вместо user@example.com используйте валидный адрес электронной почты.

Проверьте почтовый ящик, на который было отправлено сообщение. Если отправленное сообщение не появилось, проверьте папку спама.

Примечание: В данном руководстве используется условный адрес gunter@example.com, где gunter – имя пользователя Linux, а домен – имя хоста сервера (эту строку нужно указать в поле From).

4: Форвардинг почты

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

Чтобы Postfix отправлял сгенерированные системой сообщения на ваш почтовый адрес, отредактируйте файл /etc/aliases.

sudo nano /etc/aliases

В стандартной установке Ubuntu 14.04 этот файл выглядит так:

# See man 5 aliases for format
postmaster: root

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

# See man 5 aliases for format
postmaster: root
root: gunter@example.com

Читайте также:  как подключить сетевой диск windows 10 cmd

Замените gunter@example.com своим личным адресом электронной почты. Сохраните и закройте файл. Чтобы изменения вступили в силу, выполните следующую команду:

Теперь протестируйте форвардинг, отправив сообщение пользователю root:

Это сообщение должно появиться в вашем почтовом ящике (если нет – проверьте папку спама).

Источник

Большой почтовый сервер на Ubuntu Server

В данной инструкции выполнена настройка полноценного почтового сервера на Linux Ubuntu Server (протестирована на версии 20.04). Список всех особенностей и возможностей:

Содержание

1. Подготовка системы

И так, данная инструкция написана под систему Linux Ubuntu Server. Предварительно, выполним следующие действия.

Общие настройки

apt-get update && apt-get upgrade

Задаем правильное имя серверу — это важный шаг, так как большинство антиспам систем выполняют проверки, обращаясь к серверу по имени в ожидании ответа:

hostnamectl set-hostname relay.dmosk.ru

* необходимо указать FQDN-имя, которое будет доступно из глобальной сети. В данном примере указано relay.dmosk.ru.

Устанавливаем пакет для синхронизации времени:

apt-get install chrony

Задаем временную зону (в данном примере московское время):

timedatectl set-timezone Europe/Moscow

* чтобы получить список всех возможных зон, вводим timedatectl list-timezones.

Разрешаем сервис для обновления времени:

systemctl enable chrony

Настройка безопасности

Заранее открываем порты на брандмауэре с помощью iptables:

* где мы откроем следующие порты:

Для сохранения правил установим пакет:

apt-get install iptables-persistent

И выполняем команду:

2. Настройка веб-сервера: NGINX + PHP + MariaDB

Система управления PostfixAdmin работает как веб-приложение, разработанное на PHP, а информацию хранит в базе данных. В нашем примере будет использоваться веб-сервер на NGINX, а база данных — MariaDB.

Установка NGINX

Устанавливаем nginx командой:

apt-get install nginx

Разрешаем автозапуск сервиса:

systemctl enable nginx

PHP + PHP-FPM + NGINX

Устанавливаем php и php-fpm:

apt-get install php php-fpm

server <
listen 80 default_server;
listen [::]:80 default_server;
.

* где /var/www/html — каталог для размещения данных nginx по умолчанию; /run/php/php7.4-fpm.sock — путь до сокет-файла php-fpm (обратите внимание, что точное значение зависит от используемой вервии php).

Разрешаем автозапуск php-fpm:

systemctl enable php7.4-fpm

systemctl restart nginx

Для проверки, создаем индексный файл в директории сайта со следующим содержимым:

Открываем сайт в браузере по его IP-адресу. На открывшейся странице мы должны увидеть подробную информацию по php:

MariaDB

Устанавливаем сервер баз данных следующей командой:

apt-get install mariadb-server

Включаем автозапуск сервиса баз данных:

systemctl enable mariadb

Задаем пароль для пользователя sql root:

3. Установка и настройка PostfixAdmin

Устанавливаем дополнительные компоненты для PHP:

apt-get install php-mysql php-mbstring php-imap

Для применения установленных пакетов, перезапускаем обработчик скриптов:

systemctl restart php7.4-fpm

В директории сайтов nginx создаем каталог для postfixadmin и распаковываем в него архив:

Создаем каталог templates_c внутри папки портала (без него не запустится установка):

* в противном случае, при попытке зайти в панель управления после ее установки мы получим ошибку ERROR: the templates_c directory doesn’t exist or isn’t writeable for the webserver.

Задаем права на каталог:

* несмотря на то, что мы используем веб-сервер nginx, php-fpm по умолчанию, запускается от пользователя www-data.

Создаем базу данных postfix и учетную запись в mariadb:

> CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

* где postfix — имя базы.

> GRANT ALL ON postfix.* TO ‘postfix’@’localhost’ IDENTIFIED BY ‘postfix123’;

* где postfix — имя учетной записи; postfix123 — пароль; localhost разрешает подключение только с локального сервера.

Выходим из командной оболочки MariaDB:

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

* в предыдущих версиях использовался файл config.inc.php. В новых версиях его не рекомендуется править, а использовать config.local.php, который переопределяет настройки.

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

* где configured говорит приложению, что администратор закончил его конфигурирование; default_language — используемый язык по умолчанию; database_password — пароль для базы данных, который мы задали на предыдущем шаге; emailcheck_resolve_domain — задает необходимость проверки домена при создании ящиков и псевдонимов.

Запускаем браузер и вводим адрес http:// /postfixadmin/public/setup.php — откроется страница для установки PostfixAdmin.

Задаем дважды пароль установки и генерируем хэш, кликнув по Generate setup_password hash:

После копируем хэш, который появится под кнопкой:

Открываем конфигурационный файл:

И добавляем строчку:

.
$CONF[‘setup_password’] = ‘$2y$10$D. R32’;

* где ‘$2y$10$D. R32’ — скопированный хэш.

Перезагружаем страницу http:// /postfixadmin/public/setup.php — теперь у нас появится форма для ввода нашего пароля, созданного на предыдущем этапе. Вводим его и кликаем по Login with setup_password:

Будет выполнена установка PostfixAdmin.

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

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

* где Setup password — пароль, который мы ввели на предыдущей странице; Админ — учетная запись для входа в панель управления PostfixAdmin; Пароль — новый пароль для создаваемой учетной записи.

Установка завершена. Переходим в браузере на страницу http:// /postfixadmin/public/login.php

Вводим логин и пароль для созданного пользователя. Мы должны войти в postfix.admin.

Однако, конкретно, в моем случае, пользователь не создавался при установке системы и необходимо было создать администратора вручную. Если это потребуется, в консоли сервера подключаемся к СУБД:

Переходим к использованию базы postfix:

Добавляем администратора запросом:

> INSERT INTO admin (`username`, `password`, `superadmin`, `active`) VALUES (‘root@dmosk.ru’, ‘$1$1b7ff416$/KKYqdyAd3viA3.PNu5hh/’, ‘1’, ‘1’);

Выходим из sql-оболочки:

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

4. Установка и настройка Postfix

Установка Postfix в Ubuntu выполняется командой:

apt-get install postfix postfix-mysql

* помимо самого postfix, мы также установим postfix-mysql для возможности работы с СУБД.

В процессе установки должно появиться окно «Postfix Configuration» — оставляем Internet Site:

В следующем окне оставляем имя сервера и нажимаем Enter.

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

* сначала мы создаем группу vmail и guid 1024, после — пользователя vmail с uid 1024 и домашней директорией /home/mail — в ней у нас будет храниться почта. Обратите внимание, что в некоторых системах идентификатор группы и пользователя 1024 может быть занят. В таком случае необходимо создать другой, а в данной инструкции ниже заменить все 1024 на альтернативный.

Если директория для почты ранее уже была создана, то необходимо задать в качестве владельца нашего созданного пользователя:

chown vmail:vmail /home/mail

Теперь открываем на редактирование конфигурационный файл почтового сервера:

И редактируем следующие строки:

mydestination = localhost.$mydomain, localhost, localhost.localdomain
.
inet_protocols = ipv4
.
smtpd_tls_cert_file = /etc/ssl/mail/public.pem
smtpd_tls_key_file = /etc/ssl/mail/private.key

Читайте также:  посоветуйте бензопилу для дачи

Если имя сервера отличается от имени, по которому сервер будет зарегистрирован в DNS, задаем опцию:

Теперь в конец конфигурационного файла допишем следующее:

virtual_mailbox_base = /home/mail
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1024
virtual_uid_maps = static:1024
virtual_gid_maps = static:1024
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes

Создаем файл с настройками обращения к базе с алиасами:

user = postfix
password = postfix123
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address=’%s’ AND active = ‘1’

* где user и password — логин и пароль для подключения к MySQL; hosts — имя сервера баз данных (в нашем случае, локальный сервер); dbname — имя базы данных; query — шаблон запроса к данным.

Создаем файл с инструкцией получения данных по виртуальным доменам:

user = postfix
password = postfix123
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain=’%u’

И файл с почтовыми ящиками:

user = postfix
password = postfix123
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,’/’,maildir) FROM mailbox WHERE username=’%s’ AND active = ‘1’

Открываем файл master.cf и дописываем в самый конец:

* после команды идут аргументы ее запуска. Они могут переопределять параметры, заданные в main.cf. Каждый аргумент записывается с новой строки и начинается с двух пробелов. В данном примере мы используем следующие аргументы:

Генерируем сертификаты безопасности. Для этого создаем каталог, в котором их разместим:

И сгенерируем их следующей командой:

* сертификат сгенерирован на 1461 день, ключи subj могут быть произвольными, CN необходимо указать в соответствии с именем сервера, по которому мы будем подключаться к почте.
* если мы хотим использовать сертификат, который будет проходить все проверки безопасности, его нужно купить или запросить у Let’s Encrypt.

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

systemctl enable postfix

systemctl restart postfix

5. Настройка Dovecot

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

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

Настраиваем способ хранения сообщений:

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

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 (обращаем внимание, что /var/spool/postfix/private/auth — это тот же private/auth, который был прописан нами в postfix); auth-userdb — сокет для авторизации через dovecot-lda. Опция mode задает права на сокет, например, 666 позволит любому пользователю к нему подключиться; user и group задает пользователя и группу владельцев на сокет.

А также в этом файле добавим строки:

service stats <
unix_listener stats-reader <
user = vmail
group = vmail
mode = 0660
>
unix_listener stats-writer <
user = vmail
group = vmail
mode = 0660
>
>

* в противном случае, мы увидим в логе ошибку error net_connect_unix(/var/run/dovecot/stats-writer) failed permission denied, так как у пользователя vmail не будет прав.

Настраиваем аутентификацию в Dovecot:

#!include auth-system.conf.ext
!include auth-sql.conf.ext

* в данном случае мы просто комментируем обычную аутентификацию и снимаем комментарий для использования sql-аутентификации.

Настраиваем использование шифрования:

ssl = required
ssl_cert = /postfixadmin/public/.

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

Заполняем формы и нажимаем по Добавить домен:

Вводим данные нового пользователя и нажимаем по Создать ящик:

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

Параметры для подключения:

* для корректной работы сервера на портах 993, 995, 465 (SSL/TLS) необходим правильный сертификат (для нашего домена и выпущенный доверенным центром сертификации).

7. Устанавливаем и настраиваем Roundcube Webmail

В данной инструкции мы разберем использование веб-клиента Roundcube. При необходимости, можно установить другой, например, WebMail Lite или несколько одновременно.

На официальном сайте заходим на страницу загрузки Roundcube. Смотрим ссылку на версию продукта с длительной поддержкой (LTS):

Используем ссылку, чтобы загрузить архив программы:

Создаем каталог, где будут размещаться файлы портала:

И распаковываем скачанный архив:

Копируем шаблон конфига:

cp /var/www/html/webmail/config/config.inc.php.sample /var/www/html/webmail/config/config.inc.php

И открываем его на редактирование:

$config[‘db_dsnw’] = ‘mysql://roundcube:roundcube123@localhost/roundcubemail’;
$config[‘enable_installer’] = true;

* первую строку мы редактируем, а вторую добавляем. В первой строке roundcube:roundcube123 — логин и пароль для доступа к базе данных; localhost — сервер базы данных; roundcubemail — имя базы данных. Вторая строка разрешает установку портала.

Также дописываем в конфигурационный файл следующее:

$config[‘drafts_mbox’] = ‘Drafts’;
$config[‘junk_mbox’] = ‘Junk’;
$config[‘sent_mbox’] = ‘Sent’;
$config[‘trash_mbox’] = ‘Trash’;
$config[‘create_default_folders’] = true;

* настройка $config[‘create_default_folders’] = true создает папки по умолчанию, если их нет:

* Без данной настройки, если не создавались папки другим клиентом, веб-клиент будет выдавать ошибки при перемещении писем, например, при их удалении.

Задаем владельца apache на папку портала:

Создаем в MariaDB базу для roundcubemail:

> CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY ’roundcube123′;

И загружаем в созданную базу данные:

На следующей странице проверяем, что все пункты находятся в состоянии OK. Установка выполнена.

Открываем конфигурационный файл roundcube:

Запрещаем установку портала:

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

И заходим в браузере по адресу http:// /webmail/. Вводим в качестве логина адрес почты созданного пользователя и его пароль.

8. Защищаемся от вирусов и СПАМа

Антивирус требует много ресурсов. Будьте готовы, что после его запуска сервер начнет работать медленнее и понадобится добавить ресурсы.

Установка и настройка Clamav + Amavisd

Устанавливаем необходимые для работы антивируса и антиспама компоненты:

apt-get install amavisd-new clamav clamav-daemon spamassassin

Добавляем пользователя clamav в группу amavis:

Открываем конфигурационный файл amavis:

Снимаем комментарии для строк:

.
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
.
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
.

* по умолчанию amavis не выполняем никаких проверок — для включения сканирования на вирусы снимаем комментарий с bypass_virus_checks_maps, а для сканирования на СПАМ — bypass_spam_checks_maps.

Затем открываем на редактирование:

$allowed_header_tests <'multiple'>= 0;
$allowed_header_tests <'missing'>= 0;

* данные опции позволят программе Outlook без ошибок отправлять тестовое сообщение.

Разрешаем запуск антивируса и amavis:

systemctl enable clamav-daemon clamav-freshclam amavis

systemctl restart amavis clamav-daemon clamav-freshclam

Настройка Postfix

Добавляем в postfix:

* где content_filter указывает на приложение, которое будет сканировать сообщения;

Теперь редактируем master.cf:

* итак, данной настройкой мы создадим два вспомогательных сервиса scan и 127.0.0.1:10025 (сервис без имени, он просто будет слушать на порту 10025 — это порт по умолчанию, на который отправляет сообщение amavis после выполнения проверки). Также, мы используем следующие опции:

systemctl restart postfix

Настройка обновлений антиспама

Для обновления базы антиспама выполняем команду:

Источник

Образовательный портал