tavis nörttimaailmassa

EksisONE - artikkeleita ja ohjeita nörttimaailmasta

WordPress: Amazon SES lähtevälle sähköpostille

Harva asia on verkkosivumaailmassa hankalampaa kuin postituslistojen luominen. Itseasiassa ylipäätään sivustolta minkään postin lähettäminen ilman, että sinulla on jostain ulkoa ostettu sähköpostipalvelu, on vaikeaa. Oikeammin, saada se niin edullisesti kuin mahdollista, on hankalaa.  Järjestelmän postit saa kylläkin liikkumaan, jos hyväksyy Gmailin tapaiset ilmaispalvelut. Sen sijaan jos haluat käyttää hieman uskottavampaa domainia JA lähettää markkinointipostia, niin avaa samantien lompakkosi leviäksi. Järkevää tapaa ilman rahaa ei löydy, mutta onneksi löytyy edullinen, ainakin lähettämiseen: Amazon SES.

Olen kirjoittanut ohjeet miten asennetaan virtuaaliserverille Mailgun. Sinällään toimiva ja nopea asentaa. 10 000 mailia eli keskimäärin 333 päivässä ei kuitenkaan kannata ylittää, koska siinä vaiheessa alkaa rahaa menemään enemmän. Tässä on lisäksi yksi koukku. Mailgun tarkistaa vastaanottavat osoitteet, niin ei joudu maksamaan turhasta – ihan oikeasti, massaposti maksaa vain sentin osia. Mutta jos kuukaudessa tulee yli 100 uutta osoitetta, niin taas siirryt maksulliselle puolelle. Samaten jos haluat enemmän kuin yhden lähettävän domainin, sinullahan voi olla jopa kaksi sivustoa, niin taas suunnattiin maksulliselle puolelle. Jos liikennettä on paljon, niin silloin luultavasti kykenee maksamaan pyöreät 70 euroa kuukaudessa, joka sallii 100 000 sähköpostia ja 1000 uutta vastaanottajaa kuukaudessa. Vertailuksi – G Suite sallii kympillä kuussa 2000 päivässä eli vertailuna 60 000 kuukaudessa ja ilman vastaanottajarajoituksia.  Tai Gmail 500 päivässä, joka olisi periaatteessa 15 000 kuukaudessa.

Toki noita ei voi suoraan verrata, koska G Suiten käyttämätöntä saldoa ei voi siirtää seuraavalle päivälle ja Mailgun seuraa kuukausisaldoa. Siitä huolimatta Mailgun on kallis verrattuna siihen mitä saa.

Amazonin SES on myös maksullinen, mutta hinnat ovat mielenkiintoiset. Ja Amazonin tapaan hyvin vaikeita laskea, joten aitoa kokonaislaskua on hankala ennakoida. Ero tulee siinä, että maksat vain siitä mitä käytät.

On toinenkin ero, ja huomattava sellainen. Hinta. Otetaan esimerkki ASW:n sivuilta.

  • Lähetät 250 000 sähköpostia kuukaudessa. Hinta on 25 USD (0,10 USD/1000 emailia)
  • Jokaisen sähköpostin koko on 32 kB. Hinta on 0,96 USD (0,12 USD/1 GB)
  • Otat vastaan 1000 sähköpostia (vaaditaan erillinen asennus). Se on ilmainen, koska 1000 asti ei ole veloitusta. Siitä yli veloitus olisi sama kuin lähtevässä.
  • Jokaisen sähköpostin koko on 32 kB. Hinta on 0,02 USD (0,09 USD/täysi lohko; yksi lohko 256 kB)

Loppusumma olisi siis 25,98 USD, noin 23,50 euroina – jos lähetät 250 000 mailia. Vaikka kuukaudessa, tai vuodessa. Vertailuksi, 250 000 lähtevää sähköpostia kuukaudessa maksaisi Mailgunilla 179 USD joka kuukausi, lähetit tai et.

25 000 sähköpostiakin on paljon, ainakin minulle. Amazon veloittaisi silloin 2,50 USD kuukaudessa (ja joku sentti päälle siirroista). Mailgun  haluaisi kympin verran. Eli pienissä postituksissa puhutaan aidosti kahvirahoista, SES:n 30 taalaa vastaan Mailgunin noin 120 dollaria – mutta miksi maksaa enemmän?

Tuo tarkoittaa sitä, että

  • jos lähetät maksimissaan 10 000 sähköpostia kuukaudessa
  • jos tarvitset vain yhden domainin lähettäjäksi
  • jos uusia sähköpostiosoitteita tulee  maksimissaan 100 kuukaudessa

niin Mailgun on edullisempi ilmaisena. Mutta jos sinulla on verkkokauppa, ja saat keskimäärin 4 uutta asiakasta päivässä, niin SES on maksullisenakin halvempi.

SES on hieman hankalampi ottaa käyttöön ja viive on arkena päivän luokkaa. Mutta ainakin itse pidän tuolla hinnalla sitä hyväksyttävänä. Sen siirtäminen WordPressiin, tai virtuaaliserverille Postfixin saataville, on taasen aivan samanlainen urakka kuin muillakin järjestelmillä: mitätön.

SES: käyttöönotto

Asetetaan SES-palvelu käyttökuntoon. Oletus siis on, että sinulla on jo Amazonilla AWS-tili (ihan eri kuin heidän verkkokauppansa). Jos ei, niin luo se heti alkuun. Tarvitset siihen luottokortin (Electron kelpaa myös), mutta sitä ei veloiteta kuin vasta jälkikäteen. Plus että uusille asiakkaille ensimmäinen vuosi on maksuton suurimmassa osassa palveluita. Tai ainakin melkein, koska niissä on käyttörajat, jonka jälkeen ylimenevältä osalta lasku lähtee pyörimään. Ne rajat on kylläkin melkoisen korkealla, eikä niitä ns. tavallisessa käytössä ihan heti saavuta – ei sinällään yllättävää, koska Amazon haluaa sinun sitoutuvan palveluun ja kun olet vuoden rakentanut kaikkea kuntoon, niin ei siitä ihan heti luovu.

Minulla on AWS:llä henkilökohtaisten backuppien lisäksi sivustojen kaikki varmuuskopiot sekä muuta sisältöä S3:ssa. Lisäksi pyöritän CDN:n Amazonin kautta. Laskutukseni on nykyään hieman yli 20 dollaria kuussa. Ei se konkurssiin aja, sillä gigoja on aika paljon.

Luo käyttäjä

  • Kirjaudu sisään AWS:ään,
  • valikosta Services etsi otsikon Security, Identity, & Compliance alta IAM ja klikkaa
  • valitse vasemmasta valikosta Users
  • tai mene suoraan tästä linkistä
  • klikkaa Add user

Anna jokin haluamasi nimi ja täppää valinta Programmatic access.

Klikkaa Next: Permissions

Käyttöoikeudet SES-palveluun

  • Valitse laatikko Attach existing policies directly
  • Kirjoita hakukenttään AmazonSESFullAccess
  • Valitse se täppäämällä valintalaatikko

Klikkaa Next: Tags ja perään heti Next: Review

Tarkista, että tiedot ovat antamasi ja klikkaa Create user

Kirjautumistiedot

Nyt olet luonut käyttäjätiedot ja sinulle näytetään yhden ja ainoan kerran

  • Access key ID
  • Secret access key

Ota ne talteen ja/tai lataa tarjottu CSV-tiedosto. Et saa näitä tietoja enää uudestaan näkyviin. Jos hukkaat ne, niin voit tulla takaisin tänne ja luoda uudet avaimet. Silloin joudut vaihtamaan ne myös jo asennettuihin.

DNS-tiedot

Koska ollaan vielä Amazonin puolella, niin laitetaan samalla vaadittavat DNS-tiedot kuntoon. Ne asetetaan siellä missä sitten domainisi nimipalvelintiedot ovat. Omassa tapauksessani avaan DigitalOceanin hallinnan, klikkaan Manage >  Domains ja haluttu domain.

WordPressin tapauksessa kannattaa hyväksyttää domain, josta postit tulevat. Toinen vaihtoehto olisi hyväksyttää erillinen osoite tai osoitteet, jokainen erikseen. Domainin hyväksyttäessä voit käyttää eri yhteyksissä erilaista sähköpostia, kunhan domain on sama. Eli yhteydentottolomake voi vahvistaa osoitteella info@example.com, kauppa osoitteella myynti@example.com ja WordPressin järjestelmä kulkee osoitteella admin@example.com.

Lisättävät DNS-tiedot saat Amazonin SES-sivulta. Avaa Services ylhäältä ja otsikon Customer Engagement alta löydät Simple Email Service. Tai klikkaat suoraan tästä. Samalta sivulta saat muuten tulevaisuudessa perustilastot.

  • Klikkaa vasemmasta valikosta Domains.
  • Klikkaa ylhäältä nappulaa Verify a New Domain
  • Anna domainin nimi
  • Jos haluat DKIF-tiedot, niin täppää ruutu (auttaa hieman, ettei posteihin suhtauduta spämminä)
  • MX-tietue asennetaan vain, jos haluat vastaanottaa sähköposteja (vaaditaan erillinen asennus). Älä aseta, jos sinulla on toinen MX asennettuna
  • Laita saadut TXT- ja CNAME-tiedot DNS-tietoihin. Saat tiedon sähköpostiin, kun domain on vahvistettu.

 

Pois hiekkalaatikosta

Oletuksena, estääkseen spämmin, luotu tili on hiekkalaatikossa ja sillä voi lähettää sähköpostia ainoastaan Amazonilla erikseen hyväksyttyihin domainehin. Tarkoittaa sitä, että et pysty vielä hyödyntämään SES-palvelua. Joten pyydetään tuohon muutos.

  • Klikkaa linkkiä SES Sending Limits Increase case (ei, en ole löytänyt tätä suoraan valikoista mistään, mutta se tehdään Supportin kautta)
  • Valitse Service limit increase ja skrollaa alaspäin

Täytä kohdan Case classification pyydetyt tiedot.

  • Limit type: SES sending limits
  • Mail type: valitse sopiva, mutta Transactional taitaa olla helpoin menemään alussa läpi
  • Website URL: sivustosi osoite
  • Describe how you will comply… : kaikki ohjeet neuvovat laittamaan yes, mutta minä sävelsin muuta, joka sekään ei vastaa kysymykseen how…
  • Describe how you will only send to recipients…: huvittavaa, mutta osa ohjeista kehoittaa laittamaan tähänkin yes
  • Describe the process that you will follow when you receive bounce…: onko yllättävää, että monet ohjeet neuvovat tähänkin yes
  • skrollaa alaspäin

Oleellista on tajuta kaksi asiaa. Nyt ei vaadita virheetöntä englantia todellakaan, sillä Amazon työskentelee globaalisti – eikä suurin osa angloistakaan osaa englantia. Joten kyllä, voit käyttää Googlen kääntäjää. Ole lyhyt, mutta asiallinen. Ja yritä olla antamatta itsestäsi spämmerin kuvaa.

 

 

Täytä kohdan Requests tiedot.

  • Region: edellä valitsemasi alue, luultavasti EU (Ireland)
  • Limit: Desired daily sending quota
  • New limit value: arvioi päivässä lähettämäsi määrät; voit ja täytyy pyöristää ylöspäin, mutta heti alkuun ei varmaan kannata ehdottaa mitään 100K määriä. Oletus on 200 postia 24 tunnissa, joka on turvallinen määrä hyvin rauhalliselle sivustolle, jonne ei rekisteröidytä joka päivä tai verkkokaupalle, jossa ostoksia tehdään enintään yksi päivässä. Eikä ole mitään sivuston sisäistä valvontaa. Laita joku järkevä määrä, sillä joka tapauksessa ensimmäinen pykälä, johon sinut nostetaan, on 50 000 sähköpostia 24 tunnin aikana.
  • Voit myös pyytää max send raten muutosta. Hiekkalaatikon oletus on yksi maili sekunnissa eli 3600 sähköpostia tunnissa, mutta se on teoriaa, koska 24 tunnin rajoitus on 200 sähköpostia yhteensä. Kun sinut siirretään pois hiekkalaatikosta, niin max send rate nousee suoraan 14 lähetykseen sekunnissa eli 50400 tunnissa. En katsonut tarpeelliseksi pyytää tuon nostamista, koska tunti koko 24 tunnin saldon lähettämiseen on siedettävän rajoissa…

Täytä Case description.

Sinun pitäisi kuvailla mitä postitat ja miksi. Taas kerran, oikeakielisyys ei merkitse mitään, mutta asiaa varmaan kannattaa kirjoittaa.

 

Jos haluat vaihtaa yhteydenoton kielen kiinaksi, niin se onnistuu alempaa. Muutoin klikkaa Submit.

Saat sähköpostiin parikin ilmoitusta uudesta casesta. Sitten vain odotat. Hyväksymiseen tai hylkäämiseen menee arkena yleensä päivä. Itse tein ensimmäisen muutoksen perjantai-iltana kello 20 paikkeilla ja lauantaiaamuna oli vahvistus muutoksesta sähköpostissa.

Offload SES Lite

Tuossa vaiheessa ei vielä mikään sähköposti lähde sivustoltasi, vaikka olisitkin jo päässyt pois Amazonin hiekkalaatioklta. Tarvitset lisäosan, joka välittää postit. Sinulla on jo luultavasti asennettuna joku, kuten vaikka WP Mail SMTP tai vastaava, mutta vilkaise tätä:

https://fi.wordpress.org/plugins/wp-ses/

Se on itseasiassa toimivampi vaihtoehto, jos päätät käyttää SES:iä postien liikutteluun. Lisäosan tekijä on melkoisen hyvämaineinen ja tekee laatutyötä. Lisäksi jos päätät siirtyä heidän maksulliseen vaihtoehtoonsa, joka mahdollistaa mm. tilastot ja yksittäisen postin uudelleenlähetyksen, niin hinta on kylläkin minusta hieman suolainen. Avaus- ja klikkitilastot liittyvät enemmälti sähköpostimarkkinoinnin seuraamiseen – ja aidosti vain uteliasuuteen, koska ilmoitetut määrät ovat aina hyvinkin epäluotettavia. Mutta jos niitä kokee tarvitsevansa, niin silloin maksaminen kannattaa. Kuten sanottua, niin Delicious Brainin lisäosat ovat olleet erittäin korkealuokkaisia ja luotettavia.

WP Mail SMTP-käyttäjät eivät muuten saa asennettua SES:iä ostamatta premium sopimusta.

Vaikka asennat ja asetat tämän, niin älä ota vielä edeltävää SMTP-lähettäjää pois päältä. Jos sen teet, niin sähköpostisi eivät liiku sivustolta. Poista se käytöstä vasta kun SES alkaa toimimaan.

Asetukset

Voit käyttää heidän wizardiaan, mutta se ei käytännössä tee muuta kuin kävelyttää suunnilleen samat vaiheet läpi, kuin mitä edellä on esitetty. Helpommalla pääset, kun menet suoraan asetuksiin pluginin etusivun linkistä. Myöhemmin pääset samaan paikkaan polkua Asetukset > Offload SES.

General-välilehti esittää asetukset. Älä koske vielä kolmeen ensimmäiseen kytkimeen

  • Send mail using SES
  • Enable Open Tracking
  • Enable Click Tracking

vaan anna olla harmaana siihen asti, että Amazon on hyväksynyt sinut. Kun hyväksyntä on tullut, niin noit kytkeä ne päälle.

Muut sen sijaan voidaan asentaa.

  • Region: se minkä laitoit SES-asennuksessa, luultavasti EU (Ireland)
  • WordPress Notification Email: näkyy lähettäjän osoitteena
  • WordPress Notification Name: näkyy lähettäjän nimenä
  • Reply To: jos haluat erillisen vastausosoitteen, muutoin jätä tyhjäksi
  • Return Path: osoite, johon bouncet (ei vastaanottajaa jne) sekä valitukset lähetetään
  • Delete Logs: kuinka usein logit tyhjennetään

AWS Access Keys -välilehti on paikka, jonne voisi laittaa saadut public- ja secret-avaimet. Silloin ne tallennetaan tietokantaan ja haetaan sitä kautta aina. Käytetään kuitenkin hieman turvallisempaa ratkaisua.

Avaa WordPressin wp-config.php (vaihda polku oikeaksi):

nano /var/www/html/wp-config.php

tai muokkaa FTP:llä.

Lisää alkuun tämä. Muokkaa tähtien paikalle, heittomerkkien väliin, luomasi public- ja secret-avaimet.


define( 'WPOSES_AWS_ACCESS_KEY_ID', '********************' );
define( 'WPOSES_AWS_SECRET_ACCESS_KEY', '**************************************' );

Muut SMTP-lisäosat

Jos käytät sähköpostin välittämiseen jotain muuta lisäosaa, joka ei osaa käyttää saatuja public- ja secret-avaimia, niin sinun on luotava perinteisemmän käyttäjätunnus/salasana -parin. Jos et ehdottomasi tarvitse niitä, niin älä. Ne eivät ole avainten kanssa päällekkäisiä asioita.

Mene SES-sivulle. Varmista oikeasta yläkulmasta, että Region on oikea.

  • Klikkaa vasemmasta valikosta SMTP Settings
  • Klikkaa sinistä nappulaa Create My SMTP Credentials
  • Hyväksy tarjottu IAM-käyttäjä (”pseudokäyttäjä”, jolla on oikeus maililiikenteeseen)
  • Ota talteen SMTP:n käyttäjätunnus ja salasana

Lisäosassa lähettävän SMTP-palvelimen tiedot ovat:

  • Server name: email-smtp.eu-west-1.amazonaws.com (tosin riippuen missä regionissa olet, tuo on EU (Ireland))
  • Port: 25, 465 or 587 (käytännössä ei koskaan 25, harvemmin 465 ja varsinkin virtuaaliservereillä aina 587)
  • TLS: kyllä
  • Tunnisteet: tunnuksesi ja salasanasi

PHPMailer

Suurin syy käyttää WordPressissä jotain SMTP-lisäosaa on halu välttää WordPressin sisäänrakennettua tapaa lähettää sähköpostit PHP:n avulla. WordPressin sisäänrakennettu tapa tehoton ja hankala tapa, mutta se on kompromissi toiminnallisuuden ja erilaisten ympäristöjen välillä ja edellyttää, että serveri osaa lähettää posti ulospäin. Mutta toki sitäkin voi halutessaan käyttää. Lisäosat useimmiten tarjoavat jotain  lisäarvoa, kuten esimerkiksi logit lähetetyistä emaileista, mutta jos niitä ei tarvitse, niin lyhyellä skriptilläkin pärjää.

Pieni disclaimer. Pääsääntöisesti eksis.onessa esitellyt ratkaisut on ainakin kertaalleen asennettu ja kokeiltu ohjeiden mukaisesti. Tätä en ole kokeillut, joten en tiedä toimiiko aidosti. Testaamalla selviää.

Kopioi allaoleva koodi joko (lapsi)teeman functions.php -tiedostoon tai mieluummin Snippets-lisäosaan.

Postfix

Jos olet virtuaaliserverillä, etkä halua käyttää lisäosaa sähköpostien lähettämiseen, niin silloin sinun on pakko asentaa joku systeemi järjestelmään. Sama tulee eteen, jos käytät palvelimella jotain joka haluaa lähettää postia, vaikka Monitia järjestelmän seurannassa. Postifix juttelemassa Amazon SES:n kanssa on toimiva ratkaisu.

Voit käyttää Amazonin SES:iä virtuaaliserverin ”järjestelmäpostina” Postfixin kautta eli releenä (mail relay). Jos sinulla ei ole Postfixiä paikallaan, niin asennetaan se ensin. Koska itse kirjaudun shelliin aina root-tunnuksella, niin en tarvitse sudo -komentoa. Jos sinä käytät omaa tunnustasi, niin laita aina sudo eteen.

Joudut huomioimaan yhden asian, jotka on tai voi olla eri tavalla kuin WordPress-asennuksessa. Fixmail ei osaa käyttää public/secret-avaimia, joten tarvitset SMTP-tunnukset. Edellisessä kappaleessa Muut SMTP-lisäosat on selitetty miten saat ne.

Aloitetaan päivittämällä:

apt update
apt dist-upgrade

Laitetaan asennusta varten muutama asetus kohdalleen, niin saadaan työ hiukan joustavammaksi.

  • Kerrotaan, että Postfix toimii releenä:
debconf-set-selections <<< "postfix postfix/main_mailer_type select Satellite system"
  • Kerrotaan Postifixille, että serverin hostname on myös mailiserverin hostname:
debconf-set-selections <<< "postfix postfix/mailname string $HOSTNAME"
  • Käsketään Postfix käyttämään välitettäviin posteihin SES-palvelua. Muuta SMTP-palvelimen osoite, jos sinulla on käytössä joku muu region kuin EU (Ireland).
debconf-set-selections <<< "postfix postfix/relayhost string [email-smtp.eu-west-1.amazonaws.com]:587"
  • Asennetaan Postfix:
apt -y install postfix
  • Oletko jo aiemmin asentanut Postfixin? Siinä tapauksessa pääset asetuksiin tällä:
dpkg-reconfigure postfix
  • Kerrotaan Postfixille SES:n käyttäjätunnus ja salasana. Avataan kirjautumistiedot sisältävä tiedosto:
nano /etc/postfix/sasl_passwd
  • Laita tiedostoon muodossa SMTP-palvelin tunnus:salasana:
[email-smtp.eu-west-1.amazonaws.com]:587 paljon-merkkejä-tunnuksessa:enemmän-merkkejä-salasanassa
  • Tiedosto sasl_passwd on selkokielinen tiedosto, joten turvataan se varmistamalla, että omistajuus on root-tunnuksella:
chown root:root /etc/postfix/sasl_passwd
  • Laitetaan luku- ja kirjoitusoikeudet vain root-tunnukselle:
chmod 600 /etc/postfix/sasl_passwd
  • Käsketään Postfixiä käyttämään uusia kirjautumistietoja:
postmap /etc/postfix/sasl_passwd
  • Estetään anonyymien kirjautuminen ja kiristetään turvallisuutta:
nano /etc/postfix/main.cf

Lisää tämä main.cf-tiedoston loppuun:

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_tls_note_starttls_offer = yes
  • Tarkista löydätkö rivin -o smtp_fallback_relay=
    Jos et löydy, niin kaikki on hyvin. Jos löydät, niin kommentoi se laittamalla # rivin alkuun
  • Tehdään hash tunnus/salasanaparista:
postmap hash:/etc/postfix/sasl_passwd
  • Käynnistetään Postfix:
systemctl start postfix
  • Tai käynnistetään se uudelleen, jos se on jo käynnissä:
systemctl restart postfix

Jos sinulla on host-nimi sama kuin FQDN, niin sinun ei tarvitse tehdä tätä vaihetta. Minulla host on site, joka ei ole FQDN, joten joudun tekemään asian, jonka nimi on domain mapping. Yksinkertaistettuna kerron, että osoite root@site (tai mikä tunnus lähettäjä onkaan) näkyy lähettäjän osoitteena server@katiska.info. Jos olet DigitalOceanin asiakas, niin host on sama kuin asettamasi dropletin nimi ja jos haluat vaihtaa sen, niin joudut muuttamaan hallinnassa dropletin nimeä.

  • Luodaan mapping-tiedosto:
nano /etc/postfix/generic

Lisää sinne tarvittavat osoitteet. Voit laittaa useamman eri riveille, jos sinulla on tarvetta, kuten että asennat useamman alidomainen kerralla. Ns. aidon lähettäjän nimiosa ennen @-merkkiä saa olla ihan mitä tahansa, kunhan domain on SES:ssä hyväksytty domain (tai itse sähköpostiosoite on hyväksytty). Minä lisään tämän, mutta muuta se sinulle sopivaksi:

root@site server@katiska.info
  • Kerrotaan ”uudelleenohjaus” Postfixille:
postmap /etc/postfix/generic
  • Se täytyy kertoa myös Postfixin konfiguraatiotiedostossa:
nano /etc/postfix/main.cf

Lisää tämä tiedoston loppuun:

smtp_generic_maps = hash:/etc/postfix/generic
  • Ja taas täytyy käynnistää Postfix uudestaan:
systemctl restart postfix
  • Päästetään maailma postfixin näkyville, eli avataan portti 587. Se täytyy olla juurikin 587, koska käytännössä jokainen virtual hosteja tarjoava on sulkenut muut mailien välitykseen käytetyt portit. Toki ufw app list tarjoaa postfixille kolmekin vaihtoehtoa, mutta niistä ei ole mitään iloa.
ufw allow 587

Postfixin testaus

Serverin kyky lähettää emaileja testataan komentoviltä.

Jos tämä on Postfixin ensiasennus, niin asennetaan hieman lisää softaa.

apt -y install mailutils

Ja lähetetään simppeli maili:

mail -s "Hei, olen otsikko" joku-oikea-mailiosoitteesi <<< "Tässä olisi sähköpostin tekstiä"

Jos tuo löytää tiensä perille, niin hienoa. Jos ei, niin tarkista ensin kaikki asetukset. Voit aloittaa serverin maililogista josko se antaisi hieman osviittaa siitä mikä meni pieleen:

tail -n 100 /var/log/mail.log

Minulla on muutamankin kerran jäänyt sähköpostit lähettämättä, ja logi on kertonut bouncen syyksi kirjautumisongelmat. Silloin syy on yleensä kahdessa: Amazonin mailiserveri on väärin tai tunnus/salasana-pari on väärin.

Varsinkin serverin osoitteen kanssa on saanut painia pariin otteeseen. Välillä riittää, että relay-osoite on main.cf tiedostossa muodossa email-smtp.eu-west-1.amazonaws.com ja jossain muualla muutoin identtisessä asennuksessa se täytyykin olla [email-smtp.eu-west-1.amazonaws.com]:587 – viimeinen on nykyään toiminut luotettavammin.

Huomaa myös, että esimerkeissä käytän regionia Ireland, koska aikoinaan muuta ei ollut ja SES on minulla rakennettu sinne. Jos/kun olet asentanut enemmältäkin kopypeistausmentaliteettilla, ja oletkin käyttänyt jotain muuta regionia, niin osa eu-west-1 on väärin ja se pitäisikin olla esimerkiksi eu-west-2.

Testaus

Ennen kuin testaat, niin ota nykyinen SMTP-maileri pois päältä.

Lähetä sähköpostia sivustolta kaikista mahdollisista paikoista, mukaanlukien yhteydenottolomakkeet. Tee verkkokaupoissa koeosto ja varmista, että kaikki toimii. Poista vasta sen jälkeen aikaisempi postittaja.

Luultavasti kaksi yleisintä syy siihen, että SES hylkää lähettäjän, ovat

  • ylläpitäjän osoite ei ole hyväksytyn domainin  osoite, vaan esimerkiksi gmail-osoite; vaihda osoite tai hyväksytä SES:n sivulla gmai-osoite lähettäjäksi
  • yhteydenottolomake (contack form) käyttää lähettäjän osoitteena käyttäjän antamaa osoitetta; syy tähän on helpompi mahdollisuus vastata kyselyihin, mutta siinä voisi käyttää reply to -kenttääkin – joten tarkista saako tuon vaihdettua asetuksista ja jos ei, niin yhteyttä contact formin tekijään tai laita lisäosa vaihtoon

Connect ja disconnect koko ajan

Saatat löytää mail.log tiedostosta vastaavan tapaiset rivit toistumassa uudelleen ja uudelleen tasaisin väliajoin. Silti sähköpostit liikkuvat normaalisti ja lähetys näkyy logissa kuten kuuluukin:


Apr 22 16:27:38 backend postfix/smtpd[11535]: connect from localhost[127.0.0.1]
Apr 22 16:27:38 backend postfix/smtpd[11535]: disconnect from localhost[127.0.0.1] ehlo=1 quit=1 commands=2

Tuo ei ole virhe, vaan ilmoitus siitä, että jokin ohjelma käynnistää Postfixin localhostissa ja sammuttaa yhteyden samantien tekemättä mitään. Yleensä kyse on jonkin valvontaohjelman, kuten Monitin, pingi. Siinä ainoastaan tarkastetaan, että postipalvelin on pystyssä ja toimii.

Itselläni tuo tuli Monitin toimesta kerran minuutissa ja siitä ei ole sinällään mitään haittaa. Kyse on aivan samasta kuin että websivustoa pingataan, että tiedetään sen olevan toiminnassa. Ongelmanpoikasta on siinä, että se  täyttää login ja jos joutuu penkomaan jotain oikeaa virhetilannetta, niin halutun tiedon löytäminen voi olla tuskaa.

Monitin kanssa ongelman aiheutti tämä rivi postfixin seuranta-asetuksissa:

if failed host localhost port 25 with protocol smtp for 2 times within 3 cycles then restart

Koska virtuaaliserverillä ei ole mitään mieltä seurata porttia 25, joka on suurimmassa osassa, ellei kaikissa, suljettu, niin muutin sen selvittämään relay host osoitetta portin 587 kautta:


if failed host email-smtp.eu-west-1.amazonaws.com port 587 
type tcp protocol smtp using tls
with timeout 15 seconds
then alert

Nyt testit eivät enää ilmaannu logiin.

Mitä seuraavaksi?

Nyt saat sähköpostit maailmalle. Ratkaistava ongelma on saada tehtyä ne sähköpostit, varsinkin jos haluat käyttää sähköpostia markkinointiin. Silloin saat laskea ilmaiset vaihtoehdot yhden käden sormilla. Maksullisissakin on suunnaton hajonta, puhutaan haarukasta 50 euroa vuosi, mutta melkoisen tyypillisesti tuo on alkaen kuukausi. Villein tapaamani velotti lähes Mailchimpin hinnan, ja tarjosi vain lisäosan emailin kirjoittamiseen, lähettämisestä piti maksaa itse erikseen.

Mutta suurimpaan hätään voi tutustua tähän juttuun:

https://www.eksis.one/ohjeet/lisaosat/mailster-sahkopostilista-ja-automaattinen-ilmoitus/

Myös sisääntuleva sähköposti?

Saat asennettua SES:n ottamaan myös vastaan sähköposteja ja ihan millä tahansa haluamallasi sähköpostiosoitteella (kunhan omistat domainin). Sen jälkeen ohjaat saapuneet johonkin sellaiseen osoitteeseen, joka sinulla on jo – vaikka siihen Gmailiin. Eikä tarvitse maksaa ekstraa per käytössä oleva sähköpostiosoite.

Ohjeet löytyvät täältä:

https://www.eksis.one/ohjeet/sahkoposti/amazon-ses-ja-sahkopostipalvelin/

Viimeinen muistutus

Seuraa koko ajan bounce-määrää. Sen on pysyttävä alle 5 prosentissa lähetettyjen määrästä ja jos se iskee 10 prosenttiin, niin tilisi menee kiinni. Sen saa aukaistua kun on osoittanut, että mikä sitten onkaan ollut pielessä, on korjattu ja toimimattomat osoitteet on siivottu.

Bounceja pomppii aina. Ei sille mitään voi. Varsinkin vanhat suomi24-osoitteet ovat hankalia. Mutta niiden määrään voi vaikuttaa muutamalla tempulla:

  • poista toimimattomat osoitteet heti
  • pidä huoli, että tarjoat linkin postituslistaltasi eroamiseen
  • toimita lukijankin mielestä hyvää sisältöä