One place for hosting & domains

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


      Предыдущая версия данного обучающего руководства была написана Джастином Эллингвудом

      Введение

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

      В этом руководстве мы расскажем, как установить и настроить Postfix на сервере Ubuntu 20.04. Затем мы протестируем способность Postfix правильно выполнять маршрутизацию, выполнив установку s-nail, почтового пользовательского агента (MUA), также называемого клиентом электронной почты.

      Обратите внимание, что цель данного обучающего модуля — помочь вам быстро развернуть Postfix с базовыми функциями работы с электронной почтой. К окончанию прохождения этого руководства у вас не будет полнофункционального сервера электронной почты, но будут некоторые базовые компоненты для создания такого сервера.

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

      Для прохождения этого обучающего модуля вам потребуется следующее:

      • Сервер под управлением Ubuntu 20.04, который будет работать как ваш почтовый сервер Postfix. Этот сервер должен иметь пользователя без прав root с привилегиями sudo, а также брандмауэр, настроенный с помощью UFW. Для выполнения этого требования следуйте указаниям нашего руководства по начальной настройке сервера Ubuntu 20.04.
      • Полное доменное имя, указывающее на ваш сервер Ubuntu 20.04. Помощь по настройке доменного имени в DigitalOcean можно найти в нашей документации по доменам и сетям DNS. Помните, что если вы планируете получать доступ к почте из внешнего источника, вам также потребуется запись MX, указывающая на ваш почтовый сервер.

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

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

      Postfix включен в репозиторий Ubuntu по умолчанию, так что вы можете установить его с помощью APT.

      Для начала обновите локальный кэш пакетов apt:

      Затем установите пакет postfix с помощью следующей команды. Обратите внимание, что мы передаем переменную среды DEBIAN_PRIORITY=low в эту команду установки. В связи с этим, процедура установки предложит вам настроить некоторые дополнительные опции:

      • 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 (не mail.example.com)
      • Root and postmaster mail recipient: имя пользователя основной учетной записи Linux (в наших примерах 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

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

      • sudo dpkg-reconfigure postfix

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

      После завершения процедуры установки можно внести некоторые изменения в конфигурацию Postfix.

      Шаг 2 — Изменение конфигурации Postfix

      Теперь вы можете изменить дополнительные настройки, которые не предлагались в диалогах процедуры установки. Многие параметры конфигурации Postfix заданы в файле /etc/postfix/main.cf. Вместо того, чтобы редактировать этот файл напрямую, вы можете использовать команду Postfix postconf для запроса или установки параметров конфигурации.

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

      Задайте для переменной home_mailbox значение Maildir/. Впоследствии вы создадите структуру каталогов с этим именем в своем домашнем каталоге пользователя. Настройте 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'

      Мы определили расположение файла виртуальной карты в файле main.cf и теперь можем создать сам файл и начать сопоставление учетных записей электронной почты с учетными записями пользователей в системе Linux. Создайте файл в nano или другом предпочитаемом текстовом редакторе:

      • 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
      

      После сопоставления всех почтовых адресов с соответствующими учетными записями сервера вы можете сохранить и закрыть файл. Если вы использовали nano, нажмите CTRL + X, Y, а затем ENTER.

      Примените сопоставление:

      • sudo postmap /etc/postfix/virtual

      Перезапустите процесс Postfix, чтобы все изменения были применены:

      • sudo systemctl restart postfix

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

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

      Теперь Postfix настроен и готов принимать внешние подключения. Однако мы еще не готовы тестировать его с помощью почтового клиента. Прежде чем устанавливать почтовый клиент и использовать его для взаимодействия с доставляемой на сервер почтой, необходимо внести некоторые изменения в настройки сервера Ubuntu.

      Шаг 3 — Установка почтового клиента и инициализация структуры Maildir

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

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

      Если требуется гарантированно задать переменную 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 с помощью APT:

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

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

      /etc/s-nail.rc

      . . .
      set emptystart
      set folder=Maildir
      set record=+sent
      

      Вот что делают эти строки:

      • set emptystart: позволяет клиенту открываться даже при пустом почтовом ящике
      • set folder=Maildir: задает для каталога Maildir внутреннюю переменную folder
      • set record=+sent создает файл sent в формате mbox для хранения отправленной почты в каталоге, заданном в переменной folder, в данном случае Maildir

      Сохраните файл и закройте его после завершения. Теперь вы готовы инициализировать структуру Maildir в вашей системе.

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

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

      • echo 'init' | s-nail -s 'init' -Snorecord sammy

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

      Output

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

      Это нормально, и такой ответ может появиться только при отправке первого сообщения.

      Для проверки создания каталога выполните поиск каталога ~/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. Для этого мы просмотрим отправленное вами сообщение init и отправим сообщение на сторонний адрес электронной почты.

      Шаг 5 — Тестирование клиента

      Чтобы открыть клиент, запустите команду s-nail:

      В консоли вы увидите рудиментарную папку входящих с ожидающим сообщением init:

      Output

      s-nail version v14.9.15. Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N 1 sammy@example.com 2020-05-19 15:40 14/392 init

      Нажмите ENTER, чтобы вывести сообщение:

      Output

      [-- Message 1 -- 14 lines, 369 bytes --]: From sammy@example.com Tue May 19 15:40:48 2020 Date: Tue, 19 May 2020 15:40:48 +0000 To: sammy@example.com Subject: init Message-Id: <20160513220749.A278F228D9@mail.example.com> From: sammy@example.com init

      Вы можете вернуться к списку сообщений, введя h и нажав ENTER:

      Output

      >R 1 sammy@example.com 2020-05-19 15:40 14/392 init

      Теперь сообщение имеет состояние R, означающее, что оно прочитано.

      Поскольку это сообщение не очень полезно, мы можем удалить его, введя d и нажав ENTER:

      Чтобы вернуться к терминалу, введите q и нажмите ENTER:

      В качестве последнего испытания проверим, может ли s-nail правильно отправлять электронные сообщения. Для этого передадим содержимое текстового файла text в процесс s-nail, как мы делали это с сообщением init на предыдущем шаге.

      Для начала напишем тестовое сообщение в текстовом редакторе:

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

      ~/test_message

      Hello,
      
      This is a test.  Please confirm receipt!
      

      Сохраните и закройте файл после написания сообщения.

      Затем используйте команду cat для передачи сообщения в процесс s-nail. Для этого можно использовать следующий пример, где используются следующие опции:

      • -s: задает строку темы электронного сообщения
      • -r: изменение поля «From» письма. По умолчанию в этом поле указан текущий пользователь Linux. Опция -r позволяет заменить его корректным адресом, в том числе определенным в файле /etc/postfix/virtual. Например, в следующей команде используется адрес contact@example.com

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

      • cat ~/test_message | s-nail -s 'Test email subject line' -r contact@example.com user@email.com

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

      Примечание. Если сообщение отсутствует в почтовом ящике, оно может быть доставлено в папку Spam.

      Вы можете просмотреть отправленные сообщения в клиенте s-nail. Запустите интерактивный клиент еще раз:

      Для просмотра отправленных сообщений в клиенте электронной почты введите:

      Вывод будет выглядеть следующим образом:

      Output

      +[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 contact@example.com 2020-05-19 15:47 12/297 Test email subject line

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

      Заключение

      Теперь почтовая система Postfix настроена на вашем сервере Ubuntu 20.04. Управление серверами электронной почты может оказаться непростой задачей для начинающих системных администраторов, но с этой конфигурацией у вас должно быть достаточно функций MTA для работы с электронной почтой, чтобы начать эту работу.



      Source link