Какво ново има: - rspamd - нов софтуер проследяващ злономерен софтуер, при това самообучаващ се - RoundCube - потребителите ще се зарадват на нов WEB интерфейс и възможност за промяна на паролата. - по сигурни пароли (до сега бяха MD5 хеш пароли, сега ще са SHA256 хеш.) - Postfix и Dovecot ще комуникират през LMTP протокола, вместо както до сега през LDA (местен агент за доставка) - MariaDB - заменя досегашния стандартен MySQL
Нека приемем, че сте отговорни за домейна example.org и някой в интернет изпраща имейл на john@example.org.
1. Сървърът за отдалечена поща търси най-близкия DNS сървър за MX (Mail eXchanger) запис на получателя. Домейнът тук е example.org.. DNS сървърът отговаря, че името на хоста на пощенския сървър за поверителност е mx15.example.org. В случай, че няма MX запис, той ще се опита да използва записа А като резервен. DNS сървърът може дори да реагира с множество записи, имащи различни приоритети. Отдалеченият сървър ще опита всички записи в ред. Това позволява балансиране на натоварването. 2. Сървърът за електронна поща иска от DNS-a отново да открие IP адреса на пощенския сървър mx15.example.org. DNS сървърът отговаря с IP адреса. 3. Сега сървърът за електронна поща установява TCP връзка на порт 25 (който по дефиниция се използва за SMTP - simple mail transport protocol) към този IP адрес и достига до демона на Postfix на пощенския ви сървър. Postfix изпраща имейл адреса на изпращача и получателя. SMTP комуникацията се държи отворена, докато се появи следващата стъпка - проверката за спам / злонамерен софтуер, използвайки rspamd. Ако rspamd е сигурен, че имейлът е спам / злонамерен софтуер, диалоговият прозорец SMTP, който все още е отворен, се анулира с подходящо съобщение за грешка "5.7.1 Spam message rejected". rspamd може също да направи Postfix да приеме имейла и да го покаже като спам. Или може да каже на Postfix, че ще върне на изпращащия сървър (making it try again in a few minutes). 4. Postfix си говори с rspamd и предава имейла, както и изпращащия IP адрес. rspamd изпълнява голям брой проверки и изчислява вероятността за злононамерен софтуер като генерира точки. Нисък брой точки означава, че имейлът вероятно е легитимен. Големият брой означава, че е вероятно спам или дори съдържа злонамерен софтуер. В зависимост от конфигурацията rspamd ще съобщи на Postfix да приеме имейла, да забави имейла (greylisting) или да отхвърли имейла с съобщение за грешка. 5. Ако rspamd е приел имейла, тогава Postfix ще извърши допълнителни проверки, дали сървъра е отговорен за домейна на получателя. Има ли имейл адресът в този домейн? Ако получателят не е валиден, той отново ще отхвърли имейла - още по време на SMTP диалога. 6. Сега Postfix най-накрая прие електронната поща и затвори SMTP връзката към изпращащия сървър. След това той препраща имейла до процеса "Dovecot" на сървъра ни. Тази комуникация използва LMTP - лека версия на SMTP. След това Postfix премахва имейла от опашката. 7. Dovecot проверява дали получателят има sieve правила. Пример: - ако заглавието съдържа "List-Id: rspamd-user" то тогава изпълни "move to folder mailinglists/rspamd-user". 8. Dovecot записва имейла във файл на пощенската директория на получателя. Пример: - " /var/vmail/example.com/john/Maildir/..." Доста объркващо, но се постарайте да хванете логиката не подробностите.
Какво се случва, когато потребител получава своя имейл с IMAP / POP3?
1. Потребителят обикновено има пощенски клиент, като Outlook Express, Mozilla Thunderbird и т.н., който може да комуникира чрез POP3 или IMAP протокол за получаване на имейли от пощенския сървър. Пощенският клиент се свързва с порт POP3 (TCP 110) или IMAP (TCP 143), изпраща командата STARTTLS за иницииране на шифрована връзка и изпраща потребителското име на потребителя (което е равно на имейл адреса в нашия случай) и паролата. Ако е възможно, потребителите трябва да използват IMAP, който винаги оставя имейлите на сървъра и който също поддържа няколко папки. POP3 е много стар, ограничен и не е за препоръчване. 2. Dovecot прави заявка към базата данни MariaDB и потвърждава, че потребителското име и паролата принадлежат на известен потребител. Паролата не се съхранява в обикновен текст в базата данни. Dovecot използва salted hashes, които могат да се използват за потвърждаване на паролата, но не и за четене. Това е модерен и сигурен начин за съхраняване на пароли. Ако паролата е грешна, Dovecot ще откаже да влезе. 3. Използваме проста схема за съхраняване на имейли на диска. Потребителското име за влизане е същото като имейл адреса. Така че, ако потребителят се нарича jane@example.org, Dovecot ще търси файловете на имейла във /var/vmail/example.org/jane/Maildir/... и ще изпрати на потребителя поисканите имейли. Изненадващо много потребители не обичат да инсталират и конфигурират пощенски клиент, а предпочитат да си четат пощата през браузъра. Това не е проблем вече.
Софтуерът Roundcube осигуряващ интерфейса за уеб поща, е PHP базиран и играе ролята на портал между HTML страници и вградения IMAP клиент. Той говори чрез HTML на потребителя, за да работи в браузър. Комуникира с IMAP към Dovecot, за да достави имейли и така имитира пощенски клиент.
1. Потребителите ползвайки браузъра чрез HTTPS протокола дистигат до електронната си поща. Уеб сървърът на Apache получава връзката и изпълнява PHP скриптовете на Roundcube. Roundcube показва формуляр за вход. Потребителят въвежда потребителското си име и паролата за вход. 2. Roundcube се свързва с Dovecot чрез IMAP и препраща потребителското име и паролата, за да провери дали те са валидни. 3. Dovecot проверява тази връзка в MariaDB, за достоверност на потребителското име и паролата. 4. Ако удостоверяването е успешно, Dovecot извлича файловете от диска и ги изпраща чрез IMAP до Roundcube. След това Roundcube праща имейлите в HTML и потребителят може да ги прочете.
Разбира се, потребителите искат да изпращат имейли до други потребители на интернет. Но те не могат да изпратят имейла директно до целевия пощенски сървър. Първо техният пощенски клиент не знае кой дестинационен сървър носи отговорност за получателя - тази функционалност просто не е вградена. И второ, потребителят вероятно е присвоил динамичен IP адрес, който е блокиран от повечето пощенски сървъри, тъй като те са склонни да злоупотребяват с заразен Wind*ws компютри, изпращащи спам. Така че правилният начин за изпращане на имейл до интернет е през вашите пощенски сървъри. Това се нарича препредаване, защото пощенският ви сървър действа като реле. В този пример вашият потребител иска да изпрати имейл до fred@example.net.
1. Потребителят пише имейла в пощенския си клиент и кликва върху "Изпращане". Пощенският клиент установява SMTP връзка към вашия Postfix. За да сте сигурни, че потребителят има право да изпраща имейл през вашата система, той изисква потребителско име и парола заедно с имейла. Тази информация се изпраща по шифрован начин. 2. Преди да приемете имейла, Postfix първо проверява потребителското име и паролата. Postfix има средства да говори с SQL база данни, но неговите характеристики са изненадващо ограничени и сложни. За да опрости процеса, той пита Dovecot, тъй като вече знае как да се справи с удостоверяването. 3. Dovecot изпраща заявка към базата данни на MariaDB, за да провери дали потребителското име и паролата (хеш) са правилни и казват на Postfix резултата. 4. Postfix вече знае, че е упълномощен да изпрати имейла от името на потребителя. Той казва на потребителя, че успешно е приел имейла. Имейлът се поставя в пощенската опашка на Postfix за по-нататъшна обработка. Postfix ще се свърже с най-близкия DNS (сървър за имена), за да определи отговорния сървър за местоназначение. Тъй като получателят има адрес "...@example.com", той проверява MX записа на домейна "example.com" и след това получава съответния IP адрес. 5. Postfix вече знае до кой пощенски сървър да изпрати имейл. Той отваря SMTP връзка и доставя имейла.