Меню Рубрики

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

Записки программиста

Поднимаем собственный почтовый сервер на VDS

Как вам может быть известно, я не очень доверяю 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):

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

При установке Postfix на вопрос «General type of mail configuration» говорим «Internet Site». На вопрос о доменном имени отвечаем «mail.eax.me».

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

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

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

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

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

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_ >) REFERENCES virtual_domains ( >)
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_ >) REFERENCES virtual_domains ( >)
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’ ) ;

В колонке destination таблицы virtual_aliases можно указывать несколько получателей через запятую, в том числе и на всяких gmail.com. Таким образом, можно создавать списки рассылки. Если алиасы образуют цепочку, например postmaster@eax.me → mail@eax.me → somebody@eaxmple.org, то это тоже превосходно работает.

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

# пока что без TLS
smtpd_use_tls=no
myhostname = mail.eax.me
mydestination = localhost

virtual_transport = lmtp:unix:private/dovecot-lmtp
# то, что пока нет таких файлов — это ОК
virtual_mailbox_domains = mysql:/etc/postfix/mysql-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-users.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-aliases.cf

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

# увеличиваем максимальный размер письма до 50 Мб
message_size_limit = 52428800

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

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

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

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

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

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

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

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

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

Правим в /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:

Читайте также:  Установка комплекта грм змз

Проверяем

К этому моменту у вас должен крутиться SMTP на порту 25 и IMAP на порту 143. Пока что без TLS и спам-фильтра, но это уже самый настоящий почтовый сервер. Проверяем, что к нему можно подключиться почтовым клиентом. Затем добавляем в DNS MX-запись, указывающую на mail.eax.me. Обновление зоны занимает какое-то время — обычно около часа, но особо «умные» провайдеры могут кэшировать данные на сутки. То, что зона обновилась, можно увидеть так:

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

После этого проверяем, что почта приходит с какого-нибудь GMail и уходит на него (возможно, попадая при этом в каталог «Спам»), также проверяем работу алиасов. В случае возникновения проблем смотрим в файл /var/log/mail.log — туда пишет логи как Postfix, так и Dovecot.

Дополнение: С недавних пор некоторые почтовые сервисы начали отклонять письма, если у почтового сервера нет reverse DNS и SPF записей. Добавление reverse DNS происходит по-разному у разных VDS-провайдеров. У DigitalOcean нужно назвать VDS доменным именем сервера (например, «mail.eax.me»). Проверить, что все в порядке, можно командой dig -x 1.2.3.4 . SPF запись включается простым добавлением TXT-записи с содержимым v=spf1 mx -all . Она говорит, что слать письма с eax.me могут только сервера, указанные в MX-записях домена. Для проверки выполняем команду dig -t TXT eax.me .

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

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

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

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

Postfix слушает с TLS на порту 25. Dovecot слушает одновременно порты 143 и 993. Меняем настройки почтового клиента и проверяем, что все работает. Мне в случае с Claws Mail в свойствах SMTP пришлось выбрать галочку «Use STARTTLS command to start encryption session».

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

В /etc/letsencrypt/cli.ini пишем:

systemctl reload postfix
systemctl reload dovecot

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

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

Apache SpamAssassin — это открытое решение для фильтрации спама. Сразу отмечу, что крутизны спам-фильтров GMail’а от него, пожалуй, ожидать не стоит. Тем не менее, по моим наблюдениям, со спамом он борется вполне достойно.

Ставим SpamAssassin и создаем пользователя spamd:

Правим /etc/default/spamassassin таким образом:

В /etc/spamassassin/local.cf дописываем:

# тут нужно дописать строчку -o content_filter.
smtp inet n — y — — smtpd
-o content_filter=spamassassin

# в конец дописываем:
spamassassin unix — n n — — pipe
user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f $ $

То, что SpamAssasin работает, можно определить по заголовкам X-Spam-Checker-Version и X-Spam-Status во входящих письмах. Письма, помеченные как спам, будут иметь соответствующий Subject, а также заголовок X-Spam-Flag: YES. Для проверки того, что спам определяется, можно послать себе специальное письмо, которое вы найдете в файле:

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

В этом нам поможет расширение для Dovecot под названием sieve:

/.dovecot.sieve
sieve_global_dir = /var/lib/dovecot/sieve/
sieve_global_path = /var/lib/dovecot/sieve/default.sieve
sieve_dir =

Чтобы каталог SPAM автоматически создавался, если его еще нет, правим файл /etc/dovecot/conf.d/15-lda.conf:

Ну вот и все, теперь спам будет сыпаться в каталог SPAM. Обратите внимание, что не все почтовые клиенты проверяют появление новых каталогов, если только их прямо об этом не попросить.

Заключение

Несмотря на то, что заметка вышла довольно длинной, в действительности повторить описанные шаги занимает один вечер. За дополнительной информацией обращайтесь к официальным сайтам соответствующих проектов. Если вы используете на сервере фаервол, обратите внимание, что для корректной работы certbot’а порт 80 должен быть открыт. Если вас интересует прикручивание к почте веб-интерфейса, тут можно порекомендовать RoundCube. В качестве открытого антивируса можно посоветовать ClamAV. Впрочем, я затрудняюсь сказать, насколько хороши его антивирусные базы. Настройка как RoundCube, так и ClamAV, к сожалению, выходят за рамки данного поста.

А доводилось ли вам поднимать собственный почтовый сервер, и если да, то что вы для этого использовали?

источник

Как настроить почту на VPS с ISPmanager?

В независимости от панели управления в зону домена необходимо добавить следующие ресурсные записи (Что такое «Ресурсные записи DNS» ):

Данные DNS-записи необходимо добавить на DNS-серверах: Как узнать, какие DNS-серверы прописаны для домена

  • Для домена прописаны ns1.reg.ru и ns2.reg.ru. Пропишите DNS-записи по инструкции: Настройка ресурсных записей DNS для домена;
  • Для домена прописаны ns5.hosting.reg.ru и ns6.hosting.reg.ru. В этом случае DNS-записи будут настроены автоматически при добавлении домена в ISPmanager;
  • Для домена прописаны другие DNS. Обратитесь к вашему поставщику DNS с вопросом добавления записей.

Добавьте домен на VPS, если вы не сделали этого ранее:

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

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

Выберите функции, которые будут доступны пользователю. Рекомендуем выставить настройки в соответствии со скриншотом:

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

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

Поставьте галочку Создать почтовый домен и задайте Имя почтового домена. Если вы собираетесь размещать сайт на VPS, также поставьте галочку Создать WWW-домен и задайте имя WWW-домена:

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

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

перейдите в раздел Почтовые ящики и нажмите Создать:

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

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

Или воспользоваться Web-интерфейсом почты, доступным по адресу:

Готово. При входе в Web-интерфейс необходимо указывать адрес ящика полностью info@my-new-site.ru и пароль к нему.

Как настроить SPF-запись?

SPF-запись позволяет указать в TXT-записи домена список серверов, которые имеют право отправлять сообщения от имени e-mail адресов этого домена. Проще говоря, SPF-запись помогает защититься от злоумышленников, рассылающих СПАМ от имени вашего домена. Подробнее об SPF-записи вы можете узнать в статье Что такое ресурсные записи DNS?

Как должна выглядеть SPF-запись?

В SPF-записи необходимо указать все сервера, с которых могут быть отправлены сообщения. Если вы отправляете сообщения только с одного сервера (почтовые клиенты не считаются), то в SPF-записи будет достаточно указать IP-адрес этого сервера: Как узнать IP-адрес сервера. Вместо 123.123.123.123 пропишите IP-адрес вашего сервера:

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

Более подробно и о настройке SPF-записи вы можете прочитать на тематических форумах в сети интернет.

Как добавить SPF-запись?

SPF-запись прописывается в TXT-записи домена. Фактически вам необходимо добавить TXT-запись, в значение которой вставить SPF-запись.
Добавлять TXT-запись необходимо на тех DNS-серверах, которые прописаны для вашего домена. Вы можете добавить TXT-запись по инструкции: Как добавить запись TXT.

Как настроить DKIM на VPS сервере?

Перейдите в раздел НастройкиВозможности:

В открывшемся окне настроек кликните по пункту Почтовый сервер (SMTP/POP3/IMAP), затем по кнопке Изменить в панели сверху:

Поставьте галочку в графе OpenDKIM (exim) и нажмите Применить изменения:

Перейдите в раздел ДоменыПочтовые домены, выберите необходимый домен и дважды кликните по нему:

Поставьте галочку напротив Включить DKIM для домена, нажмите Ok:

Проверка записи

В Windows

В Linux

Откройте встроенный терминал и наберите команду: host -t TXT dkim._domainkey.mysite.ru 123.123.123.123

где 123.123.123.123 — IP адрес вашего сервера. Вывод должен быть примерно таким:

Также вы можете произвести проверку при помощи on-line сервиса DKIMCore. Однако в этом случае перед проверкой придется подождать обновления DNS серверов.

Возможные проблемы

Не устанавливается или не включается Opendkim в панели управления. Проблема наблюдается при установленном Exim в качестве MTA. Как правило, установка всё же происходит, но панель управления этого не показывает. Как решить:

  1. В разделе Возможности выделите «Почтовый сервер (SMTP)» и нажмите Вкл.;
  2. После этого выделите «Opendkim — фильтр DKIM» и нажмите Установить, затем Вкл..

Например, на этапе проверки записи вы наблюдаете надпись:
«dkim._domainkey.mysite.ru has no TXT record»

Как решить:

Обратите внимание на TXT-запись вида «dkim._domainkey». В записи не должно быть лишних пробелов:

уберите лишние пробелы (один оставьте) и нажмите Ok:

Вновь кликните на пункт Доменные имена, выделите домен и нажмите кнопку Обновить в правом верхнем углу:

Отправка почты с дополнительного IP-адреса

Внимание. Данная инструкция подходит только в том случае, если в качестве MTA (почтового сервера) на VPS-сервере установлен Exim.

где site.ru — это домен, для которого вы хотите изменить IP-адрес для отправки почты, а 123.123.123.123 — сам IP-адрес;

Сохраните и закройте файл. Для вступления изменений в силу перезапустите Exim под пользователем root:

  • через ISPmanager. Перейдите в раздел СистемаСлужбы, выделите сервис Exim и нажмите Рестарт;
  • по SSH. Введите команду service exim restart ;

Готово. После перезапуска SMTP-сервера, почта для выбранного домена будет отправляться с нового IP-адреса.

Откройте для себя возможности виртуального выделенного сервера на SSD.

источник

Подготовительные работы на сервере для настройки почты без панели

Часто возникают ситуации, когда требуется отправлять почту с сервера — уведомления о заказах, сообщения о регистрации новых пользователей или ошибках и многое другое. Если на сервере установлен ISPmanager, настроить почту через его веб-интерфейс довольно просто. Гораздо труднее разобраться с отправкой писем, если панели управления нет — настройка почты вручную требует некоторых навыков администрирования и работы в консоли.

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

Мы будем настраивать наш почтовый сервер на базе postfix и dovecot. Проведем предварительную подготовку, создадим виртуальных пользователей и покажем два варианта настройки: в первом почтовые ящики и пароли от них будут храниться в файле, во втором — в БД.

В качестве примера используем домен mailtest.fvds.ru. Не забудьте при настройке заменить его на свой, с которого будет отправляться почта.

Важно! Если поток почтового трафика ожидается довольно большой, то мы рекомендуем выбирать сервер на виртуализации KVM и добавить его ip в белый список — для подтверждения легальности рассылок.

Настраиваем PTR:

PTR-запись связывает ip-адрес с именем хоста. Если PTR-запись указана неверно, то ваши письма будут отклоняться и не дойдут до адресата.

Изменить PTR можно двумя способами:

  1. Через личный кабинет: Товары — Виртуальные серверы — выбираете ваш сервер — IP-адреса — выбираете ip — Изменить , в поле «Домен» указываете ваш почтовый домен.
  2. Через VMmanager: Управление — Виртуальные серверы — выбираете ваш сервер — IP-адреса — выбираете ip — Изменить . В поле «Домен» указываете ваш почтовый домен.

Настраиваем hostname:

Hostname — это имя сервера. Он должен совпадать с именем домена, с которого отправляется почта. Если hostname будет указан неверно, то почта либо не дойдёт до адресата, либо попадёт в спам.

Заходим на сервер по ssh и выполняем следующую команду (здесь и далее практически вся настройка будет происходить в консоли):

Настроим MX-записи:

MX-записи нужны для того, чтобы работала входящая почта. Они указывают, какими почтовыми серверами обслуживается домен.

На серверах имён домена размещаем запись следующего содержания (домен нужно заменить на свой):

Это пример из панели управления DNSmanager, если у вас другая панель управления записями домена, то нужно выполнить настройку по аналогии. Главное, чтобы MX-запись была направлена на ваш почтовый сервер.

Как создать домен на наших серверах имён в DNSmanager, можете узнать из статьи.

Открываем порты в фаерволле:

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

При использовании firewalld :

При использовании iptables :

На Debian и Ubuntu при чистой установке порты не закрыты, поэтому если у вас чистый сервер, то делать ничего не нужно. Если же вы меняли настройки фаервола, то нужно открыть в нём следующие порты:

Создадим пользователя для почтового сервера:

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

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

источник

Добавить комментарий