Postfix — популярный почтовый агент (MTA) с открытым исходным кодом, который можно использовать для маршрутизации и доставки почты в системе Linux. Согласно оценкам, примерно 25% публичных почтовых серверов в Интернете используют Postfix.
В этом обучающем модуле мы научим вас быстро развертывать Postfix на сервере Ubuntu 18.04.
Для выполнения заданий этого обучающего модуля вам потребуется доступ к пользователю без прав root с привилегиями sudo
. Для создания такого пользователя следуйте указаниям руководства «Начальная настройка сервера Ubuntu 18.04».
Для правильной настройки Postfix вам потребуется полностью квалифицированное доменное имя, указывающее на сервер Ubuntu 18.04. Полезную информацию по настройке доменного имени с помощью DigitalOcean можно найти в этом руководстве. Если вы планируете принимать почту, вам также потребуется запись MX, указывающая на ваш почтовый сервер.
Для целей этого обучающего модуля мы предположим, что вы настраиваете хост с FQDN mail.example.com
.
Postfix входит в репозитории Ubuntu по умолчанию, поэтому установку выполнить очень просто.
Вначале обновите кэш локального пакета apt
, а затем установите программное обеспечение. Мы добавим в команду установки переменную среды DEBIAN_PRIORITY=low
, чтобы включить несколько дополнительных диалогов:
- sudo apt update
- sudo DEBIAN_PRIORITY=low apt install postfix
Используйте следующую информацию, чтобы правильно ввести данные для своей среды:
mail.example.com
, но мы будем использовать для системной почты example.com
, так что для имени пользователя user1
в Postfix будет использоваться адрес user1@example.com
.root@
и postmaster@
. Используйте для этой цели свою основную учетную запись. В нашем случае это sammy.Итак, для целей этого обучающего модуля мы используем следующие настройки параметров:
Если вам потребуется изменить эти настройки, используйте следующую команду:
- sudo dpkg-reconfigure postfix
Для параметров будут указаны заданные ранее значения.
Завершив настройку параметров, мы можем еще немного изменить конфигурацию, чтобы настроить систему желаемым образом.
Теперь мы настроим некоторые параметры, для которых не выводились диалоги.
Вначале мы зададим почтовый ящик. Мы используем формат Maildir, который разделяет сообщения на отдельные файлы, перемещаемые между каталогами в зависимости от действий пользователя. Также можно использовать формат mbox (здесь мы не будем говорить о нем), хранящий все сообщения в одном файле.
Мы зададим для переменной home_mailbox
значение Maildir/
, в результате чего в домашнем каталоге пользователя будет создана структура каталогов с этим именем. Команду postconf
можно использовать для запроса или установки параметров конфигурации. Настройте home_mailbox
с помощью следующей команды:
- sudo postconf -e 'home_mailbox= Maildir/'
Теперь мы можем задать расположение таблицы virtual_alias_maps
. Эта таблица сопоставляет произвольные учетные записи электронной почты с системными учетными записями Linux. Мы создадим эту таблицу по адресу /etc/postfix/virtual
. Для этого мы снова можем использовать команду postconf
:
- sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'
Теперь мы можем настроить файл виртуальных карт. Откройте в файл в своем текстовом редакторе:
- sudo nano /etc/postfix/virtual
Таблица карт виртуальных псевдонимов имеет очень простой формат. Слева перечисляются все адреса, для которых вы хотите принимать электронную почту. Затем идет разделенный пробелами перечень пользователей Linux, которым вы хотите доставлять эту почту.
Например, если вы хотите принимать электронную почту на адреса contact@example.com
и admin@example.com
и доставлять ее пользователю Linux с именем sammy
, вы можете настроить файл следующим образом:
contact@example.com sammy
admin@example.com sammy
После сопоставления всех почтовых адресов с соответствующими учетными записями сервера вы можете сохранить и закрыть файл.
Мы можем применить сопоставление с помощью следующей команды:
- sudo postmap /etc/postfix/virtual
Перезапустите процесс Postfix, чтобы убедиться в применении всех наших изменений:
- sudo systemctl restart postfix
Если вы используете брандмауэр UFW, настроенный в соответствии с руководством по начальной настройке сервера, нам потребуется добавить исключение для Postfix.
Вы можете разрешить подключение к службе с помощью следующей команды:
- sudo ufw allow Postfix
Серверный компонент Postfix установлен и готов к работе. Теперь мы настроим клиент, который будет принимать почту, которую будет обрабатывать Postfix.
Перед установкой клиента нужно убедиться, что переменная среда 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
Чтобы прочитать переменную для текущего сеанса, вы можете использовать в качестве источника файл /etc/profile.d/mail.sh
:
- source /etc/profile.d/mail.sh
Для взаимодействия с доставляемой почтой мы установим пакет s-nail
. Это вариант клиента BSD xmail
, который имеет много функций, может правильно обрабатывать формат Maildir и в основном обладает обратной совместимостью. Версия mail
для GNU имеет несколько ограничений, в частности, прочитанная почта всегда сохраняется в формате 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
, которая будет использоваться для создания файла sent
mbox для хранения отправленных писем.
Сохраните файл и закройте его после завершения.
Теперь мы можем протестировать клиент.
Самый простой способ создания структуры Maildir в домашнем каталоге — отправить себе электронное письмо. Для этого мы можем использовать команду s-nail.
Поскольку файл sent
будет доступен только после создания Maildir, нам нужно отключить запись в него для нашего первого письма. Опция -Snorecord
поможет нам в этом.
Для отправки письма добавьте строку в команду s-nail
. Измените команду, чтобы сделать получателем вашего пользователя Linux:
- echo 'init' | s-nail -s 'init' -Snorecord sammy
Вы можете получить следующий ответ:
OutputCan't canonicalize "/home/sammy/Maildir"
Это нормально, и такой ответ может появиться только при отправке первого сообщения. Мы можем еще раз проверить создание каталога, выполнив поиск нашего каталога ~/Maildir
:
- ls -R ~/Maildir
Вы должны увидеть созданную структуру каталогов и новое сообщение в каталоге ~/Maildir/new
:
Output/home/sammy/Maildir/:
cur new tmp
/home/sammy/Maildir/cur:
/home/sammy/Maildir/new:
1463177269.Vfd01I40e4dM691221.mail.example.com
/home/sammy/Maildir/tmp:
Похоже наше письмо доставлено.
Используйте клиент для проверки почты:
- s-nail
Вы должны увидеть новое сообщение:
Outputs-nail version v14.8.6. Type ? for help.
"/home/sammy/Maildir": 1 message 1 new
>N 1 sammy@example.com Wed Dec 31 19:00 14/369 init
Просто нажмите ENTER
для вывода этого сообщения:
Output[-- Message 1 -- 14 lines, 369 bytes --]:
From sammy@example.com Wed Dec 31 19:00:00 1969
Date: Fri, 13 May 2016 18:07:49 -0400
To: sammy@example.com
Subject: init
Message-Id: <20160513220749.A278F228D9@mail.example.com>
From: sammy@example.com
init
Вы можете веернуться к списку сообщений, введя h
и нажав ENTER
:
- h
Outputs-nail version v14.8.6. Type ? for help.
"/home/sammy/Maildir": 1 message 1 new
>R 1 sammy@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
. По умолчанию сообщение будет отправлено от имени вашего пользователя Linux. При желании вы можете изменить поле «From» с помощью атрибута -r
:
- cat ~/test_message | s-nail -s 'Test email subject line' -r from_field_account user@email.com
Приведенные выше опции:
-s
: строка темы письма-r
: изменение поля «From» письма. По умолчанию в этом поле указан текущий пользователь Linux. Опция -r
позволяет задать другого отправителя.user@email.com
: учетная запись получателя письма. Измените этот адрес на адрес учетной записи, к которому у вас есть доступ .Вы можете просмотреть отправленные сообщения в клиенте s-nail
. Запустите интерактивный клиент еще раз с помощью следующей команды:
- s-nail
После этого откройте список отправленных сообщений с помощью следующей команды:
- file +sent
Вы можете управлять отправленными письмами с помощью тех же команд, которые используются для входящих писем.
Теперь почтовая система Postfix настроена на вашем сервере Ubuntu 18.04. Управление серверами электронной почты — непростая задача для начинающих администраторов, но такая конфигурация обеспечит все базовые функции MTA, которые помогут вам начать работу.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!