Рішення по поштовому сервісу


1. Призначення

Даний сервіс призначений для використання як в особистих так і в корпоративних цілях.

Реалізація на docker контейнерах дозволяє швидко та оперативно здійснювати його інсталяцію майже на будь-яких ОС сімейства Linux.

Підтримувані ОС:

- Debian 8.8 (jessie) amd64

- Debian 9.0 (stretch) amd64

- Ubuntu 16.04.2 LTS (Xenial Xerus) amd64

- Ubuntu 17.04 (Zesty Zapus) amd64

 

2. Склад

В межах даного поштового сервісу використовується 4 (чотири) docker контейнера:

(на всіх контейнерах використовується ОС Debian 8 (jessie) amd64)

1) controller:

- exim4 - v.4.89;

- dovecot - v.2.2.27;

- rspamd - v.0.6.10;

- amavis - v.2.10.1-4;

2) database:

- MariaDB - v.10.1.23;

3) mail-admin:

- roundcube (email-client) - v.1.3.0;

- flask-msa python via uwsgi (email-admin);

4) nginx:

- nginx - v.16.2;

- certbot — 0.10.2-1;

 

3. Опис

1) - nginx

- виконує роль http проксі для вказаних доменів для mail-admin та mail-client;

- використовує https з'єднання з використанням SSL протоколів TLSv1 TLSv1.1 TLSv1.2;

- налаштоване прокидання для генерації безкоштовних сертифікатів letsencrypt.

 

2) dovecot

- виконує роль сервісу доступу до почтових каталогів та листів;

- протоколи, які підтримуються: pop3 (110), imap (134), pop3s (995), imaps (993) та доступ до сервісу почтових фільтрів по протоколу sieve (2000);

- використовує захищене з'єднання з використанням SSL протоколів TLSv1.1 TLSv1.2, сертифікати letsencrypt;

- має можливість прив'язувати email клієнта до конкретної зовнішньої IPv4 адреси (встановлюється з mail-admin);

- реалізовний механізм квот (обмеження по об'єму поштового ящика, встановлюється з mail-admin).

 

3) exim4

- виконує роль поштового МТА;

- підтримує протоколи: smtp (25), smtps (465) та submission (587);

- використовує захищене з'єднання, сертифікати letsencrypt;

- реалізовано вайт-лісти для вхідних повідомлень по домену, поштовій адресі та по зовнішній IPv4 адресі (встановлюється з mail-admin);

- реалізовано блеклісти-лісти для вхідних повідомлень по домену, поштовій адресі та по зовнішній IPv4 адресі (встановлюється з mail-admin);

- встановлення обмеження на розширення для вкладень у листах, які встановлюються в конфігурації сервісу;

- реалізована перевірка на спам по балам, які прив'язуються для кожного домену окремо в mail-admin, у вигляді сервісу для перевірки на спам використовується rspamd, листи, помічені сервісом як спам, автоматом попадають до папки СПАМ;

- авторизацію бере із сервісу dovecot;

- надсилання листів без авторизації заборонено;

- реалізовано механізм додавання копій отримувачів як для домену, так і для кожного поштового ящика окремо (cc, bcc);

- реалізований механізм аліасів як для домену, так і для поштових ящиків;

 

4) rpsamd:

- SPF перевірки дозволяють перевіряти повідомлення відправника, використовуючи політику, визначену в DNS-записі домену відправника. Тут ви можете прочитати про політику SPF. Деякі почтові системи підтримують SPF, такі як Gmail чи Yahoo Mail.

- Політика DKIM перевіряє криптографічний підпис повідомлення проти відкритого ключа, включеного в DNS-запис домена відправника. Цей метод дозволяє гарантувати, що отримане повідомлення із указаного домена не зазнало змін під час пересилання.

- DMARC поєднує DKIM і SPF техніки для визначення більших чи менших обмежених політик для певних доменів. Rspamd також може зберігати данні для звітів DMARC в базі даних Redis.

- Білі списки використовуються, щоб уникнути хибнопозитивних ударів для довірених доменів, які проходять інші перевірки, такі як DKIM, SPF чи DMARC. Наприклад, ми не повинні фільтрувати повідомлення з PayPal, якщо вони мають правильний підпис з домена PayPal. З іншої сторони, якщо вони не підписані, а політика DMARC передбачає обмежувальні правила для DKIM, ми повинні позначити це повідомлення як спам, оскільки воно є потенційним фішинг-кодом.

- DNS списки дозволяють оцінювати репутацію IP-адреси відправника або мережі. Rspamd використовує декілька списків DNS, включаючи такі списки як SORBS чи SpamHaus. Тим не менш, Rspamd не довіряє, в підсумку, конкретному списку DNS і не відхиляє пошту, основану саме на даному факторі. Rspamd також використовує білі та сірі DNS списки, щоб уникнути хибнопозитивних звернень спаму.

- URL списки скоріше схожі на чорні списки DNS, але використовують URL-адреси в повідомленні для боротьби зі спамом та фішингом. Rspamd має повну вбудовану підтримку самих популярних списків SURBL, таких як URIBL і  SURBL з SpamHaus.

- Фішингові перевірки надзвичайно корисні для фільтрації фішингових повідомлень і захисту користувачів від кібератак. Rspamd використовує складні алгоритми для пошуку фішингових  URL-адрес і підтримують популярні переспрямовувачі URL (наприклад, http://t.co), щоб уникнути хибнопозитивних звернень. Також підтримуються популярні фішинг-бази даних, такі як OpenPhish і PhishTank.

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

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

- Модуль «Replies» призначений для білого списку повідомлень, котрі відповідають на наші відповідні повідомлення, так як ці повідомлення, вірогідно, важливі для користувачів, а хибні спрацювання вкрай не бажані для них.

- Модуль Maps надає інструмент Swiss Knife, який може фільтрувати повідомлення на основі різних атрибутів: заголовки, данні про конверт, IP-адресу відправника та інше. Цей модуль досить корисний для створення правил користування. 

- amavis -  це фільтр вмісту з відкритим початковим кодом для електронної пошти:

* виявлення вірусів, спаму, заборонених типів вмісту або синтаксичних помилок в почтових повідомленнях;

* блокування, теги, переправлення (використовуючи суб-адресацію) чи переадресацію пошти в залежності від її вмісту, походження чи розміру;

* карантин (і випуск) або архівування поштових повідомлень в файли, поштові ящики чи базу даних SQL; 

* генерація DKIM підпису;

* верифікація DKIM підпису та надання білого списку на основі DKIM.

 

4. Налаштування

- змінити назву домена в nginx в конфігурованих файлах /etc/nginx/sites-enabled/ma та /etc/nginx/sites-enabled/wm в директивах server_name, ssl_certificate та ssl_certificate_key

- згенерувати нові сертифікати наступним чином:

python /usr/local/bin/LetsEncrypt/create_new_cert.py --host "ваш сабдомен" --type (web, imap, smtp) --ip (local ip for service) --port 22 --login odin123 --password 1

- змінити назву домена в шляхах для dovecot сервісу в /etc/dovecot/conf.d/10-ssl.conf директиви ssl_cert, ssl_key та ssl_ca

- змінити назву домена в шляхах для exim4 сервіса в /etc/exim4/conf.d/main/03_exim4-config_tlsoptions директивы tls_certificate, tls_privatekey та tls_verify_certificates

- змінити назву домена в /usr/local/bin/LetsEncrypt/config.py для автоматичного оновлення сертифікатів

- згенеруйте DKIM запис для домена: opendkim-genkey -D. -d "ваш домен" -s mail, перемістіть mail.private в пупку / etc / exim4 / dkim та перейменуйте його в "ваш домен" .key, після чого зробіть власником цього ключа Debian-exim, а вміст з файлу mail.txt додайте в вашу DNS зону.

 

5. Використання

- зайдіть на вкладку "Domain" в mail-admin;

- нажміть кнопку "Create";

- в полі "Domain" введіть значення вашого домену;

- в полі "Trash Address" введіть поштову адресу, на яку будуть відправлятись скинуті повідомлення;

- "Min Spam Index" та "Max Spam Index" - поля для регулювання меж ваги спам повідомлень;

- зайдіть на вкладку "Lists" -> "IP Address" та створіть запис з значенням "Title" - "All" та "Address" с пустим значенням, це необхідно для регулювання того, звідки клієнт може підключатись, далі можете створювати списки за своїм бажанням;

- перейдіть на вкладку "Mailbox";

- натисніть кнопку "Create";

- В полі "Name" введіть бажаний логін для користувача, в поле "Domain" виберіть із списку доступних що ви створили, "Password" задайте пароль користувачу, "Permit IP" виберіть із списку доступних дозволених елементів;

- в режимі списку можна відкривати користувачів і змінювати об’єм квот (в Мб);

- далі можна вільно користуватись поштою по сабдомену для mail-client або іншим будь-яким доступним поштовим клієнтом при підключенні по imap та smtp протоколам.

 

6. Доступи

 - controller - 172.16.230.2

 - database - 172.16.230.3

 - mail-admin - 172.16.230.6

 - nginx - 172.16.230.4

 - mysql:

   login: root

   password: 1

 - ssh:

   port: 22

   login: odin123

   password: 1