Настройка почтового сервера Postfix с Dovecot и Squirrelmail на Ubuntu 16.04

Узнайте, как настроить почтовый сервер на облачном сервере под управлением Ubuntu 16.04. В этом руководстве используются Postfix в качестве SMTP-сервера, Dovecot для функциональности POP/IMAP и Squirrelmail в качестве программы веб-почты, чтобы пользователи могли проверять и получать электронную почту через веб-браузер.

В учебном пособии вы также узнаете, как создать и использовать самоподписанный SSL-сертификат для защиты входящих и исходящих почтовых соединений.

Доступ к брандмауэру

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

  • SMTP: 25
  • POP3: 110
  • IMAP: 143
  • SMTP Secure: 465
  • MSA: 587
  • IMAP Secure: 993
  • POP3 Secure: 995

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

Установите Postfix

Чтобы установить Postfix, сначала обновите пакеты:

sudo apt-get update

Затем установите Postfix:

sudo apt-get install postfix

Postfix установлен по умолчанию на большинстве систем Ubuntu 16.04, поэтому эта команда, скорее всего, завершится сообщением о том, что postfix уже имеет самую новую версию (3.1.0-3).

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

Настройка Postfix

После завершения установки выполните команду для настройки Postfix:

sudo dpkg-reconfigure postfix

Введите следующие значения в подсказках, заменив example.com своим собственным доменным именем. Используйте стрелку вверх и стрелку вниз для перемещения вверх и вниз, чтобы выделить ответы, и Enter для выбора ответа.

  1. Выберите OK, чтобы продолжить.
  2. Выберите Интернет-сайт.
  3. Имя системной почты: example.com
  4. Корневой и почтовый получатель почты: root
  5. Другие адресаты почты: example.com, localhost.example.com, localhost
  6. Принудительное синхронное обновление почтовой очереди: Нет
  7. Локальные сети: 127.0.0.0/8
  8. Использовать procmail для локальной доставки? Нет
  9. Ограничение размера почтового ящика (байты): 0
  10. Символ расширения локального адреса: +
  11. Используемые интернет-протоколы: все

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

sudo postconf -e '[new setting]'

Создать SSL-сертификат

Мы создадим самоподписанный SSL-сертификат для защиты входящих и исходящих почтовых соединений:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout mailserver.key -out mailserver.crt -nodes -days 365

sudo openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Ответьте на вопросы подсказки или просто нажмите [Enter], чтобы оставить ответ пустым. Эта команда создаст два файла: mailserver.key и mailserver.crt.

Создайте папку для файлов SSL-сертификатов:

sudo mkdir /etc/postfix/ssl

Затем переместите файлы в эту папку:

sudo mv mailserver.key /etc/postfix/ssl
sudo mv mailserver.crt /etc/postfix/ssl
sudo mv cakey.pem /etc/postfix/ssl
sudo mv cacert.pem /etc/postfix/ssl

Настройка SMTP AUTH

SMTP AUTH — это основной метод защиты почтового сервера. Мы настоятельно рекомендуем использовать SMTP AUTH на всех почтовых серверах.

Для начала выполните следующие команды, чтобы настроить Postfix на использование SMTP AUTH:

sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_recipient_restrictions =  permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
sudo postconf -e 'inet_interfaces = all'
sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtpd_tls_auth_only = no'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/mailserver.key'
sudo postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/mailserver.crt'
sudo postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
sudo postconf -e 'tls_random_source = dev:/dev/urandom'

Замените example.com на ваше собственное доменное имя:

sudo postconf -e 'myhostname = example.com' 

Далее создайте файл /etc/postfix/sasl/smtpd.conf и откройте его для редактирования:

sudo nano /etc/postfix/sasl/smtpd.conf

Добавьте следующее содержимое:

pwcheck_method: saslauthd
mech_list: plain login

После завершения настройки Postfix перезапустите демон Postfix командой:

sudo systemctl restart postfix

Install SASL

Postfix будет использовать SASL для обработки аутентификации с помощью SMTP AUTH. Теперь, когда Postfix настроен на использование SMTP AUTH, установите SASL с помощью команды:

sudo apt-get install libsasl2-2 sasl2-bin libsasl2-modules

После завершения установки отредактируйте /etc/default/saslauthd:

sudo nano /etc/default/saslauthd

Прокрутите вниз до строки:

# Should saslauthd run automatically on startup? (default: no)
START=no

Измените START на yes:

# Should saslauthd run automatically on startup? (default: no)
START=yes

Ниже этой строки добавьте следующие три строки:

PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"

Прокрутите файл вниз до строки:

OPTIONS="-c -m /var/run/saslauthd"

Измените последнюю строку на read:

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

Сохраните и выйдите из файла.

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

sudo dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

Примечание: Если вы получите сообщение об ошибке, что каталог /var/spool/postfix/var/run/saslauthd не существует, проигнорируйте его. Этот каталог будет создан при запуске демона SASL.

Создайте симлинк для файла конфигурации:

sudo ln -s /etc/default/saslauthd /etc/saslauthd

И, наконец, запустите демон SASL:

sudo /etc/init.d/saslauthd start

Тестирование Postfix с помощью Telnet

Для тестирования Postfix мы подключимся к серверу по telnet и выполним базовый «протокол рукопожатия», как это делает почтовая программа.

Сначала установите Telnet:

sudo apt-get install telnet

После установки Telnet используйте его для подключения к SMTP-порту сервера:

telnet localhost 25

Сервер ответит:

[user@localhost ~]$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost.localdomain ESMTP Postfix (Ubuntu)

Это означает, что Postfix запущен и работает.

Далее поприветствуйте сервер:

ehlo localhost

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

250-localhost.localdomain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Следующие строки показывают, что SMTP AUTH работает:

250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN

Начните с того, что сообщите серверу, от кого отправляется почта:

mail from: some-person@some-other-server.com

Затем скажите серверу, кому вы отправляете почту, заменив user@example.com на свое имя пользователя и доменное имя:

rcpt to: root@example.com

Теперь добавьте простое сообщение. Скажите серверу, что тело вашего сообщения начинается здесь:

data

Введите сообщение, затем нажмите [Enter], точку . и [Enter]:

hello world 
.

Закройте сеанс, набрав quit и нажав Enter.

Если у вас все получилось, ваше тестовое сообщение появится в /root/Maildir/new. Вы можете просмотреть это сообщение с помощью команды:

ll /root/Maildir/new

Чтобы прочитать сообщение, скопируйте и вставьте имя файла (это будет длинное имя, например 1482257384.Vfc00I60512M258205.localhost.localdomain) и прочитайте его с помощью команды more:

sudo more  1482257384.Vfc00I60512M258205.localhost.localdomain

Вы увидите сообщение электронной почты вместе со всей информацией заголовка:

From some-person@some-other-server.com  Thu Dec  8 19:43:10 2016
Return-Path: <some-person@some-other-server.com>
X-Original-To: root@example.com
Delivered-To: root@example.com
Received: from localhost (localhost [127.0.0.1])
        by mail.example.com (Postfix) with SMTP id 6CFD589184
        for <root@example.com>; Thu,  8 Dec 2016 19:42:33 +0000 (UTC)
Message-Id: <20161208194238.6CFD589184@mail.oxnardindustries.com>
Date: Thu,  8 Dec 2016 19:42:33 +0000 (UTC)
From: some-person@some-other-server.com

hello world

Установка и настройка Dovecot

Dovecot — это POP3/IMAP сервер по умолчанию для Ubuntu, и он установлен на большинстве серверов Ubuntu 16.04 по умолчанию. Обновите Dovecot и установите пакет imapd с помощью команды:

sudo apt-get install dovecot-core dovecot-imapd

Вы можете проверить состояние Dovecot с помощью команды:

sudo systemctl status dovecot

Если Dovecot запущен, вы увидите результат, подобный этому:

[user@mail dovecot]$ sudo systemctl status dovecot -l
● dovecot.service - Dovecot IMAP/POP3 email server
   Loaded: loaded (/usr/lib/systemd/system/dovecot.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2016-12-08 21:04:48 UTC; 3s ago
  Process: 8985 ExecStartPre=/usr/libexec/dovecot/prestartscript (code=exited, status=0/SUCCESS)
 Main PID: 8989 (dovecot)
   CGroup: /system.slice/dovecot.service
           ├─8989 /usr/sbin/dovecot -F
           ├─8992 dovecot/anvil
           ├─8993 dovecot/log
           └─8995 dovecot/config

Dec 08 21:04:48 example.com systemd[1]: Starting Dovecot IMAP/POP3 email server...
Dec 08 21:04:48 example.com systemd[1]: Started Dovecot IMAP/POP3 email server.
Dec 08 21:04:48 example.com dovecot[8989]: master: Dovecot v2.2.10 starting up for imap (core dumps disabled)

Обратите внимание на строку, которая гласит:

Active: active (running) since Thu 2016-12-08 21:04:48 UTC; 3s ago

Это означает, что Dovecot установлен и запущен.

Установите разрешения на каталог /var/mail, чтобы Dovecot мог создавать папки для новых пользователей:

sudo chmod 777 /var/mail

Установите и настройте Squirrelmail

Установите Squirrelmail с помощью команды:

sudo apt-get install squirrelmail

Вам нужно будет отредактировать конфигурацию Apache, чтобы добавить псевдоним для Squirrelmail. Эту директиву нужно будет вставить внутрь командного блока VirtualHost в главном конфигурационном файле Apache сайта.

По общему соглашению, этот конфигурационный файл Apache обычно находится в /etc/apache2/sites-available/example.com.conf на Ubuntu.

Примечание: Расположение и имя файла конфигурации Apache сайта могут отличаться.

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

sudo nano /etc/apache2/sites-available/example.com.conf

Прокрутите файл, пока не найдете блок команды VirtualHost, который будет выглядеть следующим образом:

<VirtualHost *:80>
ServerName example.com
    <Directory "/var/www/example.com/html">
    AllowOverride All
    </Directory>
</VirtualHost>

Добавьте следующее в командный блок VirtualHost:

Alias /squirrelmail /usr/share/squirrelmail

Обязательно поместите эти строки вне любых командных блоков Directory. Например:

<VirtualHost *:80>
ServerName example.com

Alias /squirrelmail /usr/share/squirrelmail

    <Directory "/var/www/example.com/html">
    AllowOverride All
    </Directory>
</VirtualHost>

Сохраните и выйдите из файла, затем перезапустите Apache, чтобы изменения вступили в силу:

sudo systemctl restart apache2

После перезапуска Apache вы можете протестировать Squirrelmail, посетив URL http://example.com/squirrelmail в браузере.

  • Технические вопросы

    Оцените статью
    cdelat.ru
    Добавить комментарий