Настройка почтового сервера
Обновлено 7 марта 2019
Введение
Почтовый сервер – это сервер, выполняющий работы по обработке сообщений электронной почты: прием и отправка почты, а также ее хранение. Вся приходящая почта не идет напрямую в компьютер пользователя (в противном случае пришлось бы держать его постоянно включённым), а поступает для хранения на почтовый сервер, который работает круглосуточно, так что пользователь может забрать с него свою почту в любое удобное для себя время.
Настройка почтового сервера может быть выполнена при помощи утилит Calculate, входящих в пакет sys-apps/calculate-server. Для хранения учётных записей пользователей и групп используется OpenLDAP-сервер, агентом передачи почты выступает Postfix, а функции IMAP/POP3-сервера берёт на себя Dovecot. Необходимое программное обеспечение входит в состав Calculate Directory Server.
Настройка LDAP
Перед настройкой почтового сервера следует настроить LDAP-сервер. Выполните настройку согласно руководству.
Настройка почтового сервера
Перед настройкой почтового сервера настройте службу хранения учётных записей Unix-пользователей. Для этого выполните:
* ПРЕДУПРЕЖДЕНИЕ: Выполнение этой программы изменит конфигурационные файлы и базу данных сервиса LDAP.
Если вы готовы продолжить выполнение программы, введите 'yes', если нет - 'no': yes
* Добавлен ldif файл ... [ ok ]
* Unix сервис сконфигурирован ... [ ok ]
Чтобы установить почтовый сервис с параметрами по умолчанию, выполните следующую команду:
* ПРЕДУПРЕЖДЕНИЕ: Выполнение этой программы изменит конфигурационные файлы Mail сервиса (программы Postfix и Dovecot).
Если вы готовы продолжить выполнение программы, введите 'yes', если нет - 'no': yes
* Удален Mail DN из LDAP базы данных ... [ ok ]
* Добавлен ldif файл ... [ ok ]
* Запускается Postfix ... [ ok ]
* Запускается Dovecot ... [ ok ]
* Mail сервис сконфигурирован ... [ ok ]
Чтобы указать хост mail.example.org и использовать протоколы IMAP,POP3, выполните команду:
cl-setup --type pop3,imap --host mail.example.org mail
Для отображения всех доступных параметров выполните следующее:
calculate-server 2.1.18 Использование: cl-setup [параметры] сервис Устанавливает сервис в систему Примеры: cl-setup samba # установить Samba сервис в систему. Общие параметры: -h, --help показать эту справку и закончить работу --help-all показать справку с параметрами для всех сервисов --help-jabber показать справку для параметров Jabber сервиса --help-ldap показать справку для параметров LDAP сервиса --help-mail показать справку для параметров Mail сервиса --help-samba показать справку для параметров Samba сервиса --help-proxy показать справку для параметров Proxy сервиса --help-dns показать справку для параметров DNS сервиса --help-dhcp показать справку для параметров DHCP сервиса Параметры Mail сервиса: -a, --allow ввод разрешенных ip адресов и сетей --host HOST почтовый хост, по умолчанию - имя хоста -t, --type TYPE тип почты - 'imap', 'pop3', 'pop3,imap' (по умолчанию - imap) -c, --crypt CRYPT тип шифрования - 'none', 'tls' (по умолчанию - tls) --history CONDITION включить или отключить сохранение истории mail сервиса, по умолчанию опция отключена. (on/off) --history-domains DOMAIN домен или домены своей почты (запятая - разделитель) --history-path PATH путь к истории Сервисы: ldap ldap сервис unix unix сервис samba samba сервис mail mail сервис jabber jabber сервис ftp ftp сервис proxy proxy сервис dns dns сервис dhcp dhcp сервис
После выполнения команды cl-setup
почтовый сервис будет сконфигурирован и запущен. Проверьте открытые порты при помощи утилиты netstat
:
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN tcp6 0 0 :::110 :::* LISTEN tcp6 0 0 :::143 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:631 :::* LISTEN tcp6 0 0 :::25 :::* LISTEN tcp6 0 0 :::636 :::* LISTEN tcp6 0 0 :::993 :::* LISTEN tcp6 0 0 :::995 :::* LISTEN tcp6 0 0 :::389 :::* LISTEN
Протоколы POP3 и IMAP используют порты 110 и 143 соответственно.
Для предотвращения спама, приходящего на адреса системных пользователей (описанных в файле /etc/mail/aliases), по умолчанию не создаётся почтовая директория nobody. Создайте директорию с нужными правами, если вам необходимо получать письма для системных пользователей:
mkdir /var/calculate/server-data/mail/nobody
chown nobody:nobody /var/calculate/server-data/mail/nobody
chmod 0700 /var/calculate/server-data/mail/nobody
Письма для системных почтовых пользователей будут сохраняться в директории /var/calculate/server-data/mail/nobody.
Управление учетными записями
Учётная запись - это запись, которая содержит сведения, необходимые для идентификации пользователя при подключении к системе, информацию для авторизации и учёта. В данном случае для подключения к почтовому сервису или почтовому ящику.
Почтовый ящик - это логически выделенная часть дискового пространства, предназначенная для хранения электронных почтовых сообщений, которая обозначается электронным почтовым адресом. Почтовый ящик может иметь несколько почтовых адресов, называемых синонимами почтового адреса (псевдонимами почтового адреса).
Для добавления пользователя guest с почтовым псевдонимом guestmail@mail.example.org выполните команду:
Новый пароль: Повторите новый пароль: * Пользователь добавлен в Unix сервис * Пользователь добавлен в Mail сервис
Для смены пароля пользователя guest выполните:
Новый пароль: Повторите новый пароль: * Пароль пользователя Mail сервиса изменен
Для удаления пользователя guest из почтового сервиса выполните:
* Создана директория /var/calculate/server-backup/deleted/guest-1000/mail для хранения данных удаленного пользователя * Пользовательская почтовая директория /var/calculate/server-data/mail/guest удалена * Пользователь guest Mail сервиса удален
Управление почтовыми группами
Почтовая группа - набор почтовых адресов, использующийся для рассылок почты нескольким корреспондентам. Письмо, отправленное на адрес группы, рассылается для всех почтовых учетных записей, входящих в эту группу.
Для добавления почтовой группы guestgroup с альтернативным почтовым адресом gg@example.org выполните:
* Группа 'guestgroup' добавлена в Mail сервис
Для удаления почтовой группы guestgroup выполните:
* Группа guestgroup Mail сервиса удалена
Добавление и удаление учетных записей производится при помощи утилит cl-usermod
и cl-groupmod
.
Для добавления пользователя guest в группы guesttest и guestgroup выполните:
* Пользователь добавлен в группы
Для замены групп пользователя guest на guesttest выполните:
* Список дополнительных групп замещен
Для добавления пользователя guest1 и guest2 в группу guesttest выполните:
* Пользователи добавлены в группу guesttest
Для удаления пользователей guest1 и guest2 из группы guesttest выполните:
* Пользователи удалены из группы guesttest
Проверка работы сервера
Для проверки отправления почты на адрес guestmail@mail.example.org выполните следующие действия:
CONNECTED(00000003) ... --- 250 DSN ehlo mail 250-mail.example.org 250-PIPELINING 250-SIZE 100000000 250-ETRN 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from:<guest@mail.example.org> 250 2.1.0 Ok rcpt to:<guestmail@mail.example.org> 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> From:<guest@mail.example.org> To:<guestmail@mail.example.org> Subject: Test Test . 250 2.0.0 Ok: queued as 15A9D1D4A2 quit 221 2.0.0 Bye closed
Для проверки получения почты по IMAP для пользователя guest с паролем secret выполните следующие действия:
CONNECTED(00000003) ... --- . OK Pre-login capabilities listed, post-login capabilities have more. A1 LOGIN guest secret * CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY LITERAL+ NOTIFY SPECIAL-USE A1 OK Logged in A2 SELECT Inbox * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted. * 1 EXISTS * 0 RECENT * OK [UIDVALIDITY 1542618255] UIDs valid * OK [UIDNEXT 2] Predicted next UID A2 OK [READ-WRITE] Select completed (0.002 + 0.000 + 0.001 secs). A3 FETCH 1 BODY[HEADER] * 1 FETCH (BODY[HEADER] {598} Return-Path: <noname@mail.example.org> X-Original-To: guestmail@mail.example.org Delivered-To: guest@mail.example.org Received: from mail (mail.example.org [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.example.org (Postfix) with ESMTPS id 15A9D1D4A2 for <guestmail@mail.example.org>; Mon, 19 Nov 2018 11:58:27 +0300 (MSK) From:<guest@mail.example.org> To:<guestmail@mail.example.org> Subject: Test Message-Id: <20181119085920.15A9D1D4A2@mail.example.org> Date: Mon, 19 Nov 2018 11:58:27 +0300 (MSK) ) A3 OK Fetch completed (0.001 + 0.000 secs). A4 LOGOUT * BYE Logging out A4 OK Logout completed (0.001 + 0.000 secs). closed
Для проверки получения почты по POP3 для пользователя guest с паролем secret выполните следующие действия:
CONNECTED(00000003) ... --- +OK Dovecot ready. user guest +OK pass secret +OK Logged in. list +OK 1 messages: 1 604 . retr 1 +OK 604 octets Return-Path: <noname@mail.example.org> X-Original-To: guestmail@mail.example.org Delivered-To: guest@mail.example.org Received: from mail (mail.example.org [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.example.org (Postfix) with ESMTPS id 15A9D1D4A2 for <guestmail@mail.example.org>; Mon, 19 Nov 2018 11:58:27 +0300 (MSK) From:<guest@mail.example.org> To:<guestmail@mail.example.org> Subject: Test Message-Id: <20181119085920.15A9D1D4A2@mail.example.org> Date: Mon, 19 Nov 2018 11:58:27 +0300 (MSK) Test . quit +OK Logging out. closed