Będą Państwo potrzebować konta AWS oraz dostępu do DNS swojej domeny. SES jest zdecydowanie najtańszą opcją na tej liście i zarazem tą z największą liczbą kroków.
Własna dokumentacja firmy Amazon: Weryfikacja domeny · Uzyskiwanie danych uwierzytelniających SMTP · Opuszczanie środowiska sandbox
⭐ Łączymy się z SES za pośrednictwem interfejsu SMTP, a nie interfejsu REST API. Z tego powodu są Państwo proszeni o nazwę użytkownika i hasło SMTP, a nie o klucz dostępu AWS. Obie ścieżki dostarczają dokładnie tę samą wiadomość; ścieżka SMTP pozwala uniknąć całej klasy problemów związanych z podpisywaniem żądań AWS, które są wyjątkowo uciążliwe do diagnozowania z zewnątrz, i jest to interfejs, dla którego Amazon publikuje dane logowania właśnie po to, aby narzędzia takie jak nasze mogły z niego korzystać.
1. Wybór regionu i pozostanie w nim
SES działa regionalnie. Wszystko poniżej — Państwa zweryfikowana domena, dane uwierzytelniające, limit wysyłania — należy do jednego regionu AWS i nie istnieje w żadnym innym.
Proszę wybrać region położony najbliżej swoich klientów (eu-west-1 dla Europy, us-east-1 dla Ameryki Północnej) i go zanotować. Zweryfikowanie domeny w Irlandii, a następnie wygenerowanie danych uwierzytelniających we Frankfurcie to najczęstszy sposób na zmarnowanie popołudnia, a generowany przy tym błąd nie wspomina słowem o regionach.
2. Weryfikacja domeny
Konsola Amazon SES → Identities → Create identity → Domain. Proszę wprowadzić subdomenę, taką jak mail.yourdomain.com.
Proszę włączyć opcję Easy DKIM i wybrać RSA_2048_BIT. SES wygeneruje trzy rekordy CNAME:
| Type | Host |
|---|
CNAME | <token1>._domainkey.mail.yourdomain.com |
CNAME | <token2>._domainkey.mail.yourdomain.com |
CNAME | <token3>._domainkey.mail.yourdomain.com |
Proszę dodać wszystkie trzy. Weryfikacja zazwyczaj kończy się w ciągu godziny.
⭐ Warto również włączyć niestandardową domenę MAIL FROM (bounce.mail.yourdomain.com) i dodać wymagane przez nią rekordy MX oraz TXT dla SPF. Bez tego nadawcą kopertowym (envelope sender) pozostaje amazonses.com, więc SPF wyrównuje się do firmy Amazon zamiast do Państwa, a Państwo polegają wyłącznie na DKIM.
3. Wyjście ze środowiska sandbox — krok, o którym wielu zapomina
⛔⛔ Nowe konto SES znajduje się w środowisku sandbox i może wysyłać wiadomości wyłącznie na adresy zweryfikowane osobno. Zaakceptuje każdą inną wiadomość i nie dostarczy żadnej z nich.
To dokładnie ten błąd, przed którym ma uchronić nasz krok weryfikacyjny: w środowisku sandbox SES przyjmuje wiadomość z zupełnie normalną odpowiedzią sukcesu, po czym po prostu ją porzuca. Jeśli zweryfikują Państwo naszą konfigurację, wysyłając test na adres przypadkowo zweryfikowany w AWS, zadziała to prawidłowo — a potem każda wiadomość do prawdziwego klienta przepadnie.
Panel konta → Request production access. Amazon zapyta, co Państwo wysyłają i jak obsługują zwroty; kilka szczerych zdań na temat powiadomień transakcyjnych wysyłanych do własnych klientów uzyskuje zwykle akceptację w ciągu 24 godzin.
⭐ Proszę to zrobić przed podłączeniem SES w tym miejscu. Wtedy po fakcie nie ma nic do debugowania, ponieważ nic nie zawodzi.
4. Tworzenie danych uwierzytelniających SMTP
Konsola SES → SMTP settings → Create SMTP credentials.
Utworzy to użytkownika IAM z uprawnieniami wyłącznie do wysyłania i zapewni Państwu nazwę użytkownika SMTP oraz hasło SMTP.
⛔ To nie jest klucz dostępu ani klucz tajny AWS. Są one generowane z klucza tajnego IAM za pomocą określonego algorytmu i nie można ich stosować zamiennie. Wklejenie w tym miejscu klucza secret access key AWS za każdym razem zakończy się niepowodzeniem uwierzytelniania, a błąd po prostu zakomunikuje odrzucenie danych uwierzytelniających.
⚠️ Hasło wyświetla się tylko raz. Przed opuszczeniem strony proszę pobrać plik CSV.
5. Połączenie w Zinn®
Proszę otworzyć sekcję Wysyłanie e-maili w swoim panelu:
- Dostawca — Amazon SES
- Wysyłaj z tej domeny —
mail.yourdomain.com
- Region AWS — region z kroku 1, np.
eu-west-1
- Nazwa użytkownika SMTP — z kroku 4
- Port — pozostawić 587
- Hasło SMTP SES — z kroku 4
Nazwę hosta generujemy automatycznie (email-smtp.<region>.amazonaws.com), więc nie ma ryzyka popełnienia literówki.
6. Wysłanie testu i wprowadzenie kodu
Proszę kliknąć Wyślij wiadomość testową na skrzynkę pocztową w innej domenie, która nie została zweryfikowana w AWS — prywatny adres Gmail będzie idealny, ponieważ to on stanowi dowód na opuszczenie środowiska sandbox. Proszę odczytać kod i go wprowadzić.
Gdy coś nie działa
„Email address is not verified” podczas wysyłki do prawdziwego klienta — wciąż znajdują się Państwo w środowisku sandbox. Krok 3.
535 Authentication Credentials Invalid — użyto klucza dostępu AWS zamiast danych uwierzytelniających SMTP (krok 4) lub dane te należą do innego regionu niż wprowadzony.
„Maximum sending rate exceeded” — nowe konto produkcyjne zaczyna z limitem 14 wiadomości na sekundę oraz 50 000 na dobę. To bardzo dużo powiadomień, ale jeśli migrują Państwo dużą bazę klientów, warto najpierw zawnioskować o zwiększenie limitu.
W testach działało, a na produkcji przestało — proszę sprawdzić panel Reputation w SES. Amazon automatycznie wstrzymuje wysyłanie, gdy wskaźnik zwrotów lub skarg przekroczy ustalony próg, o co nietrudno w przypadku starej listy klientów.