Настройка postfix smtp linux

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

Postfix – это агент пересылки сообщений (Mail Transfer Agent, или MTA), приложение для обмена электронной почтой. Это руководство поможет вам установить и настроить Postfix только для отправки сообщений локальных приложений. Такая настройка полезна в ситуациях, когда вам нужно регулярно отправлять уведомления ваших приложений по электронной почте или просто обрабатывать большой исходящий трафик, который не поддерживают сторонние провайдеры электронной почты. Кроме того, это позволяет получить легкую альтернативу полноценному SMTP-серверу с сохранением требуемой функциональности.

В этом руководстве мы установим и настроим Postfix как SMTP-сервер исходящей почты. Также мы расскажем, как запрашивать бесплатные сертификаты TLS от Let’s Encrypt и шифровать исходящие электронные письма с их помощью.

Требования

  • Сервер Ubuntu 20.04, настроенный по этому мануалу (включая пользователя с доступом к sudo).
  • Валидный домен (в мануале используется условный домен your_domain).
  • DNS- запись А для домена your_domain, указывающая на IP-адрес вашего сервера.

Примечание: Имя хоста сервера должно соответствовать этому домену или поддомену. Чтобы проверить имя хоста своего сервера, введите команду hostname. Вывод должен совпадать с именем сервера, которое он получил при создании.

1: Установка Postfix

Чтобы установить Postfix, а вместе с ним и ряд вспомогательных программ, необходимых для настройки почты, просто установите пакет mailutils.

Обновите индекс пакетов:

sudo apt update

А затем установите mailtuils:

sudo apt install mailutils

В конце установки будет предложено выбрать тип настройки.

Please select the mail configuration type that best meets your needs.
[…] General type of mail configuration:
No configuration
Internet site
Internet with smarthost
Satellite system
Local only

Рекомендуется выбрать стандартную опцию Internet site. Для этого нажмите Tab и Enter. Если вы видите только описательный текст, нажмите Tab, чтобы выбрать OK, а затем нажмите Enter.

Если диалоговое окно не запустилось автоматически, откройте его вручную:

sudo dpkg-reconfigure postfix

После этого программа предложит выбрать имя почты, которое определяется параметром System mail name.

The ‘mail name’ is the domain name used to ‘qualify’ _ALL_ mail addresses without a domain name.
[…] System mail name:

Поле System mail name должно совпадать с именем сервера, которое вы выбрали при его создании. Укажите имя, а затем нажмите Tab и Enter.

2: Настройка Postfix

Теперь нужно настроить Postfix для отправки и получения сообщений с localhost – то есть с локального хоста, на котором установлен почтовый сервер.

Для этого Postfix должен прослушивать интерфейс loopback – это виртуальный сетевой интерфейс, который используется сервером для внутреннего взаимодействия. Откройте конфигурационный файл Postfix в текстовом редакторе:

sudo nano /etc/postfix/main.cf

Найдите там эти строки:

. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
. . .

Измените значение строки inet_interfaces на loopback-only.

. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
. . .

После этого нужно отредактировать директиву mydestination. Она определяет список доменов, почта которых должна быть доставлена через локальный агент доставки почты local_transport. По умолчанию список выглядит так:

. . .
mydestination = $myhostname, your_domain, localhost.com, , localhost
. . .

Вместо стандартного списка нужно использовать этот:

. . .
mydestination = localhost.$mydomain, localhost, $myhostname
. . .

Если вместо домена вы используете поддомен и хотите, чтобы почта выглядела так, будто она была отправлена с главного домена, добавьте в конец файла main.cf такую строку:

Дополнительный параметр masquerade_domains указывает, для каких доменов нужно удалять часть поддомена в адресе электронной почты.

Сохраните и закройте файл.

Примечание: Если вы разместили несколько доменов в рамках одного сервера, остальные домены можно добавить в настройки Postfix с помощью директивы mydestination.

sudo systemctl restart postfix

3: Тестирование SMTP-сервера

Теперь нужно проверить, может ли Postfix отправлять сообщения на внешний электронный адрес. Для этого используется команда mail, которая также входит в пакет mailutils.

Чтобы отправить тестовое сообщение, введите команду:

echo «This is the body of the email» | mail -s «This is the subject line» your_email_address

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

Читайте также:  Windows 10 как выбрать устройство вывода звука

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

Если вы получили сообщение об ошибке от команды mail или не получили тестовое сообщение на указанный адрес, хотя прошло много времени, убедитесь, что не допустили ошибок в конфигурациях Postfix и что имя вашего сервера и имя хоста направлены на ваш домен.

Обратите внимание, в этой конфигурации адрес в поле From для отправляемых вами тестовых электронных писем будет иметь вид your_user_name@your_domain, где your_user_name – это пользователь сервера, от имени которого вы запускали команду.

4: Пересылка почты

Теперь нам нужно настроить пересылку почты (или форвардинг), чтобы сервер мог предавать сообщения, отправленные пользователю root, на ваш персональный внешний адрес.

Чтобы Postfix отправлял сообщения, сгенерированные системой, на ваш почтовый адрес, отредактируйте файл /etc/aliases.

sudo nano /etc/aliases

Стандартный файл выглядит так:

# See man 5 aliases for format
postmaster: root

Пока что тут есть всего одна директива, которая пересылает все системные письма на root. Чтобы сообщения перенаправлялись на ваш адрес электронной почты, добавьте в конец файла эту строку:

Замените your_email_address своим адресом электронной почты. Сохраните и закройте файл. Чтобы изменения вступили в силу, введите команду:

Эта команда составит базу алиасов, которые использует команда mail.

Теперь проверьте работу пересылки, отправив сообщение пользователю root:

echo «This is the body of the email» | mail -s «This is the subject line» root

Это сообщение должно появиться в вашем почтовом ящике (если его нет, проверьте спам).

Итак, вы настроили перенаправление сообщений на ваш адрес. Теперь давайте настроим шифрование, чтобы защитить ваши сообщения от несанкционированного доступа при их передаче.

5: Настройка SMTP-шифрования

Теперь вы можете включить шифрование SMTP, запросив бесплатный TLS сертификат для вашего домена у сервиса Let’s Encrypt (используя клиент Certbot) и настроив Postfix для его поддержки при отправке сообщений.

Ubuntu включает Certbot в стандартный репозиторий пакетов. Чтобы установить его, введите следующую команду:

sudo apt install certbot

Чтобы подтвердить установку, нажмите Y и Enter.

При начальной настройке сервера вы установили брандмауэр UFW. Вам нужно открыть в нем HTTP-порт 80, чтобы можно было выполнить проверку домена. Запустите следующую команду, чтобы открыть этот порт:

sudo ufw allow 80

Вывод будет выглядеть так:

Rule added
Rule added (v6)

Теперь, когда порт открыт, запустите Certbot, чтобы получить сертификат:

sudo certbot certonly —standalone —rsa-key-size 4096 —agree-tos —preferred-challenges http -d your_domain

Эта команда запросит сертификаты с размером ключа RSA 4096 бит, запустит временный автономный веб-сервер (–standalone) для их проверки и выполнит проверку через порт 80 (–preferred-challenge http). Не забудьте заменить your_domain своим доменом перед запуском команды и введите свой адрес электронной почты при появлении запроса.

Вы получите такой вывод:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for `your_domain`
Waiting for verification.
Cleaning up challenges
IMPORTANT NOTES:
— Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2020-07-11. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
«certbot renew»
— If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Как написано в примечаниях в выводе, ваш сертификат и файл закрытого ключа были сохранены в /etc/letsencrypt/live/your_domain.

Теперь, когда у вас есть сертификат, откройте файл main.cf в редакторе:

sudo nano /etc/postfix/main.cf

Найдите такой раздел:

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:$/smtp_scache

Обновите в нем параметры TLS для Postfix (вместо your_domain укажите ваш домен).

# TLS parameters
smtpd_tls_cert_file=/etc/letsencrypt/live/your_domain/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/your_domain/privkey.pem
smtpd_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:$/smtp_scache

Сохраните и закройте файл.

Чтоб применить новые настройки, перезапустите Postfix.

sudo systemctl restart postfix

Попробуйте снова отправить письмо:

echo «This is the body of an encrypted email» | mail -s «This is the subject line» your_email_address

Читайте также:  Смешные ошибки windows леха

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

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

Заключение

Теперь у вас есть сервер исходящей почты Postfix. Шифрование всех исходящих сообщений – это хороший способ сделать ваши сообщения непохожими на спам. Для среды разработки этой меры должно быть достаточно.

Однако если вы собираетесь отправлять электронные письма потенциальным пользователям сайта (например, письма с подтверждением регистрации), вам следует настроить записи SPF, чтобы повысить вероятность того, что сообщения, отправленные с вашего сервера, будут нормально восприняты.

Источник

SMTP сервер только для отправки сообщений в Ubuntu 18.04

Postfix — это агент передачи почты (MTA), т. е. приложение для отправки и приема электронной почты. Его можно настроить так, чтобы только локальные приложения могли использовать его для отправки электронной почты. Это может быть полезно, если вам нужно регулярно рассылать по электронной почте уведомления от ваших приложений, или если у вас много исходящего трафика, и сторонний поставщик услуг электронной почты не разрешает такие объемы. Это облегченная альтернатива развертыванию полноценного сервера SMTP, позволяющая сохранить требуемые функции.

Установка Postfix

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

Вначале обновите базу данных пакетов:

Затем выполните установку Postfix, запустив следующую команду:

Перед окончанием установки вы увидите окно настройки конфигурации Postfix:

По умолчанию используетя опция Internet Site (сайт). Это наиболее подходящая опция для нашего случая, поэтому нажмите TAB , а затем нажмите ENTER . Если вы увидите только текст описания, нажмите TAB для выбора пункта OK , а затем нажмите ENTER .

Если опция не отображается автоматически, запустите следующую команду:

После этого откроется еще один диалог настройки конфигурации System mail name (имя системной почты):

Имя системной почты System mail name должно совпадать с именем, которое вы присвоили своему серверу при его создании. После завершения настройки нажмите TAB , а затем нажмите ENTER .

Мы установили Postfix и готовы приступить к настройке.

Настройка Postfix

На этом шаге мы настроим Postfix для отправки и приема электронных писем только с сервера, на котором он запущен, т. е. с localhost .

Для этого нужно настроить Postfix для прослушивания только интерфейса loopback, интерфейса виртуальной сети, который сервер использует для внутренней связи. Для внесения изменений потребуется отредактировать главный файл конфигурации Postfix с именем main.cf , хранящийся в каталоге etc/postfix .

Откройте его для редактирования в предпочитаемом текстовом редакторе:

Найдите следующие строки:/etc/postfix/main.cf

Задайте для параметра inet_interfaces значение loopback-only :/etc/postfix/main.cf

Также вам потребуется изменить директиву mydestination , используемую для указания списка доменов, доставляемых через транспорт доставки почты local_transport . По умолчанию значения выглядят примерно так: /etc/postfix/main.cf

Измените строку, чтобы она выглядела следующим образом: /etc/postfix/main.cf

Если ваш домен фактически является субдоменом, и вы хотите, чтобы сообщения электронной почты выглядели, как если бы они были отправлены с главного домена, вы можете добавить следующую строку в конец файла main.cf : /etc/postfix/main.cf

Необязательный параметр masquerade_domains указывает, для каких доменов в адресе электронной почты будут урезаться субдомены.

После внесения изменений сохраните и закройте файл.

Примечание. В случае хостинга нескольких доменов на одном сервере другие домены также можно передать Postfix с помощью директивы mydestination .

Затем перезапустите Postfix, выполнив следующую команду:

Вы настроили Postfix только для отправки почты с вашего сервера. Теперь протестируем настройку, отправив тестовое сообщение на адрес электронной почты.

Тестирование сервера SMTP

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

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

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

Проверьте почтовый ящик, на адрес которого вы отправили сообщение. Вы должны увидеть это сообщение в папке «Входящие». Если его там нет, проверьте папку «Нежелательная почта». Сейчас все электронные письма отправляются без шифрования, и поэтому провайдеры могут посчитать их спамом. Шифрование мы настроим немного позднее, на шаге 5.

Читайте также:  Amazon kindle driver windows 10

Если при выполнении команды mail появится сообщение об ошибке, или вы не получите письмо в течение длительного времени, проверьте правильность измененной вами конфигурации Postfix и соответствие имени сервера и имени хоста вашему домену.

С этой конфигурацией адрес в поле « От » в отправляемых тестовых письмах будет иметь вид your_user_name@your_domain , где your_user_name — имя пользователя сервера, от лица которого вы запустили команду.

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

Переадресация системной почты

На этом шаге мы настроим переадресацию электронной почты для пользователя root , чтобы сгенерированные системой сообщения, отправляемые на этот адрес, пересылались на внешний адрес электронной почты.

Файл /etc/aliases содержит список альтернативных имен получателей электронных писем. Откройте его для редактирования:

По умолчанию он выглядит так: /etc/aliases

Единственная содержащаяся в нем директива предписывает пересылать сгенерированные системой электронные сообщения пользователю root .

Добавьте в конец файла следующую строку: /etc/aliases

Эта строка предписывает пересылать электронные письма, отправленные пользователю root , на указанный адрес электронной почты. Обязательно замените your_email_address своим личным адресом электронной почты. После внесения изменений сохраните и закройте файл.

Для вступления изменений в силу выполните следующую команду:

При запуске команды newaliases будет построена база данных псевдонимов, используемых командой mail . Эти псевдонимы берутся из файла конфигурации, который вы только что отредактировали.

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

Письмо должно прийти на указанный вами почтовый ящик. Если его там нет, проверьте папку «Нежелательная почта».

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

Включение шифрования SMTP

Теперь вы можете включить шифрование SMTP, запросив бесплатный сертификат TLS от Let’s Encrypt для вашего домена (с помощью Certbot) и настроив Postfix для использования этого сертификата при отправке сообщений.

Certbot содержится в стандартном репозитории пакетов Ubuntu, но там может находиться не самая актуальная версия. Лучше использовать следующую команду для добавления официального репозитория:

Нажмите в диалоге ENTER для подтверждения. Обновите кэш диспетчера пакетов вашего сервера.

Установите последнюю версию Certbot:

При начальной настройке сервера вы установили простой брандмауэр ufw . Вам нужно настроить его, чтобы разрешить трафик через порт HTTP 80 , и тем самым завершить подтверждение вашего домена. Запустите следующую команду для его активации:

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

Теперь порт открыт, и мы можем запустить Certbot для получения сертификата:

Эта команда предписывает Certbot выдавать сертификаты с размером ключа RSA 4096 бит, запустить временный отдельный веб-сервер ( —standalone ) для проверки и выполнить проверку через порт 80 ( —preferred-challenges http ). Перед запуском команды обязательно замените your_domain именем вашего домена и введите свой адрес электронной почты, когда система его запросит.

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

Как указано в примечаниях, ваши сертификат и файл закрытого ключа сохранены в каталоге /etc/letsencrypt/live/your_domain .

Получив сертификат, откройте файл main.cf для редактирования:

Найдите следующий раздел: /etc/postfix/main.cf

Измените файл следующим образом, заменяя your_domain на ваше доменное имя, где это необходимо. При этом также будут изменены ваши настройки TLS для Postfix: /etc/postfix/main.cf

Закончив, сохраните и закройте файл.

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

Попробуйте отправить электронное письмо еще раз:

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

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

Заключение

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

Источник

Оцените статью