Введение
Postfix — это хорошо известный агент передачи почты (MTA) с открытым исходным кодом, который можно использовать для маршрутизации и доставки электронной почты в системе Linux. Подсчитано, что около 25% общедоступных почтовых серверов в Интернете используют Postfix.
В этом руководстве вы узнаете, как установить и настроить Postfix на сервере Ubuntu 20.04 LTS Focal Fossa. Затем вы проверите, что Postfix может правильно маршрутизировать почту, установив s-nail
Mail User Agent (MUA), также известный как почтовый клиент.
Это руководство поможет вам быстро настроить и запустить Postfix, используя всего несколько базовых функций электронной почты. К концу этого руководства у вас не будет полнофункционального почтового сервера, но у вас будут некоторые основные компоненты этой установки, которые помогут вам начать работу.
Предпосылки
Чтобы следовать этому руководству, вам потребуется следующее:
- Сервер под управлением Ubuntu 20.04 LTS для работы в качестве почтового сервера Postfix. На этом сервере должен быть пользователь без полномочий root с привилегиями sudo и брандмауэр, настроенный с помощью UFW.
- Полное доменное имя, указывающее на ваш сервер Ubuntu 20.04. Обратите внимание, что если вы планируете получать доступ к своей почте из внешнего места, вам необходимо убедиться, что у вас есть запись MX, которая также указывает на ваш почтовый сервер.
Обратите внимание, что в этом руководстве предполагается, что вы настраиваете хост с полным доменным mail.example.com
. При необходимости обязательно измените example.com
или mail.example.com
на свое полное доменное имя.
Если вы хотите установить Postfix на удаленный сервер, продолжайте читать, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Установить Постфикс
Postfix включен в репозитории Ubuntu по умолчанию, поэтому вы можете установить его с помощью APT.
Для начала обновите кеш пакета apt
:
sudo apt update
Затем установите пакет postfix
с помощью следующей команды. Обратите внимание, что здесь мы передаем переменную окружения DEBIAN_PRIORITY=low
в этой команде установки. Это позволит процессу установки настроить некоторые дополнительные параметры:
sudo DEBIAN_PRIORITY=low apt install postfix
Этот процесс установки откроет серию интерактивных инструкций. Для целей этого руководства используйте следующую информацию для заполнения подсказок:
- Общий тип конфигурации почты?: Для этого выберите Интернет-сайт, поскольку он соответствует потребностям нашей инфраструктуры.
- Системное почтовое имя: это базовый домен, используемый для создания действительного адреса электронной почты, когда предоставляется только часть адреса, связанная с учетной записью. Например, предположим, что имя хоста вашего сервера —
mail.example.com
. Вероятно, вы захотите установить имя системной почты, подобное этому, наexample.com
, поэтому Postfix будет использовать адрес[email protected]
. - Получатель почты root и postmaster: это учетная запись Linux, на которую будет пересылаться почта, адресованная
root@
иpostmaster@
. Используйте для этого свой основной аккаунт. В этом примере noviello. - Другие адресаты для приема почты: определяет адресатов почты, которые будет принимать данный экземпляр Postfix. Если вам нужно добавить другие домены, за получение которых будет отвечать этот сервер, добавьте их здесь. В противном случае будет достаточно значения по умолчанию.
- Принудительно синхронизировать обновления в почтовой очереди?: Поскольку вы, вероятно, используете журналируемую файловую систему, выберите здесь Нет.
- Локальные сети: это список сетей, для которых почтовый сервер настроен на пересылку сообщений. Значение по умолчанию будет работать для большинства сценариев. Если вы решите изменить его, убедитесь, что вы очень ограничили область действия сети.
- Ограничение размера почтового ящика: можно использовать для ограничения размера сообщений. Установка его в
0
отключает любые размерные ограничения. - Символ расширения локального адреса: это символ, который можно использовать для отделения обычной части адреса от расширения (используемого для создания динамических псевдонимов). По умолчанию
+
будет работать для этого урока. - Используемые интернет-протоколы: выберите, следует ли ограничивать версию IP, поддерживаемую Postfix. Для целей этого руководства выберите All.
Например, в этом руководстве используются следующие настройки:
- Общий тип конфигурации почты?: Веб-сайт
- Имя системной почты:
example.com
(неmail.example.com
) - Получатель почты root и postmaster: имя пользователя вашей основной учетной записи Linux (в моем случае noviello )
- Другие направления для приема почты:
$myhostname, example.com, mail.example.com, localhost.example.com, localhost
- Принудительно синхронизировать обновления в почтовой очереди?: Нет
- Локальные сети:
127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
- Ограничение размера почтового ящика:
0
- Символ расширения локального адреса:
+
- Используемые интернет-протоколы: все
Примечаниеsudo dpkg-reconfigure postfix
В конце процесса установки вы готовы внести некоторые изменения в конфигурацию Postfix.
Измените конфигурацию постфикса
Теперь вы можете настроить некоторые параметры, которые не запрашивал процесс установки пакета. Многие параметры конфигурации Postfix определены в файле /etc/postfix/main.cf
. Вместо того, чтобы редактировать этот файл напрямую, вы можете использовать команду postconf
Postfix для запроса или установки параметров конфигурации.
Для начала установите расположение почтового ящика пользователя 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, которому вы хотите, чтобы почта доставлялась.
Например, если вы хотите принимать электронные письма на адреса [email protected]
и [email protected]
и хотите, чтобы эти электронные письма доставлялись начинающим пользователям Linux, вы можете настроить файл следующим образом:
После сопоставления всех адресов с соответствующими учетными записями сервера сохраните и закройте файл. Если вы использовали nano
, нажмите CTRL + X
, Y
, затем ENTER
.
Примените сопоставление, набрав:
sudo postmap /etc/postfix/virtual
Перезапустите процесс Postfix, чтобы убедиться, что все изменения применены:
sudo systemctl restart postfix
Предположим, вы установили и настроили брандмауэр с помощью UFW. Это заблокирует внешние подключения к службам на вашем сервере по умолчанию, если эти подключения не разрешены явно, поэтому вам нужно добавить правило брандмауэра, чтобы разрешить исключение для Postfix.
Вы можете разрешить подключения к службе, набрав:
sudo ufw allow Postfix
При этом Postfix настроен и готов принимать внешние подключения. Однако вы еще не готовы попробовать это с почтовым клиентом. Прежде чем вы сможете установить клиент и использовать его для взаимодействия с почтой, доставленной на сервер, вам необходимо внести некоторые изменения в конфигурацию сервера Ubuntu.
Установите почтовый клиент и инициализируйте дерево 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:
sudo apt install s-nail
Перед запуском клиента необходимо настроить некоторые параметры. Откройте файл /etc/s-nail.rc
в вашем редакторе:
sudo nano /etc/s-nail.rc
Внизу файла добавьте следующие параметры:
Вот что делают эти строки:
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 root
ПримечаниеCan't canonicalize "/home/noviello/Maildir"
Убедитесь, что каталог был создан, выполнив поиск в каталоге ~/Maildir
:
ls -R ~/Maildir
Вы увидите, что структура каталогов создана и новый файл сообщений находится в каталоге ~/Maildir/new
:
/home/noviello/Maildir/:
cur new tmp
/home/noviello/Maildir/cur:
/home/noviello/Maildir/new:
1590659140.V801I3ffaeM732608.mail.example.com
/home/noviello/Maildir/tmp:
Теперь, когда структура каталогов создана, вы готовы протестировать клиент s-nail
, просмотрев отправленное вами init
сообщение и отправив сообщение на внешний адрес электронной почты.
Тест клиента
Чтобы открыть клиент, выполните команду s-nail
:
s-nail
На консоли вы увидите папку «Входящие» с ожидающим сообщением об init
:
s-nail version v14.9.15. Type `?' for help
"/home/noviello/Maildir": 1 message 1 new
>N 1 [email protected] 2020-05-28 11:45 14/402 init
Нажмите ENTER
, чтобы просмотреть сообщение:
[-- Message 1 -- 14 lines, 402 bytes --]:
From [email protected] Thu May 28 11:45:40 2020
Date: Thu, 28 May 2020 11:45:40 +0200
To: [email protected]
Subject: init
Message-Id: <[email protected]>
From: [email protected]
init
Вы можете вернуться к списку сообщений, набрав h
и затем ENTER
:
h
>R 1 [email protected] 2020-05-28 11:45 14/402 init
Обратите внимание, что сообщение теперь имеет статус R
, что указывает на то, что оно было прочитано.
Поскольку это сообщение не очень полезно, вы можете отклонить его, нажав d
, а затем ENTER
:
d
Чтобы вернуться в терминал, введите q
и затем ENTER
:
q
В качестве последнего теста проверьте, может ли s-nail
успешно отправлять электронные письма. Для этого вы можете перенаправить содержимое текстового файла в процесс s-nail
, как вы сделали с сообщением init
, которое вы отправили на предыдущем шаге.
Начните с написания тестового сообщения в текстовом редакторе:
nano ~/test_message
Внутри введите несколько сообщений, которые вы хотите отправить:
Сохраните и закройте файл после написания сообщения.
Затем используйте команду cat
, чтобы перенаправить сообщение процессу s-nail
. Вы можете сделать это с помощью следующего примера, в котором используются следующие параметры:
-s
: определяет тему сообщения электронной почты.-r
: необязательное изменение в поле «От:» электронной почты. По умолчанию для заполнения этого поля будет использоваться пользователь Linux, с которым вы вошли в систему. Параметр-r
позволяет вам переопределить его действительным адресом, таким как тот, который вы определили в/etc/postfix/virtual
. В следующей команде мы указываем его, чтобы лучше понять, как его использовать.
Кроме того, убедитесь, что вы вводите действующий адрес электронной почты, к которому у вас есть доступ:
cat ~/test_message | s-nail -s 'Test email subject line' -r [email protected] [email protected]
Затем перейдите в папку «Входящие» и найдите адрес электронной почты, на который вы отправили сообщение. Вы увидите свое сообщение, ожидающее там почти сразу.
Примечание
Вы можете просматривать отправленные сообщения в своем клиенте s-nail
. Перезапустите интерактивный клиент:
s-nail
В почтовом клиенте просмотрите отправленные сообщения, набрав:
file +sent
Вы увидите такой вывод:
+[/home/noviello/Maildir/]sent: 1 message 1 new
▸N 1 [email protected] 2020-05-28 11:47 12/302 Test email subject line
Вы можете управлять отправленной почтой, используя те же команды, что и для папки «Входящие».
Вывод
Теперь у вас настроен Postfix на вашем сервере Ubuntu 20.04 LTS Focal Fossa. Управление почтовыми серверами может оказаться сложной задачей для новых системных администраторов, но с такой настройкой у вас должно быть достаточно функций электронной почты MTA для начала работы.