Этот урок расскажет как настроить работающий почтовый сервер в Ubuntu или Debian. Как мы знаем, два главных протокола используются в почтовом сервере — это SMTP и POP/IMAP. В этом уроке postfix будет использован для SMTP, в то время как dovecot будет использоваться для POP/IMAP. Они оба с открытым исходным кодом, стабильные и имеют множество настроек.
Пожалуйста, обратите внимание, что вопросы безопасности почтового сервера за сферой данного урока, и они освещены в статье "Как установить Clam Antivirus, SpamAssassin и MailScanner на почтовом сервере под Ubuntu".
Предварительные требования
Каждый домен должен иметь запись на DNS сервере. Рекомендуется НЕ использовать живые домены для целей тестирования. В этом уроке тестовый домен example.tst будет использован в лабораторных условиях. DNS сервер для этого гипотетического домена имел бы, по крайней мере, следующие записи.
- Прямая зона для example.tst:
IN MX 10 mail.example.tst. mail.example.tst. IN A 192.168.10.1
- Обратная зона для example.tst:
192.168.10.1 IN PTR mail.example.tst.
Когда настраивается живой почтовый сервер, эти записи могут быть изменены, в соответствии с системными требованиями.
Настройка имени хоста (hostname)
Во-первых, hostname почтового сервера должно быть определено в /etc/hostname и /etc/hosts. Причём в первом файле следует размещать только имя хоста.
root@mail:~# vim /etc/hostname mail
root@mail:~# vim /etc/hosts
## IP Полностью определённое доменное имя Имя хоста ## 192.168.10.1 mail.example.tst mail
Добавление пользователей
Каждый пользователь Linux, по умолчанию, имеет автоматически созданный почтовый ящик. Эти пользователи и почтовые ящики будут использоваться как почтовые учётные записи и соответствующие им адреса почтовых ящиков. Создание пользователя очень простое.
root@mail:~# adduser alex
Установка и настройка SMTP
Профиль службы: postfix | |
Каталог с конфигурационными файлами | /etc/postfix/ |
Скрипт | /etc/init.d/postfix |
Лог-файл | /var/log/mail.log |
Номер порта | TCP/25 |
SMTP: Установка postfix
postfix это один из наиболее используемых SMTP серверов, поскольку он стабильный, лёгкий, масштабируемый и высоко настраиваемый. Установка postfix может быть выполнена использованием apt-get.
root@mail:~# apt-get install postfix
Во время установки задаются тип почтового сервера и доменное имя.
Так как почтовый сервер будет отправлять письма напрямую к месту назначения, то нужно использовать "Интернет-сайт".
Также задаём доменное имя почтового сервера. Эта настройка определяет, что все письма, приходящие с этого почтового сервера, будут иметь @example.tst в качестве домена отправителя.
Конфигурационные файлы postfix размещены в /etc/postfix. Важны следующие конфигурационные файлы. Некоторые из них могут отсутствовать и их нужно создать вручную.
- transport: В первую очередь используется для определения, как почта должна быть направлена в направлении конкретного домена назначения. Это тот случай, когда кому-то может быть потребуется отправлять почту, предназначенную для домена XYZ.com, напрямую на IP адрес X.Y.Y.X независимо от каких-либо результатов запросов DNS.
- access: Может быть использован в целях безопасности, например для блокирования отправителей/получателей и их доменов.
- aliases: Используется для задания пользовательских псевдонимов. Например, почта отправленная пользователю userA должна быть принята пользователем userB, а также пользователем userC.
- main.cf: Это конфигурационный файл для postfix.
SMTP: Настройка конфигурационных файлов
Время приготовить конфигурационные файлы. Файлы transport и aliases не поставляются при установке, их нужно создать вручную.
root@mail:~# cd /etc/postfix root@mail:/etc/postfix# touch transport aliases
- main.cf
Сделайте резервную копию main.cf а затем модифицируйте. Следующие строки добавлены/изменены в конфигурационном файле. Для дальнейших подробностей о параметрах обратитесь к официальному README и документу по настройки.
root@mail:/etc/postfix# vim main.cf
## имя сервера ## myhostname = mail.example.tst ## определение псевдонимов ## alias_maps = hash:/etc/postfix/aliases alias_database = hash:/etc/postfix/aliases ## определение transport ## transport_maps = hash:/etc/postfix/transport ## myorigin задаёт доменное имя для писем, берущих начало с этого сервера. В нашем случае, все исходящие письма должны иметь '@example.tst' в качестве домена отправителя ## myorigin = example.tst ## mydestination параметр определяет, какие домены эта машина будет доставлять локально вместо того, чтобы переправлять на другую машину. ## mydestination = mail.example.tst, localhost.example.tst, localhost, hash:/etc/postfix/transport ## адрес smarthost. В этом уроке не используется, о нём будет расказанов в будущей инструкции ## relayhost = ## доверенные сети отправителя. postfix не будет пересылать письма, приходящие из других сетей ## mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.10.0/24 ## размер почтового ящика в байтах. 0 означает без ограничений ## mailbox_size_limit = 0 ## postfix будет прослушивать все доступные интерфейсы, например, eth0, eth1, eth2 и так далее ## inet_interfaces = all
- transport
Письмам, предназначенным для домена example.tst, определено быть доставлено локально без каких-либо DNS запросов.
root@mail:/etc/postfix# vim transport
example.tst local: .example.tst local:
root@mail:/etc/postfix# postmap transport
- aliases
Предполагаем, что все письма, отправленные пользователю userA, должны быть доставлены также пользователю userB, для этого файл aliases изменён как показано ниже:
root@mail:/etc/postfix# vim aliases
userA: userA, userB
root@mail:/etc/postfix# postalias aliases
Обратите внимание: Синтекс 'userA: userB' определяет, что почта должна быть направлена только пользователю userB. Пользователь userA не будет получать копию письма.
SMTP: Запуск и обслуживание
postfix может быть запущен командой.
root@mail:~# service postfix restart
Лог-файл в /var/log/mail.log должен предоставить полезную информацию, если что-то пойдёт не так. Прослушивает ли почтовый сервер TCP порт 25 можно также проверить используя netstat.
root@mail:~# netstat -nat
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
Как видно из вывода, сервер прослушивает 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.
root@mail:~# apt-get install dovecot-common dovecot-pop3d dovecot-imapd
Прямо из коробки dovecot может поддерживать POP3 и IMAP (обычный текст), а также зашифрованный POP3S и IMAPS (безопасный). По умолчанию dovecot создаёт и использует самоподписанный сертификат для SSL шифрования. Сертификаты могут быть созданы вручную или ипортированы позже, в зависимости от требований. В этом уроке будет использован сапомодписанный сертификат, сгенерированный dovecot.
На последних версиях больше не создаёт. Сертификаты нужно создавать вручную и вручную подключать их. Как это сделать, описано в этой инструкции.
POP/IMAP: Подготовка конфигурационных файлов
Следующие параметры изменяются как нужно.
root@mail:~# vim /etc/dovecot/conf.d/10-mail.conf
## расположение почтовых ящиков, заданных в формате 'mbox' ## mail_location = mbox:~/mail:INBOX=/var/mail/%u ## dovecot даны необходимые разрешения на чтение/запись пользовательских почтовых ящиков ## mail_privileged_group = mail
Этого должно быть достаточно для запуска службы POP/IMAP в почтовом сервере.
POP/IMAP: Установка службы
Сейчас, когда dovecot установлен и настроен, он может быть запущен, используя следующую команду.
root@mail:~# service dovecot restart
Вновь лог-файл (/var/log/mail.log) может предоставить важные зацепки, если что-то пойдёт не так. Узнать, запущен ли dovecot, можно при использовании netstat следующим образом.
root@mail:/etc/dovecot/conf.d# netstat -nat
tcp 0 0 0 0.0.0.0:110 0.0.0.0:* LISTEN tcp 0 0 0 0.0.0.0:143 0.0.0.0:* LISTEN
Использование почтового сервера с пользовательской почтовой программой
Почтовый сервер теперь готов к использованию. Почтовая учётная запись может быть настроена с использованием вашего любимого почтового клиента на настольном компьютере, ноутбуке, планшете или телефоне. Можно настроить и webmail (почту с веб-интерфейсом) на сервере, но инструкция по webmail будет в следующих уроках. На данном этапе, почтовая программа Mozilla Thunderbird определила следующие настройки для моего сервера:
Крайне рекомендуется перейти и продолжить по этой инструкции для включения SSL шифрования.
Решение проблем с почтовым сервером
- Лучший ваш друг — это лог-файл /var/log/mail.log. Любые зацепки, почему почта не работает, могут быть найдены здесь.
- Убедитесь, что файервол должным образом настроен.
- Убедитесь, что DNS сервер имеет должные записи.
Подытоживая, демонстрация в этом уроке, как уже было упомянуто, проходила в лабораторных условиях. Может быть развёрнут тестовый DNS сервер со всеми необходимыми записями, и пользователи будут между собой обмениваться письмами на одном и том же сервере, например, том же домене. Чтобы сделать ещё интереснее, можно развернуть множество почтовых серверов с различными доменами, для проверки работы связи между доменами, для этого должны присутствовать необходимые DNS записи.
Валидные DNS записи необходимы для живых почтовых серверов. Можно сделать тюнинг настроек postfix и dovecot в соответствии с потребностями.
Внимание: Для тех, кто хочет развернуть живой почтовый сервер, или любой почтовый сервер, который имеет доступ в Интернет, убедитесь, что ваш SMTP обезопасен. Обычно атаки на SMTP происходят из Интернета, так и от зловредных программ внутри локальной сети.
Надеюсь это поможет.
Эти программы нельзя установить на виртуальный хостинг. Полностью автономный почтовый сервер можно сделать только на виртуальном частном (выделенном) сервере, т. е. На VDS (VPS). Самые дешёвые облачные VDS (VPS) сервера! За 180 рублей/мес — эта статья, как следует из заголовка, расскажет вам о качественном и при этом самом дешёвом варианте виртуального частного сервера, которые при этом ещё и используют облачные технологии.
Вообще, тема почты очень близка авторам codeby.net, мы уже рассматривали в разное время вопросы создания почты на своих собственных доменах (это позволяет выбрать короткие и красивые имена для почтовых ящиков), как «прикрутить» свой домен к mail.ru да и вообще к любому популярному почтовому ящику, как создать свою автономную почту на хостинге и т. д. Всё это и многое другое вы сможете найти по тегу своя почта.
Благодарю!