Osin valmiina saadussa sovelluksessamme osa mail() funktion lähettämistä viesteistä ei mene perille hotmailiin tai gmailiin. Luultavasti syynä roskapostisuodatus. Mistä voisi johtua, että osa viesteistä kuitenkin menee perille?
Roskapostisuodatus perustuu heuristiikkaan eli valistuneisiin arvauksiin. Jotkut viestit menevät "sattumalta" läpi ja toiset eivät. Yleensä filtteriin jäämisen syynä on se, ettei viestin lähettäjä noudata alan hyviä käytänteitä, mikä johtaa periaatteessa aiheettomiin spammipisteisiin.
Kannattaa käyttää esimerkiksi Swift Mailer -kirjastoa. Huonoin vaihtoehto on lähteä arpomaan itse mail()-funkkarilla, sillä php:n matalan tason sähköpostitusominaisuudet vaativat hyvää tuntemusta viestittelyn teknisistä detaljeista.
Mieti ainakin näitä: Miltä palvelimelta posti lähtee? Mikä on merkitty lähettäjän osoitteeksi? Saako kyseinen palvelin edes lähettää tuon lähettäjän postia? (Ovatko SPF- ja DKIM-asetukset oikeat?) Monelleko vastaanottajalle sama viesti menee? Onko kyseessä massapostitus?
Yksinkertainen tapa asian tutkimiseen olisi vertailla itse saapuneita ja kadonneita viestejä. Viestit saa talteen vaikka laittamalla ne piilokopioina osoitteeseen, johon ne varmasti pääsevät.
Kyseessä ei ole massapostitus. Viesti vain kyseiselle henkilölle. Lähettäjänä on meidän oman palvelimen osoite.
EDIT. Nyt selvisikin, että hotmailiin ei mene mikään läpi.
SMTP-palvelimen lokitiedoista tms. voi löytää virheen syyn. Todennäköinen syy ongelmalle on se, että palvelimella on jotenkin ”huono maine”. Jotkin palvelimet kertovat, miksi eivät ota viestejä vastaan, ja jotkin vain eivät ota.
Palvelin päätyy estolistalle, jos se esimerkiksi lähettää automaattivastauksia roskapostiviesteihin (esim. kun vastaanottajaa ei ole) tai on muuten altis roskapostitukselle. Roskaposti pitää suodattaa hiljaisesti pois.
Domain päätyy estolistalle, jos siitä tulee roskapostia. Siksi SPF ja DKIM ovat tärkeät: niillä saa merkittyä, että oman palvelimen posti on oikeaa ja muiden palvelinten posti väärää.
Vaikka oma palvelin olisi täysin kunnossa, posti ei välttämättä ala kulkea joka paikkaan. Jos läheisistä IP-osoitteista lähtee spammia, voidaan varalta blokata isompikin IP-lohko. (Esimerkiksi DigitalOceanin VPS:ssä vaikuttaa olevan tämä ongelma.) Lisäksi joillain palvelimilla on nerokas keksintö blokata posti heikosti tunnetulta palvelimelta – ja millä se palvelin sitten saa paremman maineen, jos se ei pysty lähettämään edes hyviä viestejä?!?
Jos palvelimelta lähtee paljon postia (kymmeniä tai satoja viestejä päivässä) ja omat ongelmat on korjattu, varmaankin se pääsee vähitellen irti noista rajoituksista. Toisaalta esimerkiksi Ohjelmointiputkan postimäärällä vaikuttaa hankalalta saada riittävää positiivista viestikertymää, minkä takia täältä postit lähtevät ainakin osittain ulkopuolisen palvelimen kautta.
Jos postit ovat tärkeitä ja ne pitää saada toimimaan heti varmasti, kannattaa suosiolla maksaa ulkopuolisen postipalvelimen käytöstä.
Pari sivustoa:
https://www.spamcop.net/bl.shtml
https://www.talosintelligence.com/
Ongelma taitaa olla tosiaan siinä, että aluksi mentiin mail()funktiolla oletuksilla. Vika taitaisi olla smtp korjattavissa asetuksissa, mutta palvelin on estänyt jonkin portin, joten en pääsen testaamaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.