Sådan bruges Amazon Simple Email Service (SES) til at erstatte din serverbaserede e-mail-server

En smuk dag uden nogen synlig grund stoppede min Ubuntu 18.04-forretningsserver med at videresende mail til min Gmail-adresse.

Bare dagen før omdirigerede de .forward-filer, jeg havde oprettet i hjemmekatalogerne på de lokale serverkonti, jeg bruger til e-mail - som /home/office/.forward - munter al den mail, der var rettet mod mine forretningsadresser, til min daglige -brug Gmail-konto. Og så stoppede de pludselig.

Da jeg bemærkede, at der var noget galt, konsulterede jeg straks mine serverlogfiler. /var/log/mail.err spyttede ud charmerende meddelelser, der indeholdt ting som:

status=deferred (delivery temporarily suspended: connect to alt2.gmail-smtp-in.l.google.com[219.8.202.27]:25: Connection timed out)

Kontrol af serverens postkasser fortalte mig, at der kom mail, men at Postfix ikke kunne oprette forbindelse til Gmail for at videresende meddelelser til min adresse.

Naturligvis genstartede jeg Postfix, men det hjalp ikke.

sudo systemctl restart postfix

Jeg bekræftede, at der ikke var noget, der blokerer for udgående meddelelser fra at forlade min server på port 25 (SMTP). Derefter kontrollerede jeg for at sikre, at mit domæne ikke på en eller anden måde var blevet sortlistet (der er adskillige onlineværktøjer, der gør det for dig) og kiggede på tilstanden af ​​mine MX-poster ved at køre grave fra kommandolinjen:

dig MX bootstrap-it.com

Intet gør. Alt syntes at tjekke ud.

Efter et par frustrerende fejlsøgningssessioner opgav jeg og regnede med at jeg ville prøve noget helt andet.

At være AWS-løsningsarkitekt og have været medforfatter til to bøger til Wiley / Sybex om AWS (en vejledning til Cloud Practitioners-eksamen og en til Solutions Architect Associate-eksamen), burde jeg ikke være villig og i stand til at bygge min egen stak af AWS-værktøjer, der håndterer mine e-mail-serverbehov i skyen?

Nå viser det sig, at jeg både var villig og - efter nogle alvorlige undersøgelser og forsøg og fejl - stand. At få det gjort ville kræve:

  • Oprettelse af en S3-spand, hvor indgående e-mails gemmes.
  • Oprettelse af et SNS-emne (Simple Notification Service) for at sende mig en besked, hver gang en ny e-mail ankommer.
  • Konfiguration af Amazons Simple Email Service (SES) til at overtage mit e-mail-domæne (bootstrap-it.com) og håndtere indgående mail. Det indebærer at tilføje en MX-post til rute 53 (hvor mine domæner administreres) og pege SES til mit domæne; tilføje og verificere hver e-mail-adresse, som jeg ønsker, at SES skal kontrollere; og derefter bede SES om at sende nye beskeder til min S3-skovl, samtidig med at det udløser en advarsel om SNS-emnet.
  • Forudsat at du også vil sende e-mail-beskeder via tjenesten, er det også en god ide at konfigurere SES til at underskrive dine udgående meddelelser ved hjælp af DomainKeys Identified Mail (DKIM).

Jeg vil ikke beskrive alle disse trin i detaljer her. Der er masser af fremragende dokumentation til rådighed for det. Men jeg vil kort nævne nogle smertepunkter, du måske støder på.

Du bliver nødt til at tilføje en MX-post til din DNS-hostede zone for hvert domæne, du bruger. Selvom dine domæner administreres inden for Amazons rute 53, skal du angive en værdi for din post.

Hvad du bruger til denne værdi, afhænger af AWS-regionen, hvor din SES-ressource er placeret. I mit tilfælde så det sådan ud:

10 inbound-smtp.us-east-1.amazonaws.com

SNS-meddelelserne ankommer i en enkelt lang tekststreng, der kun indeholder et par korte bidder af nyttige, men svær at læse oplysninger. Det er nok til at identificere spam, men du har normalt brug for mere information end hvad du finder her. Jeg bruger meddelelserne som en head-up, der fortæller mig, at der er ny mail i min S3-spand.

At se e-mails selv i din S3-bucket via AWS Management Console er ikke verdens ende, hvis det kun sker en eller to gange om måneden. Men hvis de kommer hurtigere end det, skal du finde en bedre måde at få adgang til og læse dine beskeder.

At oprette en protokol til automatisering af denne proces er dog virkelig et lokalt operativsystemproblem, der kræver et helt andet sæt værktøjer. Jeg løste problemet for mig selv ved hjælp af AWS CLI og et sejt Bash-script. Hvis du gerne vil se, hvordan jeg gjorde det, skal du klikke videre til denne artikel.

Der er meget mere administrativ godhed i form af bøger, kurser og artikler tilgængelige på min bootstrap-it.com.