Делегиране на поддръжката на пощенския домейн част 2
Настройване на Exim и PHP mail() с помощта на Linux Debian като пример
Ще използваме локалния сървър само за изпращане на имейли. Освен това няма значение как ще се извърши изпращането: директно чрез SMTP или чрез MUA. Пощата ще продължи да се получава от сървърите на Gmail.
Дистрибуцията на Debian 5 инсталира MTA Exim4 по подразбиране. Той е идеален за нашите задачи. Освен това конфигурацията му се извършва с помощта на съветник и е невероятно проста. Сървърът трябва да бъде конфигуриран да приема връзки само от локална връзка. В този случай не е необходимо да му поверявате поддръжката на домейни, с изключение на локалния по подразбиране (localhost).
Така че, ако нямате инсталиран Exim, инсталирайте го:
# aptitude инсталира exim4
След това стартирайте неговата конфигурация:
Ако имате няколко сайта с различни домейни на вашия сървър (вижте по-долу), тогава е по-добре да направите това име неутрално, за да не „изгорите“. Например, можете да изберете местен-мейл-агент.
3. След това трябва да укажете кои интерфейси Exim да слуша. В нашия случай отдалечените връзки са не само ненужни, но и опасни: всеки може да изпраща поща през вашия сървър. Посочете само 127.0.0.1.
4. Следващият въпрос е кои домейни трябва да обслужва сървърът. Тези. за които домейни не е необходимо да препращат писма към отдалечени SMTP сървъри, потребителят ще ги вземе от този сървър. Не е необходимо да поддържаме нашите домейни. Можете да посочите само localhost, защото няма кой друг да му служи.
5. След това можете да посочите за кои домейни сървърът да служи като реле (списък, разделен с точка и запетая). Тук не посочваменищо, тъй като в следващата стъпка ще си позволим да препредаваме за всички домейни. Можете да посочите списък с вашите домейни.
6. Посочете 127.0.0.1 тук, за да разрешите препредаване за всички заявки от локалния IP.
Тази конфигурация има един недостатък. Ако вашият сайт е счупен, тогава нападателите ще могат да изпращат поща от всеки домейн през вашия сървър. Ако на сървъра има 1-2 сайта, тогава е по-добре да оставите полето празно на тази стъпка и на предишната стъпка направете списък с тези домейни (за да се върнете една стъпка назад, щракнете върху бутона „Отказ“). Когато се появят нови домейни, не забравяйте да ги добавите към конфигурацията. Ако смятате, че вашите сайтове са надеждни, най-лесният начин е да посочите 127.0.0.1 тук.
7. След това се изяснява дали постоянните DNS заявки са проблем за нас при изпращане на всяко писмо. В 99,9% това не е проблем, така че избираме отговора на въпроса „Запазване на минимален брой DNS заявки (Dial-on-Demand)?“ Не.
8. Къде да съхраняваме локалната поща (не забравяйте, че казахме на сървъра да обслужва домейна localhost?) За нас няма особено значение, тъй като по правило никой не я използва. Можете да изберете опцията по подразбиране: поставете всичко в /var/mail.
9. Предпоследната стъпка е изборът на конфигурация. Съхранявайте всичко в един файл или го разпръснете в много малки файлове. По-лесно е да правите големи промени в голям файл и е по-лесно да работите с малки в случай на малки редакции. Изберете опцията по ваш избор. Избрах „неразделена конфигурация“ (отговорът е „Не“).
Можете да преконфигурирате Exim по всяко време по същия начин. Съветникът ще използва по подразбиране текущите стойности на вашата конфигурация.
Правилна настройка на SPF
Накратко, SPF е начин за борба със спама.
Ще изпратим поща от сървъра,Чийто PTR IP не е равен на един от MX записите на сървъра и в повечето случаи PTR IP не е равен на самия ни домейн (хостерите не винаги са съгласни да променят PTR). В този случай вероятността имейлите да попаднат в спам се увеличава. Но има добър начин да го намалите: да посочите правилно SPF записа на нашия домейн.
SPF запис е обикновен запис на домейн зона от тип TXT. Можете да разберете текущата му стойност за домейна, като използвате командата host в Linux:
$ host -t TXT valera.ws valera.ws TXT запис в момента не присъства
$ nslookup valera.ws Сървър: 194.224.52.4 Адрес: 194.224.52.4#53
Неавторитетен отговор: Име: valera.ws Адрес: 93.174.6.118
$ nslookup 93.174.6.118 Сървър: 194.224.52.4 Адрес: 194.224.52.4#53
Неавторитетен отговор: 118.6.174.93.in-addr.arpa име = server.valera.ws.
Може да се види, че PTR IP, към който е обвързан моят домейн (IP на моя сървър) е server.valera.ws.
v=spf1 a mx ptr include:_spf.google.com
Ако искате да изпращате поща от сървър, който не попада под всички тези правила, можете да го посочите чрез IP или PTR домейн, например:
v=spf1 a mx ptr ptr:example.com include:_spf.google.com
Записът е посочен за вашия домейн по съответния начин, който се определя от собственика на DNS сървъра. Обикновено хостерът управлява сървъра и предоставя възможност за извършване на промени в DNS зоните през хостинг панела. Или той променя записа при поискване до поддръжката. Запис като този трябва да се появи във файла на зоната:
valera.ws. TXT v=spf1 a mx ptr include:_spf.google.com
След като актуализира зоната, хостът ще издаде следното:
$ host -t TXT valera.ws valera.ws TXT "v=spf1 a mx ptr include:_spf.google.com
bool поща (низ $to, низ $subject,низ $message [, низ $additional_headers [, низ $additional_parameters ]] )
Това е $additional_parameters, което ни интересува. Трябва да му предадете истинския подател:
поща ($до, $тема, $съобщение, $допълнителни_заглавия, $допълнителни_параметри." [email protected]");
Подателят се посочва заедно с опцията -f.
Сега писмата, изпратени чрез mail(), ще бъдат абсолютно подходящи (при условие, че посочите всички необходими SMTP заглавки, като „ОТ:“, „ДО:“ и т.н.).
Ами ако има няколко сайта с различни IP адреси (конфигуриране на Exim за изпращане на имейли от различни IP адреси)?
Искаме да използваме локален SMTP сървър, за да изпращаме поща от всички сайтове на сървъра. Няма проблеми, ако Exim е конфигуриран правилно (вижте по-горе). Но проблемът се появява, ако различни сайтове работят на различни IP адреси. Не искаме да "стреляме" по пощата, че всичките ни сайтове живеят на един сървър. Но Exim по подразбиране изпраща цялата поща от главния (първи) IP на мрежовия интерфейс и този IP до всички получатели в SMTP "Получени:" заглавки на писмото. Освен това там е посочено и името на сървъра, което сме избрали като неутрално в случай на различни сайтове на сървъра.
За да не "изгори" IP-то на сървъра, трябва да изпратите писмо до отдалечен сървър с IP, равно на A-записа на домейна на сайта. Това става лесно чрез промяна на конфигурацията на Exim. Нека направим промени в настройките за SMTP транспорт на Exim. Ако сте избрали монолитна конфигурация, тогава трябва да редактирате файла:
Намираме реда „remote_smtp:“ във файла (търсене в nano - F6). Добавете в края на този блок:
Това означава, че когато изпращате писмо, трябва да определите домейна на подателя на пощата (за [email protected] това е valera.ws) и да изпратите поща от IP адреса, към който е свързан този домейн. От само себе си се разбира, че домейнът трябва да бъде обвързан със сървъра,където е инсталиран Exim.
Също така трябва да създадете файл навсякъде, за да обвържете домейни с IP (един домейн може да има няколко IP, така че просто търсите - няма да работи). Избрах местоположението на файла: /usr/share/exim4/domain2ip
Там въвеждаме нашите домейни според шаблона:
valera.ws: 123.123.123.123 vasya.ws: 123.123.123.124
Не забравяйте да добавите домейна към файла в случай на нов сайт. Между другото, редът helo_data = "$sender_address_domain" може да бъде добавен към файла, дори ако имате едно IP за всички сайтове. Тогава вашият домейн ще се появи в командата HELLO на SMTP протокола (и следователно в заглавките на съобщенията).
Остава да проверите дали всички ваши настройки работят правилно. За да направите това, просто изпратете писмо от локалния сървър през конзолата.
$ mail -a "From:[email protected]" -s Тест [email protected] - [email protected] Тест Cc:
Проверка на изпратеното писмо в кутията на получателя: