Настройка почтового сервера

Обновлено 7 марта 2019

Почтовый сервер

Введение

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

Настройка почтового сервера может быть выполнена при помощи утилит Calculate, входящих в пакет sys-apps/calculate-server. Для хранения учётных записей пользователей и групп используется OpenLDAP-сервер, агентом передачи почты выступает Postfix, а функции IMAP/POP3-сервера берёт на себя Dovecot. Необходимое программное обеспечение входит в состав Calculate Directory Server.

Настройка LDAP

Перед настройкой почтового сервера следует настроить LDAP-сервер. Выполните настройку согласно руководству.

Настройка почтового сервера

Перед настройкой почтового сервера настройте службу хранения учётных записей Unix-пользователей. Для этого выполните:

cl-setup unix
 * ПРЕДУПРЕЖДЕНИЕ: Выполнение этой программы изменит конфигурационные файлы и базу данных сервиса LDAP.
 Если вы готовы продолжить выполнение программы, введите 'yes', если нет - 'no': yes

 * Добавлен ldif файл ...                                                                                        [ ok ]
 * Unix сервис сконфигурирован ...                                                                               [ ok ]

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

cl-setup mail
* ПРЕДУПРЕЖДЕНИЕ: Выполнение этой программы изменит конфигурационные файлы 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

Для отображения всех доступных параметров выполните следующее:

cl-setup --help-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:

netstat -tln
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 выполните команду:

cl-useradd -p -e guestmail@mail.example.org guest mail
Новый пароль:
Повторите новый пароль:
* Пользователь добавлен в Unix сервис
* Пользователь добавлен в Mail сервис

Для смены пароля пользователя guest выполните:

cl-passwd guest mail
Новый пароль:
Повторите новый пароль:
* Пароль пользователя Mail сервиса изменен

Для удаления пользователя guest из почтового сервиса выполните:

cl-userdel guest mail
* Создана директория /var/calculate/server-backup/deleted/guest-1000/mail для хранения данных удаленного пользователя
* Пользовательская почтовая директория /var/calculate/server-data/mail/guest удалена
* Пользователь guest Mail сервиса удален

Управление почтовыми группами

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

Для добавления почтовой группы guestgroup с альтернативным почтовым адресом gg@example.org выполните:

cl-groupadd -e gg@example.org guestgroup mail
 * Группа 'guestgroup' добавлена в Mail сервис

Для удаления почтовой группы guestgroup выполните:

cl-groupdel guestgroup mail
* Группа guestgroup Mail сервиса удалена

Добавление и удаление учетных записей производится при помощи утилит cl-usermod и cl-groupmod.

Для добавления пользователя guest в группы guesttest и guestgroup выполните:

cl-usermod -a guesttest,guestgroup guest mail
* Пользователь добавлен в группы

Для замены групп пользователя guest на guesttest выполните:

cl-usermod -G guesttest guest mail
* Список дополнительных групп замещен

Для добавления пользователя guest1 и guest2 в группу guesttest выполните:

cl-groupmod -a guest1,guest2 guesttest mail
* Пользователи добавлены в группу guesttest

Для удаления пользователей guest1 и guest2 из группы guesttest выполните:

cl-groupmod -d guest1,guest2 guesttest mail
* Пользователи удалены из группы guesttest

Проверка работы сервера

Для проверки отправления почты на адрес guestmail@mail.example.org выполните следующие действия:

openssl s_client -starttls smtp -connect mail.example.org:25
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 выполните следующие действия:

openssl s_client -starttls imap -crlf -connect mail.example.org:143
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 выполните следующие действия:

openssl s_client -starttls pop3 -crlf -connect mail.example.org:110
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