Microsoft Exchange connector configureren voor Laravel applicaties
We leggen in drie stappen uit wat je moet configureren om je Laravel applicatie te laten mailen via Microsoft 365.
Context & voorbeeld
Onlangs liepen we tegen problemen aan om een Laravel applicatie te koppelen met Office 365 Exchange. Voor onze klant Firma X hebben we een website in Laravel gebouwd. Er is een contactformulier op www.firma-x.nl die bezoekers een bevestiging mailt vanaf het mailadres info@firma-x.nl, wanneer ze het formulier inzenden. Firma X gebruikt Office365 om de mail te hosten. Het IP van de Firma X server is 223.6.16.1.
Wat heb je nodig?
- Toegang tot hosting / applicatie
- Toegang tot het domeinnaam register en DNS
- Toegang met admin rechten tot het Microsoft 365 Beheercentrum en het Exchange Admin Center.
- Het static IP van je webhostingpakket waar je Laravel app staat.
Je kunt alle stappen van Microsoft volgen om een SMTP connector aan te maken, maar sommige stappen vonden wij verwarrend waardoor we er 6 uur over gedaan hebben… Daarom hierbij een uitleg voor simpele zielen zoals wij die niet vaak in Microsoft 365 komen. Hiermee zou het binnen 10-20 minuten moeten werken.
Stappen
We gaan deze drie dingen doen:
- A. Connector aanmaken
- B. DNS configureren
- C. Laravel configureren
A. Connector aanmaken
- Log in bij het Exchange admin center
- Ga naar Mailflow > Connectors
- Klik op ‘+ Add a connector’
- Kies ‘Your organization’s email server’. Klik op ‘Next’.
- In het ‘Connector name’ scherm kan je een naam en beschrijving naar keuze geven. Laat eventuele vinkjes staan zoals ze staan.
- In het ‘Authenticating sent mail’ scherm, kies de optie ‘By verifying that the IP address of the sending server matches one of these IP addresses that belong to your organization’. Vul in het veld het static IP van je webhostingpakket in, en klik op + om het toe te voegen.
- Klik ‘Next’.
- Controleer de gegevens in het laatste scherm en maak de connector aan.
B. DNS configureren
- Log in bij het Microsoft 365 admin center
- Ga naar Settings > Domains.
- Klik op het (standaard) domein waarop je e-mail draait.
firma-x.nl (Standaard)
- Ga naar DNS-records.
- Klik in de tabel op MX. Er opent een zijpaneel.
- Kopieer de waarde van het MX-record. Dit ziet zo uit:
firma-x-nl.mail.protection.outlook.com
. Bewaar deze waarde, want die heb je straks ook nodig voor de configuratie van je Laravel app.
Log nu in bij je domeinnaambeheer.
- Maak een nieuw MX-record aan. Voeg
firma-x-nl.mail.protection.outlook.com
in bij je DNS met prioriteit0
. - Update je SPF-record met de volgende waarde:
v=spf1 ip4:223.6.16.1 include:spf.protection.outlook.com ~all
. - Optioneel: zet de
TTL
bij beide records tijdelijk op 5 minuten om het testen te versnellen, mocht je een foutje hebben gemaakt.
C. Laravel configureren
- Ga naar je laravel applicatie en open het
.env
bestand. - Gebruik de onderstaande gegevens:
+ MAIL_MAILER=smtp
+ MAIL_HOST=firma-x-nl.mail.protection.outlook.com
+ MAIL_PORT=25
- MAIL_USERNAME=info@firma-x.nl
- MAIL_PASSWORD=MiepVanDeAdministratie
+ MAIL_FROM_ADDRESS=info@firma-x.nl
+ MAIL_FROM_NAME=”Firma X"
-
Zoals je ziet zijn
MAIL_USERNAME
enMAIL_PASSWORD
niet nodig omdat je domein is geauthenticeerd via de connector. Verder wellicht overbodig, maar zorg dat poort25
bruikbaar is. Een andere optie is namelijk niet toegestaan door Microsoft. -
Stuur een testmail met bijvoorbeeld dit testscript in
php artisan tinker
:Mail::raw('Test123', function($message){ $message->to('your@email.com'); });
Als het mailtje binnenkomt en als je een response krijgt vergelijkbaar met
= Illuminate\Mail\SentMessage {#7460}
is alles hoogstwaarschijnlijk goed ingesteld.
Update
Als alles werkt moet je niet vergeten het TTL van je DNS terug te zetten naar 1 uur.
Vragen of opmerkingen
Heb je vragen? Of klopt er iets niet? Stuur ons even een mailtje via info@q2-software.nl of join Discord.