Postfix – это агент пересылки сообщений (англ. Mail Transfer Agent, или MTA), приложение для отправки и получения электронной почты. Согласно исследованиям, около 25% серверов используют Postfix. Этот мануал поможет установить и настроить Postfix на сервере Ubuntu 18.04.
Требования
- Сервер Ubuntu 18.04, настроенный по этому мануалу.
- Валидное доменное имя (в данном руководстве используется условный домен mail.example.com). Инструкции можно найти в мануале Как настроить имя хоста.
1: Установка Postfix
Пакеты Postfix можно найти в стандартных репозиториях Ubuntu, потому установка очень проста.
Для начала обновите индекс пакетов, а затем установите программу. Передайте переменную окружения DEBIAN_PRIORITY=low, чтобы ответить на дополнительные запросы программы.
sudo apt update
sudo DEBIAN_PRIORITY=low apt install postfix
Программа запросит следующие данные:
- General type of mail configuration? Выберите один из предложенных типов настройки, соответствующий вашим требованиям. В данном случае используется Internet Site.
- System mail name: базовый домен, который будет указан в адресе после @. Например, имя хоста – mail.example.com, но в этом параметре лучше указать example.com. Тогда почта пользователя user1 будет выглядеть так: user1@example.com.
- Root and postmaster mail recipient: аккаунт Linux, который будет получать почту, предназначенную для root@ или postmaster@.
- Other destinations to accept mail for: определяет получателей почты, которые будут разрешены Postfix. Другими словами, сюда можно добавить какие-либо другие домены, за прием почты которых будет отвечать этот сервер Postfix.
- Force synchronous updates on mail queue?: Если вы используете журнальную файловую систему, выберите No.
- Local networks: список сетей, сообщения которых будут ретранслироваться почтовым сервером. В большинстве случаев подойдёт значение по умолчанию. Если вы решите изменить его, строго ограничьте диапазон сети.
- Mailbox size limit: устанавливает ограничения размеров сообщения. Значение 0 снимает все ограничения.
- Local address extension character: символ, который используется для разделения обычной части адреса и расширения (используется для создания динамических алиасов).
- Internet protocols to use: позволяет ограничить поддержку версий IP. Мы выберем здесь all.
В целом этот мануал предлагает такие параметры:
- General type of mail configuration?: Internet Site
- System mail name: example.com (не mail.example.com)
- Root and postmaster mail recipient: 8host
- Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
- Force synchronous updates on mail queue?: No
- Local networks: : 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
- Mailbox size limit: 0
- Local address extension character: +
- Internet protocols to use: all
Если в дальнейшем вам понадобится изменить эти параметры, введите:
sudo dpkg-reconfigure postfix
При этом все строки будут содержать предыдущие значения.
2: Тонкая настройка Postfix
После этого можно настроить параметры, которые были пропущены в начальной настройке.
Для начала нужно настроить почтовый ящик. В руководстве будет использоваться формат maildir, определяющий сообщения в отдельные файлы, которые затем перемещаются между каталогами в зависимости от действий пользователя. Также можно выбрать формат mbox, который хранит все сообщения в одном файле.
Установите в переменной home_mailbox значение Maildir/,это создаст структуру каталогов под этим именем в домашнем каталоге пользователя. Команда postconf позволяет запрашивать и устанавливать параметры настроек. Чтобы настроить home_mailbox, введите:
sudo postconf -e 'home_mailbox= Maildir/'
Затем установите местонахождение таблицы virtual_alias_maps. Она связывает произвольные учетные записи электронной почты с учетными записями системы Linux. Создайте таблицу в /etc/postfix/virtual:
sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'
3: Привязка почтовых адресов к аккаунтам Linux
Теперь нужно создать эту таблицу. Откройте файл в текстовом редакторе:
sudo nano /etc/postfix/virtual
Таблица использует очень простой формат. Слева перечислены все адреса, которые должны принимать почту. Через пробел указаны системные пользователи, которые будут получать почту того или другого адреса.
К примеру, чтобы системный пользователь 8host мог принимать почту по адресам contact@example.com и admin@example.com, нужно ввести:
contact@example.com 8host
admin@example.com 8host
Привязав все почтовые адреса к соответствующим системным пользователям, сохраните и закройте файл.
Чтобы принять новые параметры, введите:
sudo postmap /etc/postfix/virtual
Перезапустите Postfix:
sudo systemctl restart postfix
4: Настройка брандмауэра
В брандмауэре UFW, который вы включили согласно мануалу по начальной настройке сервера, нужно открыть порт Postfix.
Чтобы разрешить подключения к сервису, введите:
sudo ufw allow Postfix
5: Настройка окружения
Прежде чем приступить к установке клиента, нужно установить переменную окружения MAIL. Клиент будет проверять эту переменную, чтобы определить, где сохраняется входящая почта.
Чтобы переменная не учитывала способа подключения к аккаунту (через ssh, su, su -, sudo и т.п.), нужно установить её в нескольких разных местах. Добавьте переменную в /etc/bash.bashrc и в файл в /etc/profile.d. Для этого введите:
echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh
Чтобы переменная была считана в текущей сессии, введите:
source /etc/profile.d/mail.sh
6: Установка и настройка почтового клиента
Чтобы взаимодействовать с входящей почтой, установите пакет s-nail. Это вариант BSD xmail клиента с большим количеством функций и поддержкой формата Maildir. GNU версия mail имеет несколько ограничений (например, необходимость постоянно сохранять почту в формате mbox вне зависимости от исходного формата).
Чтобы установить s-nail, введите:
sudo apt install s-nail
Отредактируйте несколько параметров. Откройте /etc/s-nail.rc:
sudo nano /etc/s-nail.rc
В конец файла добавьте:
. . .
set emptystart
set folder=Maildir
set record=+sent
Это позволит открывать клиент, даже если почтовый ящик пуст. Также это установит каталог Maildir в переменной folder и использует его для создания mbox-файла sent для хранения отправленной почты.
Сохраните и закройте файл.
7: Запуск и тестирование клиента
Инициализация структуры каталогов
Самый простой способ создать структуру Maildir в домашнем каталоге – это отправить себе электронную почту. Это делается с помощью команды mail.
Поскольку отправленный файл будет доступен только после создания Maildir, нужно закрыть каталог для записи. Для этого используйте флаг –Snorecord.
Отправьте сообщение, заменив 8host именем своего системного пользователя.
echo 'init' | mail -s 'init' -Snorecord 8host
Команда должна вернуть:
Can't canonicalize "/home/8host/Maildir"
Это нормальное поведение программы при отправке первого сообщения. Убедитесь в том, что каталог ~/Maildir был создан:
ls -R ~/Maildir
На экране должна появиться структура каталогов и сообщение в каталоге ~/Maildir/new:
/home/8host/Maildir/:
cur new tmp
/home/8host/Maildir/cur:
/home/8host/Maildir/new:
1463177269.Vfd01I40e4dM691221.mail.example.com
/home/8host/Maildir/tmp:
Управление почтовым клиентом
Чтобы проверить почту, введите:
s-nail
s-nail version v14.8.6. Type ? for help.
"/home/8host/Maildir": 1 message 1 new
>N 1 8host@example.com Wed Dec 31 19:00 14/369 init
Чтобы просмотреть сообщение, просто нажмите Enter:
[-- Message 1 -- 14 lines, 369 bytes --]:
From 8host@example.com Wed Dec 31 19:00:00 1969
Date: Fri, 13 May 2016 18:07:49 -0400
To: 8host@example.com
Subject: init
Message-Id: <20160513220749.A278F228D9@mail.example.com>
From: 8host@example.com
init
Чтобы вернуться к списку сообщений, нажмите h:
h
s-nail version v14.8.6. Type ? for help.
"/home/8host/Maildir": 1 message 1 new
>R 1 8host@example.com Wed Dec 31 19:00 14/369 init
Чтобы удалить сообщение, нажмите d и Enter:
d
Чтобы вернуться в терминал, нажмите q и Enter:
q
Отправка сообщений с помощью клиента
Введите сообщение в текстовый редактор:
nano ~/test_message
Hello,
This is a test. Please confirm receipt!
При помощи команды cat передайте сообщение процессу s-nail. Отправителем сообщения по умолчанию будет текущий системный пользователь.
Отредактировать поле From можно при помощи флага –r.
cat ~/test_message | s-nail -s 'Test email subject line' -r from_field_account user@email.com
В команде использованы опции:
- -s: тема сообщения.
- -r: опция для изменения отправителя (строка From). По умолчанию отправителем письма является текущий системный пользователь Linux. С помощью этой опции такое поведение можно обойти.
- user@email.com: получатель сообщения.
Клиент s-nail позволяет просматривать отправленные сообщения. Запустите клиент в интерактивном режиме:
s-nail
Чтобы просмотреть отправленное сообщение, введите:
file +sent
Отправленными сообщениями можно управлять при помощи тех же команд, что и входящей почтой.
Заключение
Теперь почтовый сервер Postfix установлен и настроен на сервере Ubuntu 18.04. Управление почтой – непростая задача для новичка, но эта простая настройка предоставит вам базовые функции MTA.