Модул 9 · 9.1
Имейл от WordPress @@ОМСКАНИЕ@@
Модул 9: Имейл, видимост в търсачките, GDPR, поддръжка и преместване · Време за четене: 9 минути
Учебна цел: След този урок ще можете да се погрижите пощата от WordPress (формуляри, поръчки, връзки за забравена парола) да пристига надеждно.
Ключови понятия: wp_mail, PHP mail(), подател (From), Reply-To, SMTP, SMTP разширение, удостоверена пощенска кутия, транзакционна услуга за поща, SPF, DKIM, DMARC, уеднаквяване (alignment), MX другаде, тестово писмо
WordPress изпраща повече поща, отколкото си мислите
Вашият сайт изпраща поща при: попълнена форма за контакт, поръчка (към клиента и към Вас), нов потребител, забравена парола, нов коментар, автоматична актуализация, критична грешка (урок 5.4). Ако тази поща не пристигне, обикновено забелязвате едва когато клиент се обади: „попълних формуляра три пъти.“
Как WordPress изпраща поща по подразбиране
WordPress изпраща всичко чрез функцията wp_mail. По подразбиране тя предава писмото на PHP функцията mail(), която го препраща на пощенската програма на уеб сървъра. Това работи, но има три слаби места:
- Подателят. Без настройка WordPress изпраща от
wordpress@example.com. Ако този адрес не съществува или подателят е различен от Вашия собствен домейн, получателите не му се доверяват. - SPF, DKIM и DMARC. Приемащите пощенски сървъри проверяват дали сървърът, който доставя писмото, има право да изпраща поща от името на Вашия домейн (SPF), дали писмото има валиден цифров подпис от Вашия домейн (DKIM) и каква е политиката на Вашия домейн, ако нещо не е наред (DMARC). В курса за DNS (уроци 4.3 до 4.5) можете да прочетете как работи това. Поща през уеб сървъра преминава тези проверки само ако Вашият DNS и сървърът са настроени съответно.
- Пощата другаде. Ако Вашата поща не е при Вашия уеб хостинг доставчик, а например при Microsoft 365 или Google Workspace (Вашите MX записи сочат натам), писмото изпратено през уеб сървъра често не съвпада с Вашия SPF и DKIM. Освен това някои уеб сървъри се опитват да доставят поща за собствения Ви домейн локално, вместо през MX, така че тя никога не достига до истинската Ви пощенска кутия.
Правилно задаване на подателя и Reply-To
Често срещана грешка при формуляри за контакт: да се използва адресът на посетителя като подател (From). Това изглежда логично („за да мога да натисна „отговор“), но Вашият сървър няма право да изпраща поща от името на @gmail.com или @hotmail.com. Тези домейни имат строга DMARC политика, затова получателят отхвърля писмото или го маркира като спам.
Правилно е:
From: Website <website@example.com> (адрес от Вашия собствен домейн)
Reply-To: bezoeker@example.net (адресът, който посетителят е въвел)
To: info@example.comС Reply-To Вашият отговор все пак достига до посетителя. Почти всяко разширение за формуляри има тези две полета отделно.
SMTP: изпращане през истинска пощенска кутия
Най-надеждното решение е да накарате WordPress да изпраща поща чрез SMTP: същият начин, по който Вашата пощенска програма изпраща писма, с потребителско име и парола на истинска пощенска кутия. Това се прави с SMTP разширение (например WP Mail SMTP, FluentSMTP или Post SMTP; има и други). Разширението прихваща wp_mail и изпраща писмото през сървъра, който посочите:
| Избор | За кого |
|---|---|
Пощенската кутия при Вашия собствен доставчик (например website@example.com на пощенския сървър на Вашия хостинг пакет) | Повечето малки сайтове с поща при същата компания |
| Вашата поща в Microsoft 365 или Google Workspace | Ако пощата Ви е там; често чрез специална връзка в разширението (OAuth) вместо парола, тъй като тези услуги все повече ограничават обикновеното SMTP удостоверяване |
| Транзакционна услуга за поща (услуга, специализирана в изпращане на поща от уебсайтове и приложения) | Онлайн магазини и сайтове, които изпращат много поща |
Предимства: писмото минава през сървър, който вече е настроен със SPF и DKIM за Вашия домейн, подателят е съществуващ адрес и много разширения поддържат дневник (log), така че можете да видите какво е изпратено и какво се е провалило.
Обърнете внимание на няколко неща:
- Използвайте отделен имейл адрес за сайта (например
website@), не Вашата лична пощенска кутия. Ако сайтът бъде хакнат и паролата изтече, този адрес може да бъде заменен без щети. - SMTP паролата се съхранява в базата данни или в wp-config.php. Използвайте, където е възможно, парола за приложение (app password) или връзка без парола.
- Дневникът на пощата съдържа лични данни (кой какво е изпратил). Не го оставяйте да расте безкрайно (урок 9.3).
SPF, DKIM и DMARC за Вашия сайт
Без значение кой сървър изпраща пощата, Вашият DNS трябва да отговаря на това:
- SPF: SPF записът на Вашия домейн трябва да посочва сървъра, който доставя писмото. Ако изпращате поща през пощенския сървър на Вашия доставчик, той обикновено вече е вписан. Ако изпращате чрез транзакционна услуга, добавяте тяхното
include:в същия SPF запис (никога втори SPF запис, курс по DNS, урок 4.3). - DKIM: изпращащият сървър трябва да подпише писмото с ключ, който е вписан във Вашия DNS (
<selector>._domainkey.example.com). При Вашия доставчик и при транзакционните услуги това се включва; услугата Ви дава записите. - DMARC: запис на
_dmarc.example.com. Започнете сp=noneи затегнете, когато всичко е наред (курс по DNS, урок 4.5).
За DMARC домейнът в From трябва да е уеднаквен (aligned) с домейна, който преминава SPF или DKIM. Затова „From на Вашия собствен домейн“ е толкова важно.
Тестване
- Много SMTP разширения имат бутон Изпращане на тестово писмо. Изпратете едно до адрес при друг доставчик (Gmail или Outlook.com адрес) и проверете дали пристига във входящата кутия.
- Разгледайте хедърите на това писмо („Показване на оригинала“ или „Показване на източника“). Потърсете
spf=pass,dkim=passиdmarc=pass. - Попълнете собствената си форма за контакт и проверете дали писмото пристига, с правилния Reply-To.
- Тествайте също връзка за забравена парола и, при онлайн магазин, тестова поръчка.
Онлайн инструменти като mail-tester.com дават оценка и обяснение; с Е-mail проверката на Вашия хостинг доставчик (при WebOké се нарича така) или internet.nl проверявате DNS страната.
На практика: ето как изглежда в панел
Като пример използваме DirectAdmin и SMTP разширение. При други доставчици и разширения полетата се наричат подобно.
- Създайте в DirectAdmin, в раздела E-mail accounts, пощенска кутия
website@example.comсъс силна парола. - Потърсете при Вашия доставчик настройките за изходяща поща (име на сървър, порт 465 или 587, криптиране).
- Въведете ги в SMTP разширението, с
website@example.comкато подател. Включете „принудително задаване на подател“, така че и други разширения да използват този адрес. - Проверете в DNS управлението, че SPF, DKIM и DMARC съществуват за Вашия домейн.
- Изпратете тестово писмо и прочетете хедърите.
Обобщение
- WordPress изпраща поща чрез wp_mail и по подразбиране чрез PHP mail(); подателят и DNS определят дали тя пристига.
- Задайте подателя (From) на адрес от Вашия собствен домейн, а адреса на посетителя в Reply-To.
- SMTP разширение с отделна пощенска кутия или транзакционна услуга е най-надеждно, с дневник.
- SPF трябва да посочва изпращащия сървър (в един запис), DKIM трябва да е активен, DMARC да започва с p=none.
- Тествайте с адрес при друг доставчик и прочетете spf, dkim и dmarc в хедърите.
Тест (quiz)
Задача
Задача A9.1: Готов ли е Вашият домейн да изпраща поща от сайта Ви? Въведете Вашия домейн, адреса, който Вашият сайт използва като подател, и сървъра, през който Вашият сайт изпраща поща (името на SMTP сървъра, или „уеб сървър“, ако не сте настроили нищо). Въведете също DKIM селектора, ако го знаете. Програмата проверява: дали адресът на подателя принадлежи на Вашия домейн, дали има точно един SPF запис и той позволява посочения сървър, дали има DKIM запис при селектора (или съобщава, че не може да провери без селектор), и дали има валиден DMARC запис.
Задача D9.1: Четене на тестово писмо. Изпратете тестово писмо от Вашия сайт (тестовия бутон на Вашето SMTP разширение или връзка за забравена парола до тестов акаунт) до адрес при друг доставчик. Отворете хедърите на това писмо и запишете резултатите при spf, dkim и dmarc, и кой домейн стои при всеки от тях. След това попълнете собствената си форма за контакт и проверете: пристига ли писмото и отива ли „отговор“ към адреса, който сте въвели във формуляра?
Задача D9.1: Четене на тестово писмо
Тази задача изпълнявате сами; никой не я проверява. Отбележете какво сте направили и маркирайте задачата като изпълнена.
Три резултата (pass, fail или none) с домейн, например „spf=pass smtp.mailfrom=vashiatdomein.bg“. При fail посочете следващата стъпка (допълване на SPF, включване на DKIM, SMTP разширение).
Вашите отметки и бележки остават само в този браузър; не ги изпращаме никъде. Ако сте влезли, в Моите курсове запазваме само че сте изпълнили задачата.
Допълнително четене
Тези статии описват стъпките в панелите на WebOké; при други панели те работят по подобен начин.
- Изпращането на имейл през PHP не работи, MX записите сочат другаде
- Как да получа правилния подател с mail() в PHP? SMTP
- Форма за контакт на Вашия уебсайт: изпращане на полетата по имейл и предотвратяване на спам
- Как се изпращат имейлите / SMTP
- Ръководство за DirectAdmin 18.10: Не мога да изпращам имейли
- Безплатен DNS курс 4.3: SPF: кой може да изпраща имейли от името на Вашия домейн?
- Безплатен DNS курс 4.4: DKIM: цифровият подпис под Вашата поща
- Безплатен DNS курс 4.5: DMARC: какво трябва да правят получателите с фалшива поща
