Установка и настройка почтового сервера
Установка и настройка почтового сервера Электронная почта — сервис, позволяющий обмениваться через компьютерную сеть электронными сообщениями. Основная особенность электронной почты заключается в том, что информация отправляется получателю не напрямую, а через промежуточное звено — электронный почтовый ящик, который представляет собой место на сервере, где сообщение хранится, пока его не запросит получатель. ![]() |
Почтовый сервер своими руками
Основными его функциями являются прием писем от клиентов и доставка их адресатам. В качестве клиентов могут выступать как пользователи (программой — клиентом электронной почты), так и другие почтовые сервера. Пользователи, с помощью программы — почтового клиента (Outlook Express, Thunderbird и др.), могут создавать письма, отправлять их на сервер и забирать почту из своих почтовых ящиков на сервере. Общение сервера и клиента происходит по специальным почтовым протоколам — Simple Mail Transfer Protocol (SMTP) — при передаче писем на сервер и Post Office Protocol v.3 (POP3) — при приеме писем из почтового ящика. Подключение клиентов к серверу происходит через определенные порты. Для SMTP стандартным является порт 25, для POP3 — порт 110. Существуют различные почтовые сервера. В качестве примера рассмотрим установку и настройку почтового сервера Courier Mail Server. Courier Mail Server — это почтовый сервер (сервер электронной почты) под Windows для локальных сетей. Он поможет вам быстро организовать обмен электронной почтой в локальной сети и в Интернете. Courier Mail Server не требует установки в системе. Достаточно загрузить архив с программой и распаковать ее в любую папку на жестком диске компьютера, который будет работать в качестве почтового сервера. Бесплатную версию Courier Mail Server 1.56 вы можете скачать с сайта http://courierms.narod.ru/ . Более функциональную Courier Mail Server 2.05, но уже платную версию (1650 руб. за 10 почтовых ящиков, ограничение демо-версии — только 3 почтовых ящика), можно найти на сайте http://www.courierms.ru/ . В этом пример мы будем настраивать и использовать бесплатную версию почтового сервера Courier Mail Server 1.56. Достоинства Courier Mail Server 1.56: бесплатность простота установки и удаления компактность легкость администрирования малое потребление системных ресурсов многопоточность удобная графическая оболочка русскоязычный интерфейс и документация поддержка неограниченного числа почтовых ящиков Программа работает под управлением ОС Windows 9x/ME/NT/2000/XP. Настройка программы довольно проста и доступна обычному пользователю. Примечание: в примере все компьютеры сети работают под управлением ОС Windows XP. Все компьютеры в сети одинаковые (нет никаких выделенных компьютеров-серверов). Компьютер учителя имеет имя kab39komp8, компьютеры учеников kab39komp1, kab39komp2 и т.д. Все программное обеспечение, рассматриваемое в этом разделе, ставится в папку C:MyServersusrlocal. Если у вас компьютеры имеют другие имена (а это скорее всего так 🙂 ), то учитывайте это при настройке ПО. Так же вы можете выбрать и другу папку для установки программы. CMS поставляется в виде zip-архива, содержащего исполняемый файл и документацию. Для установки сервера создайте папку, в которой он будет функционировать, извлеките файлы из архива в эту папку и запустите приложение CourierMS.exe. При первом запуске сервер внутри своей папки автоматически создаст необходимые для его работы подпапки и файлы. За пределами своей папки сервер не производит никаких изменений. Системный реестр Windows меняется только при регистрации в качестве службы. Courier Mail Server может запускаться как стандартное приложение, а также в качестве службы Windows. Для запуска в качестве службы Windows запустите CMS и в меню Настройки выберите команду Запускаться службой. При этом произойдет регистрация службы Courier Mail Server в системе. Если запуск произошел нормально, на экране появится главное окно сервера, а в системном лотке (System Tray) рядом с часами — его значок
. Если в главном окне появились сообщения о запуске SMTP и POP3 серверов и нет сообщений об ошибках, можете приступить к настройке сервера. Следующий этап настройки почтового сервера сводится к вводу локальных доменов. Для этого сделайте двойной щелчок по слову "домен" и откроется вкладка для его настройки. Введите имя компьютера, где будет работать почтовый сервер. В нашем примере это kab39komp8. Если у вас имя компьютера, например, kab39komp5, то введите это имя.
Любая серверная программа подразумевает ввод пользователей, которые будут ею обслуживаться. Сделайте двойной щелчок по "учетные записи" и откроется редактор учетных записей. Редактор учетных записей предназначен для ведения списка локальных пользователей (учетных записей) сервера. При создании учетной записи создается, также, соответствующая папка почтового ящика. При удалении учетной записи папка почтового ящика удаляется автоматически со всем содержимым. При первом запуске сервера автоматически создается учетная запись postmaster.
Создайте необходимое количество учетных записей для своих пользователей. Достаточно создать по одной на каждый компьютер ученика и учителю, хотя можете создать и каждому ученику отельную учетную запись. Каждая учетная запись имеет следующие параметры: Реальное имя: имя владельца почтового ящика. Имя почтового ящика: наименование почтового ящика. Оно же является и именем пользователя при подключении к серверу. В имени ящика не используйте русские буквы и специальные символы, т.к. некоторые почтовые программы работают с ними некорректно. Если имя ящика kab39komp2, локальный домен м, то адрес электронной почты данного пользователя kab39komp2@ kab39komp8. Пароль: пароль для подключения к серверу. Другие параметры мы менять не будем. Создаем учетные записи пользователей по числу пользователей.
Ограничить доступ к почтовому серверу можно используя IP фильтр. Укажите тот диапазон IP адресов доступ которым разрешен. У нас это 192.168.1.1-192.168.1.11 (Про IP адреса и их настройку читайте в других статьях этогораздела ). В ваше школе этот диапазон может быть другим, например, тот что выдал вам провайдер Интернета (ну это уже другая статья).
Все! Почтовый сервер можно использовать. Про настройку и использование других возможностей программы вы можете прочитать в справке (на русском!). Вы спросите: "а как же его использовать? Как отправлять и получать письма?". Ответ простой. Письма мы будем отправлять и получать с помощью программы — почтового клиента (Outlook Express, Thunderbird и др.). А о том как это сделать читайте в следующей статье:
Настройка почтовых клиентов для работы с электронной почтой
Электронная почта — сервис, позволяющий обмениваться через компьютерную сеть электронными сообщениями.
Работать с электронной почтой можно при помощи почтовой программы (почтового клиента), установленной на компьютере пользователя или при помощи браузера, с помощью web-интерфейса.
Почтовая программа (клиент электронной почты, почтовый клиент) — программное обеспечение, устанавливаемое на компьютере пользователя, предназначенное для получения, написания, отправки, хранения и обработки сообщений электронной почты пользователя. Почтовые программы обычно предоставляют пользователю также многочисленные дополнительные функции по работе с почтой (выбор адресов из адресной книги, автоматическую рассылку сообщений по указанным адресам и др.).
Простейший почтовый клиент — программа Microsoft Outlook Express.
Она входит в стандартный пакет Windows (начиная с Windows 98) и потому есть в наличии на каждом компьютере, работающем в этой операционной системе. В Windows Vista его заменил почтовый клиент Windows Mail. Так же широкой популярностью у пользователей пользуются The Bat! и бесплатный почтовый клиент Mozilla Thunderbird.
В прошлой статье мы рассмотрели как настроить и запустить почтовый сервер в своем классе. Теперь займемся настройкой почтовых клиентов и тестирование работы нашей локальной почты.
Для того чтобы почтовый клиент мог отправлять и принимать почту, в его настройках нужно указать адреса серверов входящей и исходящей почты, а также параметры учетной записи для подключения к почтовому ящику (имя и пароль).
Настройку почтовых клиентов необходимо сделать на всех компьютерах пользователей, которым нужен доступ к электронной почте посредством почтового сервера.
Date: 2015-12-12; view: 353; Нарушение авторских прав
Поднимаем собственный почтовый сервер на VDS
6 сентября 2018
Как вам может быть известно, я не очень доверяю 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, к сожалению, выходят за рамки данного поста.
А доводилось ли вам поднимать собственный почтовый сервер, и если да, то что вы для этого использовали?
В этой стать мы установим и настроим свой почтовый сервер с помощью пакета Postfix. Этот пакет достаточно популярен, гибок и позволяет решить задачи любой сложности.
Что же такое почтовый сервер ?
Электронная почта устроена не очень сложно. В основе всего лежит MTA ( mail transfer agent) собственно он получает , отправляет почту. Для своей работы он использует протокол SMTP (англ. Simple Mail Transfer Protocol ). Собственно это и есть почтовый сервер. Серверу совсем не интересно как пользователь будет читать свою почту.
Агент доставки электронной почты (Mail Delivery Agent, MDA). Этот компонент ответственен за распределение полученных сообщений по почтовым ящикам пользователей. Тоже не отъемлемая часть почтового сервера. Например, это Postfix-maildrop.
Думаю вы прекрасно знаете как выглядит почтовый адрес, возьмем для примера test@hostname.ru . Для определения IP почтового сервера используется DNS, а точнее запись MX. То есть для домана hostname.ru есть запись MX которая указывает на почтовый сервер. Этого уже вполне достаточно для работы электронно почты.
Но как же пользователям получать свою почту. Тут приходит на помощь протоколы POP3 (англ. Post Office Protocol Version 3) — стандартный интернет-протокол прикладного уровня, используемый клиентами электронной почты для получения почты с удалённого сервера по TCP-соединению. IMAP (англ. Internet Message Access Protocol) — протокол прикладного уровня для доступа к электронной почте. Есть специальный программы —
mail user agent, MUA (например Microsoft Outlook) которые делают за пользователя всю грязную работу. Подключаются к серверу, получают и отправляют почту.
Установка и настройка.
Я буду использовать дистрибутив Debian, но это не принципиально:
apt-get install postfix
Для вновь установленного Postfix настройка начинается с выбора типа почтовой конфигурации:
- No configuration – в процессе установки не будут настраиваться какие-либо параметры.
- Internet Site – Postfix будет настроен для отправки электронной почты другим почтовым серверам и приема сообщений от них.
- Internet with smarthost – сервер Postfix будет использоваться для получения электронных сообщений от других почтовых серверов, но отправка писем будет осуществляться через сервер-ретранслятор.
- Satellite system – ретранслятор будет использоваться и для получения, и для отсылки почты.
- Local only – электронная почта будет пересылаться только внутри локальной учетной записи.
Выбираем Internet Site , будем исходить из того что домен у нас есть и мы его указываем в процессе настройки
Главный конфигурационный файл находиться в /etc/postfix/main.cf
Здесь имеется множество параметров, рассмотрим самые важные.
- myhostname используется для указания имени хоста почтовой системы. Это — имя хоста в интернете, для которого Postfix будет получать почту. Например mail.exempel.com
- mydomain позволяет указать почтовый домен, обслуживанием которого занимается сервер, например — example.com
- myorigin параметр позволяет указать доменное имя, используемое в почте, отправленной с сервера. От имени кого будет отправлена почта. Присвоим ему значение $mydomain, $ знак переменно. Можно указать и явно exempel.com
- mydestination этот параметр содержит список доменов, которые сервер Postfix будет считать конечными пунктами назначения для входящей почты.
- mynetworks важный параметр настройки. Она позволяет указывать то, какие сервера могут пересылать почту через сервер Postfix. Если не правильно настроить, вас просто атакую спамеры и ваш сервер попадет в черные списки.
Почтовый сервер Postfix может использовать два режима доставки почты:
- Непосредственно в почтовый ящик пользователя.
- В центральную директорию очередей, при этом почта попадает в папку /var/spool/mail, где имеется файл для каждого пользователя. mail_spool_directory = /var/spool/mail
Собственно вот сервер уже и запустился, проверим что порты открыт и сервер получат и отправляет почту :
Давайте теперь попробуем отправить тестовое письмо из консоли с помощью почтового агента mailx :
С первым этапом мы успешно справились и развернули MTA на базе postfix на сервере. Мы уже можем отправлять и получать( для локальных пользователей) почту.