
Узнайте, как настроить почтовый сервер на облачном сервере под управлением Ubuntu 16.04. В этом руководстве используются Postfix в качестве SMTP-сервера, Dovecot для функциональности POP/IMAP и Squirrelmail в качестве программы веб-почты, чтобы пользователи могли проверять и получать электронную почту через веб-браузер.
В учебном пособии вы также узнаете, как создать и использовать самоподписанный SSL-сертификат для защиты входящих и исходящих почтовых соединений.
Требования
- Облачный сервер под управлением Ubuntu 16.04.
- Действующее доменное имя, указывающее на сервер.
Доступ к брандмауэру
Вам необходимо настроить брандмауэр так, чтобы разрешить доступ к следующим портам:
- 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 для выбора ответа.
- Выберите OK, чтобы продолжить.
- Выберите Интернет-сайт.
- Имя системной почты: example.com
- Корневой и почтовый получатель почты: root
- Другие адресаты почты: example.com, localhost.example.com, localhost
- Принудительное синхронное обновление почтовой очереди: Нет
- Локальные сети: 127.0.0.0/8
- Использовать procmail для локальной доставки? Нет
- Ограничение размера почтового ящика (байты): 0
- Символ расширения локального адреса: +
- Используемые интернет-протоколы: все
После выполнения начальной настройки 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 в браузере.
- Технические вопросы