Få Postfix til at sende mails gennem SendGrid

Nogle VPS udbydere tillader dig ikke at sende mails fra din egen SMTP server. I denne artikel vil jeg forklare hvordan du kan opsætte Postfix til at sende gennem SendGrid.

Postfix er en SMTP server som mange har installeret på deres server for at kunne sende mails. Desværre er der nogle VPS udbydere der blokerer for udgående mails, hvorfor du ikke kan have din egen selvstændige SMTP server der klarer hele arbejdet med at sende mails. En af dem er DigitalOcean, der har besluttet at blokere for bl.a. port 25 som anvendes til at sende mails med. Det gør at du er nødt til at finde et alternativ.

Alternativet er som regel en ekstern e-mailservice, som sørger for at sende mails ud. Her kan man fx. vælge SendGrid, fordi de er gratis så længe du sender under 100 mails hver dag, hvilket vist gælder de fleste.

Opret API nøgler og Sender Identity på SendGrid

Du opretter en gratis profil på SendGrid, og så opretter du en API nøgle under Settings og API keys. Skriv et navn (fx. SMTP) og vælg Full Access og opret så nye API nøgler. Når du får API nøglen skal du sørge for at gemme den, fordi du kan ikke finde den på SendGrid senere igen. Så skal du oprette nye API nøgler igen.

Udover at du skal have nogle API nøgler, skal du også oprette en Sender Identity i SendGrid, for at du får lov til at sende mails her igennem. Det kan du gøre på to måder:

  • Single Sender Verification
  • Domain Authentication

Du opsætter Single Sender Verification i SendGrid under Settings og så Sender Authentication. Med Single Sender Verification skal du verificere hver enkelt e-mailadresse du har tænkt dig at sende mails fra. Det er let, men omstændigt hvis du skal sende mails fra mange e-mailadresser.

Med Domain Authentication skal du have adgang til DNS indstillinger for dit domæne. Det gør du også via Settings og så Sender Authentication, hvor du følger guiden her. Du får tre CNAME records du skal tilføje til din DNS server, og så bagefter bekræfte, og så er dit domæne verificeret.

Selvom du har oprettet API nøgler og godkendt dine domæner, er det dog ikke sikkert at det virker med det samme i SendGrid. Det skyldes at nye brugere hos SendGrid lige skal godkendes, og i toppen af siden vil der derfor stå:

Review. Your account is under review and we'd like to know a little more about you and how you intend to use Twilio SendGrid. Contact Us

Her skal du trykke på Contact Us og udfylde oplysningerne, og når SendGrid så har modtaget dem og godkendt dig skulle det gerne virke. Indtil da, vil du under Activity kunne se at dine mails står som “Processing”, og altså derfor endnu ikke leveret. Men når du er godkendt, skulle de gerne sendes videre.

Opsæt Postfix til at sende via SendGrid

Jeg går ud fra du allerede har installeret Postfix på din server, det vil jeg derfor ikke komme nærmere ind på i denne artikel. Det du først skal gøre er at opdatere konfigurationsfilen for Postfix, så den ved at den fremover skal sende mails via SendGrid. Du åbner konfigurationsfilen ved at skrive følgende i din terminal:

cd /etc/postfix/
nano main.cf

Nu går du helt ned i bunden og tilføjer denne kode:

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_tls_security_level = encrypt
header_size_limit = 4096000
relayhost = [smtp.sendgrid.net]:587

Gem det hele ved at trykke CTRL+X, så y for yes og så enter for at gemme. Nu skal der oprettes en ny fil i mappen /etc/postfix/ som hedder sasl_passwd, hvor du skal gemme den API nøgle du har fået fra SendGrid. Den opretter du med følgende kommando i terminalen:

nano sasl_passwd

I denne fil skal du indtaste følgende kode hvor du erstatter yourSendGridApiKey med den API nøgle du har fået fra SendGrid. Bemærk der stadig skal stå apikey: foran, fordi det er brugernavnet for den SMTP server som SendGrid bruger.

[smtp.sendgrid.net]:587 apikey:yourSendGridApiKey

Denne fil gemmer du også ved at trykke CTRL+X, trykke y for yes og så enter. Nu skal der styr på rettighederne til filen, du indtaster derfor følgende i din terminal:

sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd

Så genstarter du Postfix for at få Postfix til at bruge de nye indstillinger:

sudo systemctl restart postfix

Det kan være du får fejlmeddelelsen no mechanism available.

apt-get install libsasl2-modules

Nu skulle du gerne kunne sende mails på din server, som så bliver dirigeret gennem SendGrid. Du bruger de SMTP serveradresser du har oprettet i Postfix, og Postfix sørger så selv for at dirigere dem gennem SendGrid. En anden fordel med denne metode er at dine mails formentlig ikke i samme grad vil blive stemplet for at være spam, som de ville hvis du kørte med din helt selvstændige SMTP server.

Forskellige fejl du kan opleve

Undervejs har jeg selvfølgelig oplevet nogle forskellige fejl, da jeg skulle opsætte dette og dem vil jeg lige dele her.

Ved en opsætning oplevede jeg at mailen aldrig kom frem, og kiggede jeg i mailloggen kunne jeg se at der stod at sasl_passwd ikke eksisterede (hvilket selvfølgelig ikke var korrekt. Jeg prøvede her bl.a. at ændre rettighederne til filen med denne kode:

chmod 640 /etc/postfix/sasl_passwd

Alternativt kan du forsøge at oprette filen med denne kommando i stedet for.

sudo postmap sasl_passwd

En anden interessant ting jeg oplevede var at forwarders ikke fungerer korrekt. Det gør de ikke, fordi en forwarder virker kun hvis afsenderen af den oprindelige mail er en godkendt sender identity hos SendGrid. I email loggen står der så “The from address does not match a verified Sender Identity. Mail cannot be sent until this error is resolved“. Dette er svært at gøre noget ved, fordi pointen ved SendGrid er netop at alle afsendere skal være godkendte. Og når man forwarder en mail, så er det den originale afsender der sættes på som from-email, hvorfor SendGrid afviser den.

Har du spørgsmål til opsætningen af SendGrid i Postfix, så skriv bare en kommentar nedenunder, så skal jeg prøve at svare på det hvis jeg kan.

5 1 vote
Article Rating

Andreas Andersen

Forfatter og grundlægger af IT-blogger.dk, der har blogget om IT-emner siden 2012. Findes på Mastodon på @aphandersen@ansico.dk

You may also like...

Abonner
Giv besked ved
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x