Exim v Postfix

О, цікава тема, давай розберемо спокійно й по пунктах. Exim і Postfix — це обидва MTA (Mail Transfer Agent), які виконують одну задачу: приймати, маршрутизувати і доставляти пошту. Але підхід у них різний.

1. Філософія та підхід

  • Exim: максимально гнучкий і налаштовуваний. У нього одна велика конфігурація, де можна вписати практично будь-яку логіку доставки, маршрутизації та обробки пошти. Але це і сила, і слабкість: легко зробити щось нестандартне, але новачок може швидко «потонути» в складності.

  • Postfix: більш «модульний» і простий для розуміння. Конфігураційні файли розділені, синтаксис простіший, структура чітка. Налаштування типових сценаріїв швидше і простіше, ніж у Exim.

2. Продуктивність

  • Exim: нормально працює навіть на невеликих серверах, але в масштабах дуже великих навантажень поступається Postfix.

  • Postfix: оптимізований під високі навантаження, швидкість обробки черг у нього вища. Великі провайдери зазвичай обирають саме Postfix.

3. Безпека

  • Exim: через свою гнучкість історично мав більше дірок (пам’ятаєш новини про великі уразливості?). Патчі виходять швидко, але адмін має бути уважним.

  • Postfix: від початку проектувався з фокусом на безпеці. Код більш «закритий» від експлуатації. Репутація у нього тут краща.

4. Гнучкість та налаштування

  • Exim: тут він король. Можна написати будь-які ACL, зробити складні маршрути, кастомні перевірки, інтеграції — прямо в конфігах. Ідеально для «нестандартних» систем.

  • Postfix: простіше, але для складних сценаріїв треба використовувати сторонні сервіси чи додаткові скрипти.

5. Популярність

  • Exim: за замовчуванням йде в Debian/Ubuntu (через це й популярний у багатьох хостерів).

  • Postfix: дефолт у RedHat/CentOS, і загалом на світовому рівні більш поширений серед великих поштових провайдерів.

6. Крива навчання

  • Exim: крута, треба вчитись. Але якщо знаєш — можеш «чарувати» з поштою.

  • Postfix: простіше стартувати, легше знайти приклади конфігів, легше пояснювати іншим.


Підсумок (якщо коротко)

  • Exim — якщо хочеш максимальної гнучкості, кастомних рішень і готовий до складних конфігів. Добре підходить для невеликих і середніх серверів, особливо якщо вже звик до Debian/Ubuntu.

  • Postfix — якщо потрібна продуктивність, безпека і стабільність. Краще для великих систем і коли важливий «спокійний сон» адміністратора.


Структура директорій поштових скриньок

Ага, тепер ти питаєш вже не про MTA загалом, а саме про те, як зберігаються листи у файловій системі. Тут важливе: Exim і Postfix самі по собі не зберігають пошту у скриньках користувачів — вони лише доставляють. Структуру поштових директорій визначає LDA (Local Delivery Agent) або поштовий сервер (Dovecot, Courier, procmail і т. д.).

Є два основних формати поштових скриньок:


1. mbox (старий, але ще зустрічається)

  • Вся пошта користувача зберігається в одному файлі.

  • Наприклад:

    /var/mail/username
    або
    /var/spool/mail/username
  • Кожен новий лист просто додається в кінець файлу.

  • Мінуси: якщо файл дуже великий → проблеми з продуктивністю, блокуванням.


2. Maildir (сучасний і популярний)

  • Кожен лист — це окремий файл.

  • Для кожної поштової скриньки є директорія з трьома папками:

    Maildir/
        cur/    ← тут зберігаються прочитані листи
        new/    ← нові (ще не прочитані) листи
        tmp/    ← тимчасові файли під час доставки
  • Наприклад:

    /home/username/Maildir/cur/...
    /home/username/Maildir/new/...
  • Плюси: швидше працює з великим обсягом пошти, легше робити бекапи та індексацію, немає блокування одного файлу.


3. Варіанти і нюанси

  • Exim може доставляти і в mbox, і в Maildir (залежить від конфіга).

  • Postfix зазвичай у парі з Dovecot працює з Maildir, але теж може в mbox.

  • У великих інсталяціях іноді замість файлової системи використовують бази даних (наприклад, Cyrus IMAP).


Приклад для користувача ivan (з Dovecot + Postfix, формат Maildir):

/home/ivan/Maildir/
    cur/
    new/
    tmp/

А в системі ще буде spool (черга вхідних листів), куди MTA складає пошту перед доставкою:

/var/spool/exim/   ← для Exim
/var/spool/postfix/ ← для Postfix

Але це тимчасово — не «поштова скринька» користувача, а робоча область самого MTA.


Dovecot

Exim чи Postfix доставляють листи, але саме Dovecot робить так, щоб користувач міг їх побачити у поштовому клієнті (Thunderbird, Outlook, мобільний Gmail тощо).


Що таке Dovecot

  • Це IMAP/POP3 сервер і одночасно LDA (Local Delivery Agent).

  • Його основна роль:

    1. Зберігати пошту користувачів у форматі mbox або Maildir.

    2. Давати доступ до пошти по протоколах IMAP і POP3.

    3. Аутентифікація користувачів (через системних юзерів, SQL, LDAP тощо).

    4. Фільтри та правила доставки (через Sieve).


Основні можливості

  • Формати пошти: підтримує і mbox, і Maildir (рекомендовано Maildir).

  • Протоколи:

    • POP3 (старий, листи завантажуються локально).

    • IMAP (сучасний, листи лишаються на сервері, зручно для багатьох пристроїв).

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

    • системні акаунти (/etc/passwd),

    • віртуальні користувачі (MySQL, PostgreSQL, LDAP),

    • навіть через passwd-file.

  • TLS/SSL: шифрований доступ до пошти.

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

  • Full-text search: вбудовані індекси для швидкого пошуку по листах.

  • Фільтри (Sieve): автоматичне сортування листів у папки, авто-відповідачі.


Де зберігає пошту

  • Якщо формат Maildir (найчастіше):

    /home/username/Maildir/{cur,new,tmp}
  • Якщо формат mbox:

    /var/mail/username
  • Конкретний шлях задається в dovecot.conf через mail_location. Наприклад:

    mail_location = maildir:~/Maildir

Як виглядає у зв’язці

  1. Postfix/Exim приймає пошту.

  2. Викликає Dovecot LDA (deliver) або LMTP (протокол доставки).

  3. Dovecot кладе лист у Maildir користувача.

  4. Користувач підключається до Dovecot через IMAP/POP3 і бачить пошту.


Плюси Dovecot

  • Дуже швидкий і легкий (пише на C з акцентом на безпеку).

  • Простий у налаштуванні порівняно з Courier чи Cyrus.

  • Підтримує майже всі сценарії — від маленького VPS до великих поштових сервісів.

  • Має відмінну документацію і велику спільноту.


SMTP

Добре, давай тепер розкладемо відправку пошти крок за кроком. Ми вже говорили: Exim/Postfix приймають і доставляють, а Dovecot тільки дає доступ до скриньки (IMAP/POP3). Але відправлення теж проходить через свої стадії.


1. Як це виглядає для користувача

  • Ти відкриваєш Thunderbird/Outlook/Gmail на телефоні.

  • Натискаєш “Відправити”.

  • Клієнт (MUA — Mail User Agent) підключається до твого сервера через SMTP (порт 587 або 465).


2. Аутентифікація на сервері

  • Щоб твій сервер не став «відкритим релеєм» (open relay), користувач має пройти логін/пароль.

  • Тут якраз у гру входить Dovecot SASL: він перевіряє пароль користувача (через системні акаунти, SQL чи LDAP).

  • Postfix/Exim делегує перевірку Dovecot'у.


3. Обробка пошти сервером (MTA)

  • Postfix або Exim бере повідомлення від користувача.

  • Робить перевірки (правила, чи можна відправити, чи правильний відправник).

  • Кладе лист у свою чергу (/var/spool/postfix/ або /var/spool/exim/).

  • Потім намагається доставити його на сервер-одержувач через SMTP.


4. Як знаходиться адресат

  • MTA робить DNS-запит до запису MX домену (наприклад, для gmail.com).

  • Якщо MX немає → пробує напряму через A-запис.

  • Встановлює з’єднання з віддаленим сервером і передає лист.


5. Захист і фільтри

  • При відправленні часто використовується:

    • SPF/DKIM/DMARC — підтверджують, що ти легальний відправник.

    • TLS (STARTTLS) — шифрує канал до іншого сервера.

  • Сервер може робити черги й повторні спроби доставки, якщо одержувач тимчасово недоступний.


6. Сценарій у зв’язці Postfix + Dovecot

  1. Користувач відправляє лист на smtp.domain.com (порт 587).

  2. Postfix приймає його → викликає Dovecot SASL для перевірки пароля.

  3. Якщо все ок → Postfix кладе лист у чергу.

  4. Postfix робить DNS-запит → знаходить MX для домену одержувача.

  5. Відправляє лист іншому серверу (наприклад, gmail-smtp-in.l.google.com).

  6. Якщо доставка вдалася → лист зникає з черги.


7. Для адміністрування

  • Основний лог у Postfix: /var/log/mail.log

  • У Exim: /var/log/exim/mainlog

  • Тут видно всі спроби, черги, помилки відправлення.


Власне, все досить схоже на кур’єрську пошту:

  • Dovecot → це твоя поштова скринька, щоб читати листи.

  • Postfix/Exim → поштар, який бігає по місту і відвозить/приймає конверти.


Last updated