Postfix. Надсилання пошти через зовнішній SMTP. Відмова від режиму chroot. Перевіряємо системний час

Postfixє агентом передачі пошти (MTA) в Ubuntu за промовчанням. Він розроблений щоб бути швидким, простим у адмініструванні та безпечним. Він сумісний з MTA sendmail . Цей розділ описує як встановити та налаштувати postfix. Тут також пояснюється як зробити його SMTP сервером, що використовує безпечні з'єднання(для безпечної передачіповідомлень).

Встановлення

Для установки postfixвиконайте наступну команду:

Sudo apt-get install postfix

Просто натискайте введення коли процес установки ставить питання, дуже детальне налаштуваннябуде виконано на наступному етапі.

Базове налаштування

Для налаштування postfix, виконайте таку команду:

Sudo dpkg-reconfigure postfix

Буде запущено користувальницький інтерфейс. На кожному екрані вибирайте такі значення:

    mail.example.com

    steve

    mail.example.com , localhost.localdomain, localhost

    127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24

Замініть mail.example.com на домен, для якого ви налаштовуєте email, 192.168.0.0/24 на актуальну підмережу та маску для вашого поштового сервера та steve на відповідне ім'я користувача.

Тепер саме час вирішити, який формат поштової скриньки ви хочете використовувати. За промовчанням postfix використовує формат mbox. Замість безпосереднього редагування конфігураційного файлу ви можете використовувати команду postconfдля налаштування параметрів postfix. Параметри буде збережено у файлі /etc/postfix/main.cf. Надалі якщо ви вирішите переконфігурувати окремі параметри, ви можете як запустити команду, так і вручну поправити файл.

Для налаштування формату поштової скриньки для Maildir:

Sudo postconf -e "home_mailbox = Maildir/"

Аутентифікація SMTP

SMTP-AUTH дозволяє клієнту ідентифікувати себе через механізм автентифікації (SASL). Транспортний рівеньбезпеки (TLS) буде використовуватися для шифрування процесу автентифікації. Після аутентифікації SMTP сервер дозволить клієнту надсилати пошту.

1. Налаштуйте Postfix на SMTP-AUTH за допомогою SASL (Dovecot SASL):

sudo postconf -e "smtpd_sasl_type = dovecot" sudo postconf -e "smtpd_sasl_path = private/auth-client" sudo postconf -e "smtpd_sasl_local_domain =" sudo postconf -e "smtpd_sasl_security_options = no sudo postconf -e "smtpd_sasl_auth_enable = yes" sudo postconf -e "smtpd_recipient_restrictions = \permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination"

Налаштування smtpd_sasl_path є шляхом, що стосується каталогу запитів Postfix.

3. Як тільки у вас з'явився сертифікат, настройте Postfix на використання шифрування TLS як для вхідної, так і для вихідної пошти:

sudo postconf -e "smtp_tls_security_level = may" sudo postconf -e "smtpd_tls_security_level = may" sudo postconf -e "smtp_tls_note_starttls_offer = yes" sudo postconf -e "smtpd_tls_e_key smtpd_tls_cert_file = /etc/ssl/certs/server.crt" sudo postconf -e "smtpd_tls_loglevel = 1" sudo postconf -e "smtpd_tls_received_header = yes" sudo postconf -e "myhostname = mail.example.com

4. Якщо ви використовуєте власний Центр сертифікації , щоб підписати сертифікат, введіть:

Sudo postconf -e "smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem"

Знову ж таки, для подробиць дивіться розділ Сертифікати .

Після виконання всіх команд Postfix налаштований на SMTP -AUTH і самопідписаний сертифікат створений для шифрування TLS.

Початкове налаштування postfix закінчено. Виконайте наступну команду для перезапуску сервісу postfix:

Postfix підтримує SMTP-AUTH як описано в RFC2554. Він заснований на SASL. Однак необхідно настроїти автентифікацію перед тим, як ви зможете використовувати SMTP -AUTH.

Налаштування SASL

Postfix підтримує дві реалізації SASL: Cyrus SASL і Dovecot SASL . Щоб дозволити Dovecot SASL, потрібно встановити пакет dovecot-common. Для цього з терміналу введіть таке:

Sudo apt-get install dovecot-common

Socket listen ( #master ( # Master socket пропонує access to userdb information. It"s typically # used to give Dovecot"s local delivery agent access to userdb so it # can find mailbox locations. #path = /var/run/dovecot/ auth-master #mode = 0600 # Default user/group is the one who started dovecot-auth (root) #user = #group = #) client ( # Client socket is generally safe to export to everyone. Typical use # is to export it to your SMTP server se it can do SMTP AUTH lookups # using it path = /var/spool/postfix/private/auth-client mode = 0660

Щоб дозволити використовувати SMTP-AUTH клієнтам Outlookу секції auth defaultфайлу /etc/dovecot/dovecot.conf додайте "login":

Mechanisms = plain login

Після налаштування Dovecot перезапустіть його:

Sudo /etc/init.d/dovecot restart

Поштовий стек доставки

Іншою опцією налаштування Postfix для SMTP -AUTH є використання пакета mail-stack-delivery(Раніше він називався dovecot-postfix). Цей пакет встановить Dovecot та налаштує Postfix для його використання спільно з SASL автентифікацією та як агента доставки пошти (MDA). Пакет також налаштує Dovecot для IMAP, IMAPS, POP3 та POP3S.

Ви можете захотіти або не захотіти використовувати IMAP , IMAPS, POP3 або POP3S на вашому поштовому сервері. Наприклад, якщо ви налаштовуєте свій сервер як поштовий шлюз, фільтр спаму і вірусів і т.п. У цьому випадку можливо буде простіше використовувати наведені вище команди для налаштування Postfix на SMTP _AUTH.

Щоб встановити пакет, введіть у терміналі:

Sudo apt-get install mail-stack-delivery

У вас тепер робочий поштовий сервер, але є кілька опцій, які ви, можливо, захочете змінити надалі. Наприклад, пакет використовує сертифікат і ключ від ssl-cert пакета, і в робочому середовищіВи повинні використовувати сертифікат і ключ, згенерований для хоста. Дивіться рядок Сертифікати для додаткових деталей.

Після того, як ви отримали замовлений сертифікат для сервера, замініть наступну опцію /etc/postfix/main.cf:

Smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key

Перезапустіть Postfix:

Sudo /etc/init.d/postfix restart

Тестування

Налаштування SMTP -AUTH завершено. Тепер саме час перевірити налаштування.

Щоб переконатися, що SMTP -AUTH та TLS працюють правильно, виконайте таку команду:

Telnet mail.example.com 25

Після встановлення з'єднання з поштовим сервером postfix введіть:

Ehlo mail.example.com

Якщо серед іншого ви побачите наступні рядки, все працює чудово. Введіть quitдля виходу.

250-STARTTLS 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250 8BITMIME

Вирішення проблем

Ця секція описує декілька загальних способіввизначення причин виникаючих проблем.

Відмова від режиму chroot

Пакет postfixв Ubuntu за замовчуванням встановлюється в оточенні chrootз міркувань безпеки. Це може додатково ускладнити процес пошуку вирішення проблем.

Щоб вимкнути функціонування chroot, знайдіть наступний рядоку файлі налаштувань /etc/postfix/master.cf:

Smtp inet n - - - - smtpd

І замініть наступне:

Smtp inet n - n - - smtpd

Після цього вам доведеться перезапустити Postfix для нових налаштувань. З терміналу введіть наступне:

Sudo /etc/init.d/postfix restart

Файли журналів

Postfix посилає всі повідомлення до журналу /var/log/mail.log. Проте повідомлення про помилки та попередження можуть іноді губитися в нормальному журналі, тому вони окремо зберігаються у /var/log/mail.err та /var/log/mail.warn відповідно.

Для перегляду повідомлень журналу в режимі реального часу можна використовувати команду tail -f:

Tail -f /var/log/mail.err

Кількість деталей, що записуються в журнал, може бути збільшено. Нижче наведено кілька опцій налаштування для збільшення рівня деталізації деяких областей, описаних вище.

1. Для збільшення TLSактивності журналу, встановіть опції smtpd_tls_loglevelзначення від 1 до 4

Sudo postconf -e "smtpd_tls_loglevel = 4"

2. Якщо ви відчуваєте труднощі з відправкою або прийомом пошти окремого домену, ви можете включити його до параметра debug_peer_list.

Sudo postconf -e "debug_peer_list = problem.domain"

3. Ви можете збільшити деталізацію будь-якого сервісу Postfix редагуванням /etc/postfix/master.cf, додавши -vпісля відповідного запису. Наприклад змінимо запис smtp:

Smtp unix - - - - - smtp -v

Важливо пам'ятати, що після внесення змін налаштувань журналювання процесів Postfix потрібно перезапустити для сприйняття нової конфігурації: sudo /etc/init.d/postfix reload

4. Для збільшення кількості інформації в журналі при пошуку проблем із SASL, ви можете встановити такі опції в /etc/dovecot/dovecot.conf:

Auth_debug=yes auth_debug_passwords=yes

Як і у випадку з Postfix, якщо ви змінюєте налаштування Dovecot, процес потрібно перезапустити: sudo /etc/init.d/dovecot reload

Деякі опції можуть серйозно збільшити обсяг інформації, що передається у файли журналів. Не забувайте повертати рівень деталізації журналів до нормального значення після вирішення проблем. Потім перезапустіть відповідний сервіс, щоб зміни налаштування набрали чинності.

Посилання

Адміністрування сервера Postfix може бути дуже складним завданням. У якийсь момент вам може знадобитися звернутися до спільноти Ubuntu для більш кваліфікованої допомоги.

Для занурення в інформацію по Postfix дуже рекомендується прочитати The Book of Postfix.

Нарешті сайт Postfix також містить багато інформації щодо всіх можливих опцій налаштування.

Крім того, сторінка Ubuntu Wiki Postfix містить додаткову інформацію.

Листи, надіслані із сайту через функцію mail() у 99% випадків потрапляють у спам, якщо ваш SMTP сервер не налаштований професійно. Найчастіше гострої необхідності в установці та тонкій налаштування SMTPу вебмайстра немає, а ще частіше тупо ліньки. Багато CMS є опція, або сторонні плагіни, що дозволяють обійти цю проблему, використовуючи зовнішні SMTP сервіси. Але що якщо CMS не має такої опції, чи виконана вона кострубато і працює з обмеженнями по портах або ще з якимись сюрпризами? Особливо прикро, якщо це комерційний проект, а розробник движка, за який заплачено чимало грошей і який, за великим рахунком, усім влаштовує, каже, що «опція планується, але пріоритет низький, т.к. запитів на фічу дуже мало? І зовсім сумно, якщо дізнаєтесь ви це з архіву форуму підтримки, де обговорювалося це «непріоритетне» завдання кілька років тому, а віз і нині там. Я не знаю чому низький пріоритет… Можливо, в Рунеті нікого не напружує, що листи з підтвердженнями, рахунками та інші валяться в спам. Мене напружує.
І так, якщо не можна змусити двигун працювати із зовнішнім SMTP, то потрібно змусити працювати з ним стандартну функцію mail(). Загортати пошту ми будемо через SMTP сервер Google. У прикладі у мене домен, підключений до Google Apps, але те саме можна зробити і з звичайним акаунтом Gmail.
Маємо: Сервер під Ubuntu 12.04 з хостом host.domain.name, доменне ім'я domain.name, підключене до Google Apps та CMS, що надсилає пошту тільки через mail(). Останнє не важливо, оскільки CMS ми не чіпатимемо зовсім.
Встановлюємо Postfix. При встановленні питання використання відповідаємо «інтернет сайт».
aptitude install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules
Далі редагуємо конфігураційний файл/etc/postfix/main.cf. Видаляємо з нього все, натомість пишемо наступне:
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no append_dot_mydomain = no readme_directory = no myhostname = host.domain.name alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = host.domain.name, localhost.net, localhost mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all relayhost = : = :587 smtp_use_tls = yes smtp_tls_security_level = encrypt smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/mailpass smtp_sasl_security_options = noanonym yhost_maps = hash:/etc/postfix/sender_relay smtp_generic_maps = hash:/etc/postfix/generic smtp_tls_CAfile = /etc/postfix/cacert.pem soft_bounce = yes default_destination_concurrency_limit = 1 smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
Де поля "myhostname=host.domain.name" та "mydestination=host.domain.name" вказують на ім'я вашого хоста. Тобто треба замінити.
Зберігаємо. Копіюємо сертифікат.
cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | tee -a /etc/postfix/cacert.pem
Далі, все там же, /etc/postfix створюємо файл mailpass і пишемо в ньому наступне:
:587 [email protected]:password
Де [email protected]у нас поштовий акаунт, а password, відповідно пароль від нього.
Зберігаємо та забороняємо до нього доступ усім, окрім супер користувача.
chmod 600 /etc/postfix/mailpass
А краще 400, тому що і root'у там правити нічого більше не знадобиться.
Зберігаємо та створюємо файл generic наступного змісту:
www-data [email protected]
"www-data" - це у нас користувач, під яким працює apache на віртуальному хостіта від імені якого CMS генерує контент. Якщо apache у вас налаштований грамотно і працює від імені користувача, якому належить директорія, в якій розміщується CMS, замість «www-data» слід вказати його. Друга частина – це відповідно e-mail, з якого надходитиме пошта від користувача www-data.
Зберігаємо та створюємо файл sender_relay наступного змісту:
[email protected] :587 [email protected] :587
Тут я думаю все зрозуміло. У системі два користувача (root та user) та пошта обох йде через зовнішній SMTP.
Зберігаємо та створюємо файл tls_policy. Пишемо в ньому таке:
:587 encrypt
Насправді, метушня з файлом "tls_policy" не обов'язкова. Говорять, працює і без нього, але в мене не завелося. Якщо не створювати цей файл, то рядок "smtp_tls_policy_maps = hash:/etc/postfix/tls_policy" з конфігурації слід видалити.
Після цього виконуємо наступні команди:
postmap /etc/postfix/tls_policy
(Без потреби, якщо "tls_policy" не використовується).
postmap /etc/postfix/generic postmap /etc/postfix/mailpass postmap /etc/postfix/sender_relay
Після чого перезавантажуємо Postfix.
/etc/init.d/postfix restart
Всі. Можна перевірити наступною командою:
echo "Тест електронної пошти від postfix" | mail -s "Test Postfix" [email protected]
Де [email protected]у нас пошта, на яку ми щойно надіслали листа.
Логи у нас у /var/log/mail.log. Якщо все зроблено правильно, там звіт про операцію. Якщо косорізали, то там відомості про помилку.
Якщо у вас і Google Apps налаштовано все грамотно і за доменом закріплена цифровий підпис, то листи, надіслані через стандартну функцію mail() ніколи не потраплять до спаму.
Ну і наостанок ложка дьогтю. Я не знаю, як зараз, але на акаунтах Gmailраніше був ліміт у 500 вихідних листів на добу. Боротьба зі спамом. Не знаю, чи ці ліміти діють у Google Apps (ніколи їх не перевищувала), але звернути на це увагу варто. Але якщо ліміти і є, то за цією схемою завжди можна загорнути пошту через більш безладні сервіси, якщо у вас велика аудиторія і всі підписані на кожен чих, що лунає на сайті.

Червень 9, 2016 12:29 пп 12 209 views | 3 Comments

Postfix – це агент пересилання повідомлень (англ. Mail Transfer Agent, або MTA), додаток для надсилання та отримання електронної пошти. Даний посібникдопоможе встановити та налаштувати Postfix тільки для надсилання повідомлень локальних додатків(тобто додатків, встановлених на одному сервері з Postfix).

Навіщо це потрібно?

Якщо Ви використовуєте стороннього постачальника послуг електронної пошти, не потрібно запускати власний поштовий сервер. Якщо ж на хмарному серверівстановлені програми, яким необхідно надсилати повідомлення електронною поштою, то локальний SMTP-сервер передачі повідомлень буде чудовою альтернативою сторонньому постачальникупослуг електронної пошти та повномасштабного SMTP-сервера.

Вимоги

  • Налаштований сервер Ubuntu 16.04 (інструкції з налаштування можна знайти).
  • Чи не-root користувач з доступом до sudo.
  • Валідний домен (у посібнику використовується умовний домен example.com).

Примітка: Ім'я сервера хоста повинно відповідати цьому домену або піддомену. Щоб перевірити ім'я сервера хоста, введіть в командний рядок hostname. Висновок повинен збігатися з ім'ям сервера, яке він отримав під час створення.

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

Щоб встановити Postfix, а заразом і ряд інших програм, необхідних для налаштування пошти, просто встановіть пакет mailutils.

Оновіть індекс пакетів:

sudo apt-get update

Пакет mailtuils встановить Postfix та кілька додаткових програм:

sudo apt install mailutils

Наприкінці встановлення програма запропонує вибрати тип налаштування. Рекомендується вибрати стандартну опцію Internet Site. Для цього натисніть TAB та ENTER.

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

Після цього програма запропонує вибрати ім'я пошти, System mail name. Це поле має збігатися з ім'ям сервера, яке ви вибрали під час його створення. Вкажіть ім'я, а потім натисніть TAB та ENTER. Якщо в полі автоматично введено піддомен типу subdomain.example.com, замініть його на домен example.com.

The 'mail name' is the domain name used to 'qualify' _ALL_ mail address without a domain name.
[…]
System mail name:

2: Налаштування Postfix

Тепер потрібно налаштувати Postfix для надсилання повідомлень з локального хоста.

Для цього Postfix має бути налаштований на прослуховування лише інтерфейсу внутрішньої петлі (loopback interface) – це віртуальний мережевий інтерфейсякий використовується сервером для внутрішньої взаємодії. Відкрийте конфігураційний файл Postfix у текстовому редакторі:

sudo nano /etc/postfix/main.cf

Знайдіть розділ:

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

Змініть значення рядка inet_interfaces=all на loopback-only.

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

Після цього потрібно відредагувати директиву mydestination, яка визначає список доменів, пошта яких повинна бути доставлена ​​через локальний агент доставки local_transport. За замовчуванням список виглядає приблизно так:

/etc/postfix/main.cf
. . .
mydestination = $myhostname, example.com, localhost.com, localhost
. . .

/etc/postfix/main.cf
. . .
mydestination = $myhostname, localhost.$mydomain, $mydomain
. . .

Збережіть та закрийте файл.

Примітка: Якщо на одному сервері розміщено кілька доменів, можна додати інші домени до параметрів Postfix (mydestination). На жаль, це вимагатиме додаткового налаштування, що виходить за межі цього посібника.

Перезапустіть Postfix:

sudo systemctl restart postfix

3: Тестування сервера SMTP

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

Щоб відправити тестове повідомлення, введіть:

echo "Це є електронною поштою" | mail -s "This is the subject line" your_email_address

Примітка: Вкажіть свою тему та тіло повідомлення. Замість your_email_address використовуйте валідну адресу електронної пошти.

Перевірте Поштова скринька, на який було надіслано повідомлення. Якщо надіслане повідомлення не з'явилося, перевірте папку спаму.

При такому налаштуванні у полі From буде вказана адреса [email protected], де user – ім'я користувача системи Linux, а example.com – ім'я хоста. Якщо ви зміните ім'я користувача, адреса у полі From також зміниться.

4: Поштовий форвардинг

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

Щоб Postfix відправляв згенеровані системою повідомлення на ваш Поштова адреса, редагуйте файл /etc/aliases.

sudo nano /etc/aliases

У стандартної установки Ubuntu 16.04 цей файл виглядає так:

# See man 5 aliases for format
postmaster: root

Ця установка передає повідомлення системи користувачеві root. Тепер потрібно зробити так, щоб повідомлення перенаправлялися на вашу адресу електронної пошти. Для цього внесіть у файл рядок.