Донецкий техникум промышленной автоматики

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

  1. установка Postfix
  2. підготовчі дії
  3. /etc/postfix/main.cf
  4. секція Config
  5. секція Auth
  6. Секція Relay Domains
  7. Секція Virtual Domains
  8. секція Quotas
  9. секція Restrictions
  10. секція TLS
  11. Секція Secure headers
  12. налаштовуємо /etc/postfix/master.cf
  13. додаткова інформація

головна - статті - Пошта - Postfix + Dovecot + MySQL

Теги: Linux Поштовий сервер Postfix

Postfix варто "на передовій" вашого поштового сервера. Саме він вирішує, що робити з поштою, яка потрапила до нього - Postfix може віддати її на збереження на локальній машині, переслати її далі або просто відкинути. Як правило, Postfix налаштовується в зв'язці з IMAP / POP сервером (наприклад, Dovecot) і базою даних для зберігання налаштувань, паролів користувачів і ін. (Наприклад, MySQL). У цьому посібнику описується настройка Postfix з прицілом саме на спільну роботу з Dovecot і MySQL.

Отже, ми знаходимося в середині шляху до успіху:

  1. (Вже зробили!) MySQL - нам треба відразу зробити сховище налаштувань, тому що і Postfix і Dovecot будуть "зав'язані" на базу даних.
  2. (Теж зробили!) PostfixAdmin - аналогічно, відразу створюємо інструмент управління базою даних, перевіряємо, що користувачі додаються тощо.
  3. Postfix - ставимо MTA (Mail Transfer Agent) Postfix.
  4. (Скоро буде робити) Dovecot - фінал - зберігання пошти, авторизація та ін.
  5. (А може, і не буде робити зовсім) Тільки після цього можна думати про антивіруси, веб-інтерфейси типу Roundcube Mail .

установка Postfix

В даному випадку мова піде про налаштування Postfix версії 2.6.6, встановленого з rpm в CentOS.

Установка зводиться до однієї команди:

> Yum install postfix

Установка закінчена, але настройка буде більш цікавою!

Про всяк випадок перевіряємо, чи підтримує наш Postfix бази даних MySQL:

> Postconf -m | grep mysql
mysql

підготовчі дії

Створюємо користувача vmail (user id 5000) і групу vmail (group id 5000). Цей користувач буде власником каталогу пошти / var / vmail.

> Groupadd -g 5000 vmail
> Useradd -g vmail -u 5000 vmail -d / home / vmail -m

Створюємо каталог / var / vmail:

> Mkdir / var / vmail
> Chown -R vmail: vmail / var / vmail

Права 777 потрібні на етапі налагодження:

> Chmod -R 777 / var / vmail

Підготовка зроблена, можна переходити безпосередньо до налаштування. Основні настройки Postfix зберігаються в двох файлах "/etc/postfix/main.cf" і "/etc/postfix/master.cf".

/etc/postfix/main.cf

Як правило, після установки головний файл настройок Postfix знаходиться за адресою:

/etc/postfix/main.cf

Зробимо копію вихідного файлу конфігурації Postfix:

> Cp /etc/postfix/main.cf /etc/postfix/main.cf.bak

Думаю, будуть зручніше відразу привести працюючий приклад цього файлу.

Червоним кольором я виділив те, над чим мені довелося подумати.
Сірим кольором виділив те, що як правило, вже є в конфіги, або не змусило мене ламати голову.

### Config

### Common config queue_directory = / var / spool / postfix command_directory = / usr / sbin daemon_directory = / usr / libexec / postfix data_directory = / var / lib / postfix myhostname = centos6.virtual.local mydomain = virtual. local inet_interfaces = all inet_protocols = ipv4 mydestination = $ myhostname, localhost. $ mydomain, localhost, localhost.localdomain unknown_local_recipient_reject_code = 550 mynetworks = 127.0.0.0/8 #in_flow_delay = 1s alias_maps = hash: / etc / aliases alias_database = hash: / etc / aliases local_recipient_maps = $ virtual_mailbox_maps, $ virtual_alias_maps home_mailbox = Maildir / mail_spool_directory = / var / spool / mail smtpd_banner = $ myhostname ESMTP $ mail_name debug_peer_level = 2 debugger_command = PATH = / bin: / usr / bin: / usr / local / bin: / usr / X11R6 / bin ddd $ daemon_directory / $ process_name $ process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix # The mail_owner parameter specifies the owne r of the Postfix queue # and of most Postfix daemon processes. Specify the name of a user # account THAT DOES NOT SHARE ITS USER OR GROUP ID WITH OTHER ACCOUNTS # AND THAT OWNS NO OTHER FILES OR PROCESSES ON THE SYSTEM. In # particular, do not specify nobody or daemon. PLEASE USE A DEDICATED # USER. # Mail_owner = postfix # setgid_group: The group for mail submission and queue management # commands. This must be a group name with a numerical group ID that # is not shared with other accounts, not even with the Postfix account. # Setgid_group = postdrop html_directory = no manpage_directory = / usr / share / man sample_directory = /usr/share/doc/postfix-2.6.6/samples readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES virtual_transport = dovecot dovecot_destination_recipient_limit = 1 ### Auth smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_sasl_path = private / auth # см. конфиг Dovecot ### Relay Domains: #relay_domains = mysql: /etc/postfix/sql/mysql_relay_domains.cf ### Virtual Domains: virtual_mailbox_base = / var / vmail virtual_mailbox_domains = mysql: /etc/postfix/sql/virtual_mailbox_domains.cf virtual_alias_maps = mysql : /etc/postfix/sql/virtual_alias_maps.cf virtual_mailbox_maps = mysql: /etc/postfix/sql/virtual_mailbox_maps.cf virtual_minimum_uid = 5000 virtual_minimum_gid = 5000 virtual_uid_maps = static: 5000 virtual_gid_maps = static: 5000 ### Quotas # Квоти поки не перевіряв #virtual_create_maildirsize = yes #virtual_mailbox_extended = yes #virtual_mailbox_limit_maps = mysql: /etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf #virtual_mailbox_limit_override = yes #virtual_maildir_limit_message = "Sorry, the user's maildir has overdrawn his diskspace quota." #virtual_overquota_bounce = yes ### Restrictions smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_reverse_client_hostname, permit smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, reject_unknown_helo_hostname, permit smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain, reject smtpd_recipient_restrictions = reject_non_fqdn_recipient, reject_unknown_recipient_domain, permit_sasl_authenticated, reject_unlisted_recipient , permit_mynetworks, reject_unauth_destination, reject smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit smtpd_etrn_restrictions = reject smtpd_helo_required = yes # strict_rfc821_envelopes = yes smtpd_discard_ehlo_keywords = etrn, silent-discard smtpd_forbidden_commands = CONNECT GET POST disable_vrfy_command = yes ### TL S smtpd_use_tls = yes smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem smtp_tls_security_level = may smtpd_tls_mandatory_protocols = TLSv1, TLSv1.1, TLSv1.2,! SSLv2, ! SSLv3 smtpd_tls_auth_only = yes smtp_tls_loglevel = 1 smtpd_tls_loglevel = 1 ### Secure headers # погуглити на цю тему - цікаво! #header_checks = regexp: / etc / postfix / header_checks

Ось він який, здоровий, чорт ... Але по суті своїй, тут все не так складно.

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

секція Config

У цій секції задаються шляху до файлів конфігурацій, змінні, ім'я користувача, від якого запускається Postfix і ін. Як правило, вміст цієї секції задається за замовчуванням (розкидано по дефолтного конфігу) і не потребує серйозного доопрацювання. Ці параметри залежать від дистрибутива, якщо ви ставите з бінарники (наприклад, rpm), від параметрів при складанні з початкових кодів та ін.

секція Auth

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

  • smtpd_sasl_security_options = noanonymous # не дозволяємо нікому відправляти пошту з нашого сервера без авторизації!
  • broken_sasl_auth_clients = yes # включаємо підтримку "застарілих" поштових клієнтів, які не підтримують RFC 2222.
  • smtpd_sasl_type = dovecot # за авторизацію відповідатиме dovecot
  • smtpd_sasl_path = private / auth # вказується відносний шлях до сокета, для передачі функцій аутентифікації користувачів від Postfix сервера Dovecot. Повний шлях до сокета складається з шляху до директорії черги Postfix + "private / auth" = "/ var / spool / postfix" + "private / auth" = "/ var / spool / postfix / private / auth".

Секція Relay Domains

"Домени для пересилки". Це найкоротша секція. Тут вказуються ті домени, пошту яких наш сервер буде намагатися переслати далі відповідно старшинству MX записів для цього домену. Наприклад, це може бути використано при створенні резервного сервера.

  • relay_domains = mysql: /etc/postfix/sql/mysql_relay_domains.cf

Секція Virtual Domains

Одна з ключових секцій конфігурації Postfix. У цій секції вказується, де брати інформацію про облікові записи в віртуальних доменах, де зберігається пошта тощо.

  • virtual_mailbox_base вказує, де зберігається пошта (фізичне розташування на сервері).
  • virtual_mailbox_domains перераховує віртуальні домени, які може обслуговувати цей сервер.
    Вміст файлу /etc/postfix/sql/virtual_mailbox_domains.cf:

    user = postfix
    password = pass_FROM_postfix_user
    hosts = localhost
    dbname = mail
    query = SELECT domain FROM domain WHERE domain = '% s' AND transport <> 'relay' AND active = '1'

  • virtual_alias_maps - (моє тлумачення директиви virtual alias maps) Postfix шукає все аліаси (псевдоніми), куди можна відправити лист. Якщо у одного користувача є кілька псевдонімів, то лист буде відправлено по кожному псевдонімом (alias).
    Вміст файлу /etc/postfix/sql/virtual_alias_maps.cf:

    user = postfix
    password = pass_FROM_postfix_user
    hosts = localhost
    dbname = mail
    query = SELECT goto FROM alias WHERE address = '% s' AND active = '1'

  • virtual_mailbox_maps
    Дозволені адреси одержувачів вказані в параметрі virtual_mailbox_maps. SMTP сервер Postfix відхиляє неприпустимі адреси одержувачів з повідомленням "User unknown in virtual mailbox table" (Користувач невідомий в таблиці віртуальних поштових скриньок). Якщо параметр virtual_mailbox_maps порожній, то Postfix приймає адреси отримувачів, що належать доменів з $ virtual_mailbox_domains.
    Вміст файлу /etc/postfix/sql/virtual_mailbox_maps.cf:

    user = postfix
    password = pass_FROM_postfix_user
    hosts = localhost
    dbname = mail
    query = SELECT maildir FROM mailbox WHERE username = '% s' AND active = '1'

  • virtual_minimum_uid
    За замовчуванням власник поштової скриньки не може мати UID менше 5000. Це зроблено для запобігання можливості запису в файлову систему з правами системних облікових записів. Це значення можна змінити за допомогою vrtual_minimum_uid.
  • virtual_uid_maps і virtual_gid_maps
    Користувачі віртуальних доменів на те і віртуальні, вони не можуть щось записати / видалити на жорсткому диску сервера. Щоб сервер знав, від імені кого записувати файли пошти, існують параметри virtual_uid_maps і virtual_gid_maps. Вони вказують UID (user id) і GID (group id) користувача з файлу / etc / passwd, з правами якого будуть записані файли пошти.

секція Quotas

Обмеження на розмір поштової скриньки та ін.

  • virtual_create_maildirsize
  • virtual_mailbox_extended
  • virtual_mailbox_limit_maps
  • virtual_mailbox_limit_override
  • virtual_maildir_limit_message - повідомлення про перевищення квоти.
  • virtual_overquota_bounce - посилати чи ні повідомлення користувачу про перевищення квоти.

секція Restrictions

Додатково пропоную ознайомитися з настройками обмежень Postfix (В новому вікні).

Ми ж не хочемо, щоб ми загрузли в спам?

  • smtpd_sender_restrictions - перевірка адреси відправника (тобто перевіряються ті, хто намагається відправити лист на наш сервер).
    permit_mynetworks - дозволяємо відправляти нам з нашої ж мережі (логічно)
    permit_sasl_authenticated - дозволяємо відправляти тим, хто пройшов перевірку паролем (якщо віртуальний домен один, це означає, що один колега шле листи іншому колезі. На серверах з великою кількістю доменів можливі ситуації, коли два незнайомих людини в різних доменах обслуговуються нашим поштовим сервером)
    reject_non_fqdn_sender, reject_unknown_sender_domain - неправильні і неіснуючі домени відкидаємо - швидше за все, це спам або неправильно конфігурований поштовий сервер відправника.
    permit - пошту від всіх інших все-таки приймаємо! У цю категорію увійдуть всі нормальні люди. Можете перевірити, поставте reject і спробуйте написати лист на цей сервер з іншого сервера. Ви повинні будете отримати повідомлення про помилку доставки.
  • smtpd_recipient_restrictions - для кого можна приймати пошту.
    reject_non_fqdn_recipient - не можна приймати пошту для неправильних доменів
    reject_unknown_recipient_domain - не можна приймати пошту для неіснуючих доменів
    permit_sasl_authenticated - можна приймати пошту для авторизованих
    reject_unlisted_recipient -
    permit_mynetworks - можна приймати пошту для тих, хто з нашої мережі
    reject_unauth_destination -
    permit_auth_destination -
    reject

секція TLS

Шифрування сеансів зв'язку з сервером від атак Man-in-the-Middle, від перехоплення пароля ... В даний час вже необхідність, ніж надмірність. Практично всі великі безкоштовні поштові системи реалізували TLS або SSL. А ми чим гірші?

Секція Secure headers

Чи не обов'язкова, але - корисна секція. Наприклад, можна видалити інформацію про IP-адресу в локальній мережі, якщо така фігурує в відправлених листах, або про те, який поштовий клієнт ви використовуєте (X-Mailer).

налаштовуємо /etc/postfix/master.cf

Зараз ми будемо переходити до налаштування Dovecot, тому відразу пропишемо в конфіги Postfix, що Dovecot відповідає за локальну доставку пошти.

Редагуємо /etc/postfix/master.cf.

В кінець файлу /etc/postfix/master.cf додаємо два рядки:

dovecot unix - nn - - pipe flags = DRhu user = vmail: vmail argv = / usr / libexec / dovecot / deliver -d $ (recipient)

Перед flags два пробілу! Це дуже важливо. Працювати інакше не буде.

додаткова інформація

переходимо до налаштування Dovecot ...

Авторизуйтесь для додавання коментарів!




Ми ж не хочемо, щоб ми загрузли в спам?
А ми чим гірші?