Поштовий сервер на linux

Як налагодити роботу поштового сервера, який вміє приймати і відправляти електронну кореспонденцію, боротися зі спамом, взаємодіяти з клієнтами? Насправді, все досить просто.

Сьогодні поговоримо про поштових серверах на Linux. Ми розповімо про те, як налаштувати сервер, про широко поширеному в інтернеті протоколі SMTP, а також про інші протоколах, таких, як POP і IMAP. У підсумку ви опинитеся володарем повноцінної системи для роботи з електронною поштою.

Поштовий сервер на linux

Почнемо з SMTP-сервера на Linux

SMTP-сервер

Протокол SMTP (Simple Mail Transfer Protocol) визначає правила пересилання пошти між комп'ютерами, при цьому, він не регламентує правила зберігання або візуалізації повідомлень. Це системно-незалежний протокол, тобто, відправник і одержувач пошти можуть мати різні ОС.

SMTP вимагає лише щоб сервер був здатний відправляти звичайний ASCII-текст іншого сервера, використовуючи порт 25. який є стандартним портом SMTP.

Сьогодні в більшість дистрибутивів Linux вбудовані дві найбільш поширених реалізації SMTP: sendmail і postfix.

Sendmail - це популярний поштовий сервер з відкритим кодом, який використовується в багатьох дистрибутивах Linux. До його мінусів можна віднести кілька ускладнену архітектуру і недостатньо високий рівень захисту.

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

Компоненти поштової служби

Типова поштова служба складається з трьох основних компонентів:

Поштовий сервер. або агент пересилки повідомлень (Mail Transport Agent, MTA). Цей компонент відповідальний за переміщення електронної пошти між системами, цим займаються, наприклад, Sendmail і Postfix.

Агент доставки електронної пошти (Mail Delivery Agent, MDA). Цей компонент відповідальний за розподіл отриманих повідомлень по поштових скриньках користувачів. Наприклад, це Postfix-maildrop і Procmail.

Установка поштового сервера

Для налаштування нашого сервера був обраний пакет Postfix. Це - популярний серед системних адміністраторів вибір, стандартний поштовий сервер в більшості сучасних дистрибутивів Linux.

Почнемо, перевіривши, чи встановлений Postfix в системі:

Якщо виявити Postfix не вдалося, встановити його, наприклад, в дистрибутивах, заснованих на Red Hat, можна за допомогою такої команди:

Потім запустимо службу postfix і організуємо її автозапуск при завантаженні системи:

У дистрибутивах, заснованих на Debian, начебто Ubuntu, встановити Postfix можна так:

В ході установки буде запропоновано вибрати конфігурацію сервера. Серед доступних чотирьох варіантів (No configuration, Internet site, Internet with smarthost, Satellite system and Local only), ми виберемо No configuration. що призведе до створення необхідних Postfix облікових записів користувача і групи.

Налаштування сервера

Після установки поштового сервера Postfix, його потрібно налаштувати. Більшість конфігураційних файлів знаходяться в директорії / etc / postfix /.

Цей параметр використовується для вказівки імені хоста поштової системи. Це - ім'я хоста в інтернеті, для якого Postfix буде отримувати пошту.

Типові приклади імен хостів поштових серверів - mail.example.com і smtp.example.com.

Налаштовують цей параметр так:

Ця установка дозволяє вказати поштовий домен, обслуговуванням якого займається сервер, наприклад - example.com:

Цей параметр дозволяє вказати доменне ім'я, яке використовується в пошті, відправленої з сервера. Дамо йому значення $ mydomain:

В налаштуваннях можна посилатися на параметри, додаючи знак $ перед ім'ям змінної.

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

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

Поштовий сервер Postfix може використовувати два режими доставки пошти:

Ця змінна - важливий параметр настройки. Вона дозволяє вказувати те, які сервера можуть пересилати пошту через сервер Postfix.

Зазвичай дозволяють передачу пошти тільки від локальних клієнтських комп'ютерів. В іншому випадку вашим сервером можуть зацікавитися спамери.

Якщо неправильно налаштувати параметр mynetworks. спамери цілком зможуть скористатися сервером як ретранслятором пошти. Це дуже швидко призведе до того, що якась система боротьби зі спамом помістить його в один з чорних списків, на зразок DNS Blacklist (DNSBL), або Realtime Blackhole List (RBL). Як тільки сервер потрапить в подібний список, далеко не всі зможуть отримати листи, відправлені з його допомогою.

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

Ця змінна дозволяє задати відповідь, який повертає сервер при підключенні клієнтів.

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

Ця змінна дозволяє задавати версію IP, яку буде використовувати Postfix при встановленні з'єднань.

Для того, щоб зміни, внесені в конфігураційні файли, вступили в силу, службу Postfix треба перезавантажити:

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

Можливо, налаштовуючи сервер, вводячи значення параметрів, ви допустите помилку. Перевірити вірність налаштувань можна за допомогою такої команди:

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

Перевірка черги повідомлень

Іноді чергу поштових повідомлень переповнюється. Це може бути викликано безліччю факторів, на зразок мережевий помилки, та з яких мотивів, здатної затримати відправку пошти.

Для того щоб перевірити чергу повідомлень, скористайтеся такою командою:

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

Якщо тепер перевірити чергу, вона повинна виявитися марною.

Тестування поштового сервера

Потім спробуйте прийняти лист, відправлений з іншого сервера.

Якщо проблеми все ще не вирішені, спробуйте перевірити настройки DNS, погляньте на MX-записи, використовуючи мережеві команди Linux.

Боротьба зі спамом

Існує чимало рішень для виявлення серед поштових повідомлень небажаних листів - спаму. Одне з кращих - проект з відкритим вихідним кодом SpamAssassin.
Встановити його можна так:

Потім треба запустити відповідну службу і додати її в автозавантаження:

Після установки SpamAssassin, погляньте на його налаштування в файлі /etc/mail/spamassassin/local.cf.

SpamAssassin вміє відрізняти звичайні листи від спаму, грунтуючись на результатах дослідження кореспонденції за допомогою різних скриптів. Результати перевірок оцінюються в балах.

Чим вище підсумкова оцінка листи - тим вище і ймовірність того, що воно є спамом.

У файлі конфігурації параметр required_hits 5 вказує на те, що SpamAssassin позначить повідомлення як спам, якщо його рейтинг становить 5 або вище.

Параметр report_safe приймає значення 0, 1, або 2. Встановлення його в 0 означає, що листи, позначені як спам, пересилаються в початковому вигляді, але їх заголовок модифікується з вказівкою на те, що вони є спамом.

Якщо цей параметр встановлений в значення 1 або 2, SpamAssassin згенерує звіт і відправить його одержувачу.

Різниця між значеннями 1 і 2 полягає в тому, що в першому випадку спам-повідомлення буде закодовано у форматі message / rfc822, а в другому - в форматі text / plain.

Кодування text / plain безпечніше, так як деякі поштові клієнти виконують повідомлення формату message / rfc822, що при певних умовах може призвести до зараження комп'ютера клієнта вірусом.

Після установки і настройки SpamAssassin, потрібно інтегрувати його з Postfix. Мабуть, найлегше це зробити за допомогою використання procmail.

Створимо файл / etc / procmailrc і додамо в нього наступне:

Потім відредагуємо файл настройок Postfix - /etc/postfix/main.cf. задавши параметр mailbox_command наступним чином:

І, нарешті, запустити знову служби Postfix і SpamAssassin:

Треба сказати, що SpamAssassin не завжди розпізнає спам, що веде до наповнення поштових скриньок непотрібними листами.

На щастя, повідомлення, перш ніж вони досягнуть поштового сервера на Postfix, можна фільтрувати, використовуючи Realtime Blackhole Lists (RBLs). Це знизить навантаження на поштовий сервер і допоможе зберегти його в чистоті.

Відкрийте конфігураційний файл Postfix /etc/postfix/main.cf. змініть параметр smtpd_recipient_restrictions і налаштуйте інші параметри наступним чином:

Потім перезавантажте сервер Postfix:

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

Захист SMTP-з'єднання

Найкраще передавати SMTP-трафік по TLS для захисту його від атаки через посередника.
Для початку потрібно згенерувати сертифікат і ключ з використанням команди openssl:

Потім треба додати в файл настройок Postfix /etc/postfix/main.cf наступне:

І, нарешті, потрібно перезавантажити службу Postfix:

Тепер, при підключенні клієнта до сервера, потрібно вибрати TLS. Тут ви, при першій відправці пошти після зміні налаштувань, побачите попередження, так як сертифікат не підписаний.

Основи протоколів POP3 і IMAP

Отже, ми налагодили процес відправки та отримання електронних листів по SMTP, але на цьому організація повноцінної поштової служби не закінчується. Розглянемо наступні ситуації:

Для того, щоб врахувати всі ці особливі випадки, були створені інші протоколи. Їх можна описати як протоколи для доступу до електронної пошти.

Найсильніше поширені два популярних протоколу доступу до пошти - POP (Post Office Protocol), і IMAP (Internet Message Access Protocol).

В основі POP лежить дуже проста ідея. Центральний поштовий сервер на Linux весь час підключений до інтернету, він отримує і зберігає листи для всіх користувачів. Всі отримані листи залишаються в черзі на сервері до тих пір, поки користувач не підключиться до нього по протоколу POP і не завантажить листи.

Коли користувач хоче відправити лист, поштовий клієнт зазвичай передає його через центральний сервер по SMTP.

Зверніть увагу на те, що SMTP-сервер і POP-сервер можуть без проблем працювати на одній і тій же машині. У наші дні це - звичайна практика.

Можливості, на кшталт зберігання вихідних примірників листів користувачів на сервері зі зберіганням на клієнті лише кешованих копій, в POP відсутні. Це призвело до розробки протоколу IMAP.

Використовуючи IMAP, сервер буде підтримувати три режими доступу до пошти:

  • Онлайн-режим схожий на прямий доступ до файлової системи на поштовому сервері.
  • Офлайн-режим схожий на те, як працює POP, коли клієнт відключається від мережі після отримання своїх листів. В цьому режимі сервер зазвичай не зберігає копії листів.
  • Автономний режим дозволяє користувачам зберігати кешированниє копії своїх листів, а сервер так само зберігає копії цих листів.

Існують різні реалізації IMAP і POP, в цій сфері дуже популярний сервер Dovecot, який дозволяє працювати з обома протоколами.

Сервера POP3, POP3S, IMAP, і IMAPS слухають, відповідно, порти 110, 995, 143, і 993.

установка Dovecot

Більшість дистрибутивів Linux містять встановлений Dovecot, однак, його можна встановити і самостійно. У системах, заснованих на Red Hat, це робиться так:

У системах, заснованих на Debian, функціонал IMAP і POP3 надаються в двох різних пакетах:

Тут вам запропонують створити самозаверенний сертифікат для роботи з IMAP і POP3 по SSL / TLS. Дайте відповідь на питання yes і, коли з'явиться запит, введіть ім'я хоста вашої системи.

Потім можна запустити відповідну службу і додати її в автозавантаження:

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

Ось деякі з параметрів, використовуваних для настройки Dovecot.

protocols. протоколи, які треба підтримувати.

Тут зірочка означає все інтерфейси IPv4, подвійна двокрапка означає все інтерфейси IPv6.

userdb. база даних користувачів для аутентифікації.

mail_location. це запис у файлі /etc/dovecot/conf.d/10-mail.conf. Виглядає вона так:

Dovecot поставляється зі стандартними SSL-сертифікатами та файлами ключів, які використовуються у файлі /etc/dovecot/conf.d/10-ssl.conf.

Коли користувач намагається підключитися до Dovecot, сервер покаже попередження, так як сертифікати не підписані. Якщо потрібно, підписані сертифікати можна придбати в потрібному центрі сертифікації.

Не забудьте відкрити порти сервера Dovecot на брандмауера.

І про SMTP-порт не забудьте.

Потім збережіть правила. Якщо хочете освіжити в пам'яті особливості роботи з iptables в Linux, погляньте на цей матеріал.
Або, якщо ви використовуєте firewalld, можете поступити так:

А, якщо щось пішло не так, подивіться лог-файли / var / log / messages. / Var / log / maillog, і /var/log/mail.log.

Тепер ви можете налаштувати поштову службу на своєму Linux-сервері. Як бачите, багато часу це не займе. Звичайно, у розглянутих тут пакетів, на кшталт Postfix, сила-силенна налаштувань, але якщо ви освоїли описану тут послідовність дій і розібралися з основами, то все, що вам знадобиться, нескладно буде з'ясувати з документації.

Шановні читачі! А як ви налаштовуєте поштові сервера на Linux?

Схожі статті