Tutorial

Установка и настройка Postfix в Ubuntu 18.04

Published on January 7, 2020
Русский
Установка и настройка Postfix в Ubuntu 18.04

Введение

Postfix — популярный почтовый агент (MTA) с открытым исходным кодом, который можно использовать для маршрутизации и доставки почты в системе Linux. Согласно оценкам, примерно 25% публичных почтовых серверов в Интернете используют Postfix.

В этом обучающем модуле мы научим вас быстро развертывать Postfix на сервере Ubuntu 18.04.

Предварительные требования

Для выполнения заданий этого обучающего модуля вам потребуется доступ к пользователю без прав root с привилегиями sudo. Для создания такого пользователя следуйте указаниям руководства «Начальная настройка сервера Ubuntu 18.04».

Для правильной настройки Postfix вам потребуется полностью квалифицированное доменное имя, указывающее на сервер Ubuntu 18.04. Полезную информацию по настройке доменного имени с помощью DigitalOcean можно найти в этом руководстве. Если вы планируете принимать почту, вам также потребуется запись MX, указывающая на ваш почтовый сервер.

Для целей этого обучающего модуля мы предположим, что вы настраиваете хост с FQDN mail.example.com.

Шаг 1 — Установка Postfix

Postfix входит в репозитории Ubuntu по умолчанию, поэтому установку выполнить очень просто.

Вначале обновите кэш локального пакета apt, а затем установите программное обеспечение. Мы добавим в команду установки переменную среды DEBIAN_PRIORITY=low, чтобы включить несколько дополнительных диалогов:

  1. sudo apt update
  2. sudo DEBIAN_PRIORITY=low apt install postfix

Используйте следующую информацию, чтобы правильно ввести данные для своей среды:

  • General type of mail configuration?: Для данного параметра мы выберем пункт Internet Site, соответствующий потребностям нашей инфраструктуры.
  • System mail name: это базовый домен, используемый для построения корректного адреса электронной почты, когда имеется только часть адреса с именем учетной записи. Например, имя хоста нашего сервера mail.example.com, но мы будем использовать для системной почты example.com, так что для имени пользователя user1 в Postfix будет использоваться адрес user1@example.com.
  • Root and postmaster mail recipient: это учетная запись Linux, на которую будет перенаправляться почта, адресованная root@ и postmaster@. Используйте для этой цели свою основную учетную запись. В нашем случае это sammy.
  • Other destinations to accept mail for: определение получателей почты, которых будет принимать этот экземпляр Postfix. Если вам потребуется добавить любые другие домены, почту для которых этот сервер будет получать, вы можете сделать это здесь. В противном случае, параметры по умолчанию отлично подойдут.
  • Force synchronous updates on mail queue?: поскольку вы вероятно используете журнальную файловую систему, выберите No.
  • Local networks: это перечень локальных сетей, для которых ваш почтовый сервер настроен как реле пересылки сообщений. Значение по умолчанию подойдет для большинства случаев. Если вы пожелаете изменить его, постарайтесь максимально ограничить диапазон сетей.
  • Mailbox size limit: используется для ограничения размера сообщений. Значение «0» отключает любые ограничения размера.
  • Local address extension character: символ, используемый для отделения обычной части адреса от расширения (используется для создания динамических псевдонимов).
  • Internet protocols to use: укажите, нужно ли ограничивать версии протокола IP, поддерживаемые Postfix. В нашем случае мы выберем «all».

Итак, для целей этого обучающего модуля мы используем следующие настройки параметров:

  • General type of mail configuration?: Internet Site
  • System mail name: example.com (not mail.example.com)
  • Root and postmaster mail recipient: sammy
  • 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

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

  1. sudo dpkg-reconfigure postfix

Для параметров будут указаны заданные ранее значения.

Завершив настройку параметров, мы можем еще немного изменить конфигурацию, чтобы настроить систему желаемым образом.

Шаг 2 — Настройка конфигурации Postfix

Теперь мы настроим некоторые параметры, для которых не выводились диалоги.

Вначале мы зададим почтовый ящик. Мы используем формат Maildir, который разделяет сообщения на отдельные файлы, перемещаемые между каталогами в зависимости от действий пользователя. Также можно использовать формат mbox (здесь мы не будем говорить о нем), хранящий все сообщения в одном файле.

Мы зададим для переменной home_mailbox значение Maildir/, в результате чего в домашнем каталоге пользователя будет создана структура каталогов с этим именем. Команду postconf можно использовать для запроса или установки параметров конфигурации. Настройте home_mailbox с помощью следующей команды:

  1. sudo postconf -e 'home_mailbox= Maildir/'

Теперь мы можем задать расположение таблицы virtual_alias_maps. Эта таблица сопоставляет произвольные учетные записи электронной почты с системными учетными записями Linux. Мы создадим эту таблицу по адресу /etc/postfix/virtual. Для этого мы снова можем использовать команду postconf:

  1. sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

Шаг 3 — Сопоставление почтовых адресов с учетными записями Linux

Теперь мы можем настроить файл виртуальных карт. Откройте в файл в своем текстовом редакторе:

  1. sudo nano /etc/postfix/virtual

Таблица карт виртуальных псевдонимов имеет очень простой формат. Слева перечисляются все адреса, для которых вы хотите принимать электронную почту. Затем идет разделенный пробелами перечень пользователей Linux, которым вы хотите доставлять эту почту.

Например, если вы хотите принимать электронную почту на адреса contact@example.com и admin@example.com и доставлять ее пользователю Linux с именем sammy, вы можете настроить файл следующим образом:

/etc/postfix/virtual
contact@example.com sammy
admin@example.com sammy

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

Мы можем применить сопоставление с помощью следующей команды:

  1. sudo postmap /etc/postfix/virtual

Перезапустите процесс Postfix, чтобы убедиться в применении всех наших изменений:

  1. sudo systemctl restart postfix

Шаг 4 — Настройка брандмауэра

Если вы используете брандмауэр UFW, настроенный в соответствии с руководством по начальной настройке сервера, нам потребуется добавить исключение для Postfix.

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

  1. sudo ufw allow Postfix

Серверный компонент Postfix установлен и готов к работе. Теперь мы настроим клиент, который будет принимать почту, которую будет обрабатывать Postfix.

Шаг 5 — Настройка среды для соответствия расположению почты

Перед установкой клиента нужно убедиться, что переменная среда MAIL задана правильно. Клиент использует эту переменную для определения места, где он будет искать почту пользователя.

Чтобы переменная существовала вне зависимости от способа доступа к учетной записи (через ssh, su, su -, sudo и т. д.), ее нужно задать в нескольких местах. Мы добавим ее в /etc/bash.bashrc и в файл в каталоге /etc/profile.d, чтобы она была настроена для каждого пользователя.

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

  1. echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

Чтобы прочитать переменную для текущего сеанса, вы можете использовать в качестве источника файл /etc/profile.d/mail.sh:

  1. source /etc/profile.d/mail.sh

Шаг 6 — Установка и настройка почтового клиента

Для взаимодействия с доставляемой почтой мы установим пакет s-nail. Это вариант клиента BSD xmail, который имеет много функций, может правильно обрабатывать формат Maildir и в основном обладает обратной совместимостью. Версия mail для GNU имеет несколько ограничений, в частности, прочитанная почта всегда сохраняется в формате mbox вне зависимости от исходного формата.

Для установки пакета s-nail введите:

  1. sudo apt install s-nail

Нам нужно изменить несколько параметров. Откройте файл /etc/s-nail.rc в своем редакторе:

  1. sudo nano /etc/s-nail.rc

Добавьте в конце файла следующие опции:

/etc/s-nail.rc
. . .
set emptystart
set folder=Maildir
set record=+sent

Так клиент будет открываться даже при пустом почтовом ящике. Кроме того каталог Maildir будет задан во внутренней переменной folder, которая будет использоваться для создания файла sent mbox для хранения отправленных писем.

Сохраните файл и закройте его после завершения.

Шаг 7 — Инициализация Maildir и тестирование клиента

Теперь мы можем протестировать клиент.

Инициализация структуры каталогов

Самый простой способ создания структуры Maildir в домашнем каталоге — отправить себе электронное письмо. Для этого мы можем использовать команду s-nail. Поскольку файл sent будет доступен только после создания Maildir, нам нужно отключить запись в него для нашего первого письма. Опция -Snorecord поможет нам в этом.

Для отправки письма добавьте строку в команду s-nail. Измените команду, чтобы сделать получателем вашего пользователя Linux:

  1. echo 'init' | s-nail -s 'init' -Snorecord sammy

Вы можете получить следующий ответ:

Output
Can't canonicalize "/home/sammy/Maildir"

Это нормально, и такой ответ может появиться только при отправке первого сообщения. Мы можем еще раз проверить создание каталога, выполнив поиск нашего каталога ~/Maildir:

  1. 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:

Похоже наше письмо доставлено.

Управление почтой с помощью клиента

Используйте клиент для проверки почты:

  1. s-nail

Вы должны увидеть новое сообщение:

Output
s-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:

  1. h
Output
s-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:

  1. d

Для выхода и возврата в терминал введите q и нажмите ENTER:

  1. q

Отправка писем с помощью клиента

Вы можете протестировать функцию отправки писем, набрав сообщение в текстовом редакторе:

  1. nano ~/test_message

Введите текст, которы вы хотите отправить по почте:

~/test_message
Hello,

This is a test.  Please confirm receipt!

Мы можем использовать команду cat, чтобы направить сообщение в процесс s-nail. По умолчанию сообщение будет отправлено от имени вашего пользователя Linux. При желании вы можете изменить поле «From» с помощью атрибута -r:

  1. 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. Запустите интерактивный клиент еще раз с помощью следующей команды:

  1. s-nail

После этого откройте список отправленных сообщений с помощью следующей команды:

  1. 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.

Learn more about us


About the authors


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


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!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel