E-mail versturen op Raspberry Pi en Linux met Nullmailer

Noud van Kruysbergen
0

Inhoudsopgave

    Systeemdiensten zoals cronjobs, SMART-monitors en een RAID-bewaking sturen een e-mail als er wat bijzonders aan de hand is. Web- en andere toepassingen vertrouwen er daarbij op dat de standaardmanier voor het versturen van e-mails werkt. Nullmailer helpt je daar zonder al teveel moeite bij, zodat de e-mails niet ergens stranden.

    Om een programma op een Raspberry Pi een e-mail te laten versturen of belangrijke systeem­berichten van een rootserver te ontvangen, hoef je geen volwaardige mailserver als Exim of Postfix te hebben draaien. Om die alleen voor dergelijke doeleinden helemaal in te richten is wat overkill, waarbij het installeren ook nog eens complex is en foutgevoelig – niemand wil immers een spamverspreider worden.

    Met Nullmailer en Ssmtp bestaan er twee minimale oplossingen voor het versturen van systeemberichten naar vast ingestelde mailadressen. Ook het doorsturen van andere berichten via een server van bijna elke provider is hiermee mogelijk. Ze kunnen via internet geen berichten ontvangen. We laten hier de verschillen zien tussen de twee opties en hoe je ze op de juiste manier configureert en meteen test.

    E-mail versturen

    Maar eerst een stap terug: als een proces op een Unix-systeem een e-mailbericht wil versturen, roept het normaal gesproken het programma sendmail aan. Dat verwacht enkele parameters om het bericht van afzender, ontvanger, onderwerp en inhoud te voorzien. Hoe daarbij de gebruikersnamen van de afzender- en ontvangersadressen ingevuld worden hangt af van meerdere factoren, die afhankelijk van de gebruikte software nogal kunnen verschillen.

    Nullmailer en Ssmtp zijn ervoor geoptimaliseerd om berichten bij een vooringestelde SMTP-server af te leveren (SMTP-relay). Daarvoor geef je meestal de toegangsgegevens op voor die SMTP-server. Daarbij worden de adressen van de afzender en ontvanger zodanig aangepast dat de berichten aankomen en niet stranden bij bijvoorbeeld de mailbeheerder van een bedrijf uit wiens netwerk de berichten verzonden worden, of waar dan ook.

    Beide hebben een eigen sendmail-commando. Daar waar Ssmtp berichten rechtstreeks naar de ingestelde SMTP-servers stuurt en zich daarna meteen afsluit, werkt Nullmailer als een ‘echte’ mailserver: het programma gebruikt een queue waarin de berichten komen te staan die regelmatig wordt afgewerkt. Daarom is er continu een Nullmailer-proces actief. Het versturen via Nullmailer is daardoor wat robuuster, terwijl Ssmtp meer geschikt is als toevoeging in een container.

    Welke van de twee mailers er in je distributie zit, ligt eraan waar die distributie van afstamt: bij systemen uit de Debian-familie zoals Ubuntu en Raspbian voor de Raspberry Pi kun je kiezen uit beide – dan kun je beter de voorkeur geven aan Nullmailer omdat die momenteel nog onderhouden wordt. Bij afstammelingen van Red Hat kom je eerder Ssmtp tegen, hoewel dat oorspronkelijk van Debian-ontwikkelaars komt. Sinds 2014 is daar niets meer aan gedaan, hoewel er wel twijfels zijn over de beveiliging.

    Doorlezen is gratis, maar eerst even dit:

    Dit artikel is met grote zorg samengesteld door de redactie van c’t magazine – het meest toonaangevende computertijdschrift van Nederland en België. Met zeer uitgebreide tests en praktische workshops biedt c’t de diepgang die je nergens online vindt.

    Bekijk de abonnementen   Lees eerst verder

    Nullmailer

    Op een Debian-systeem vervangt het commando apt-get install nullmailer een eventueel al aanwezige mailserver zoals Exim door Nullmailer. Het installeren van het pakket vraagt naar een paar parameters, zoals de SMTP-server van de provider en eventuele aanmeldgegevens. Als je het pakket met dpkg-reconfigure nullmailer nog een keer configureert, kun je nog meer dingen instellen.

    De complete set aan opties is pas toegankelijk in de configuratiebestanden in de directory /etc/nullmailer, die telkens één regel bevatten. De inhoud van het bestand ‘defaultdomain’ wordt door Nullmailer als domein aan de hostnaam gehangen als er in het standaardbestand /etc/mailname niets staat. Dat laatste bestand moet wel zoveel mogelijk informatie bevatten.

    De volgende configuratiebestanden kunnen meerdere regels bevatten: in ‘adminaddr’ zet je de e-mailadressen die alle mails moeten krijgen die naar @localhost worden gestuurd of voor de e-mailnamen zijn bedoeld die in /etc/mailname staan opgeslagen. Dat voorkomt dat e-mails voor bijvoorbeeld de gebruiker root door de SMTP-server van de provider afgewezen worden.

    In het bestand ‘remotes’ staat bij welke server Nullmailer de e-mails moet afleveren. Een regel begint met de naam van de server en wordt gevolgd door een spatie en de mailmethode ‘smtp’. Daarbij kunnen opties voor het versturen toegevoegd worden die bedoeld zijn voor het back-end. Die kun je achterhalen door het commando zelf uit te voeren met de volgende parameter: /usr/lib/nullmailer/smtp –help. Zo ondersteunt Nullmailer met qmqp bijvoorbeeld een achterhaalde Gmail-optie.

    Een voorbeeld van een regel met fictieve naam en toegangsgegevens:

    smtp.example.com smtp –user=peter –pass=temakkelijk –starttls

    Nullmailer zal berichten dan sturen naar smtp.example.com en daarbij een met TLS beveiligde verbinding gebruiken, en zich aanmelden met AUTH PLAIN.

    Nieuwere Nullmailer-versies (hoger dan 1.13), die helaas alleen nog in Debian Testing zitten, werken ook met het bestand ‘allmailfrom’. De inhoud daarvan overschrijft de complete afzender. Daarnaast heeft de ontwikkelaar allerlei uitbreidingen erbij gestopt die het programma beter laten reageren als er fouten optreden of als het afleveren van de e-mails niet gelukt is. Bovendien kan Nullmailer sinds versie 2 ook overweg met IPv6.

    Meer handige workshops en tips voor de Raspberry Pi in Het Ultieme Raspberry Pi Handboek 2019

    Ssmtp

    Nullmailers kleine broer Ssmtp heeft genoeg aan twee bestanden voor de configuratie: ‘ssmtp.com’ en ‘revaliases’. Het eerste bevat globale opties. Met mailhub=smtp.example.com geef je bijvoorbeeld de SMTP-server op waar Ssmtp de berichten naartoe moet sturen. Alle berichten die voor Unix-gebruikers bedoeld zijn waarvan de user-ID lager is dan 1000, worden door Ssmtp naar het adres gestuurd dat staat achter root=.

    In het bestand ‘revaliases’ kun je per regel voor een lokale gebruiker een doeladres en een SMTP-server instellen. Toegangsgegevens voor remote servers kun je daarbij echter niet opgeven. Soms lijkt de root=-optie niets te doen omdat er bij Ssmtp na de gebruikersnaam, bijvoorbeeld root, ook een domein komt. Dan helpt het om in ‘revaliases’ een regel voor root in te stellen – dan past Ssmtp de afzender zelfstandig aan.

    Het door het Ssmtp-pakket geïnstalleerde sendmail heeft verschillende opties om het commando ook authenticatiegegevens en andere SMTP-servers mee te geven – dat kun je gebruiken vanuit programma’s die de mogelijkheid bieden het sendmail-commando gedetailleerd te configureren. Naast Nullmailer en Ssmtp zijn er nog andere minimale mailers, maar die zijn zelden aan te raden en worden ook amper gebruikt, al wordt msmtp nog wel onderhouden.

    E-mail en configuratie

    Helaas is er geen eenduidig recept voor een gedetailleerde configuratie omdat er veel variabelen in het spel zijn. Hier vind je enkele configuratietips voor Gmail. Niet elke SMTP-server is bereid om berichten van willekeurige gebruikers naar willekeurige andere te sturen, zelfs als een bekende gebruiker zich eerst geauthentiseerd heeft. Ook bij de SMTP-authenticatie zijn er meerdere opties: PLAIN, SSL, TLS en poort 25, 465 of 587. Sommige servers verwachten voor het authentiseren volledige namen met domein, andere willen het zonder.

    Als een zoektocht op internet naar de betreffende mailer en mailprovider geen resultaten heeft opgeleverd, is het in de praktijk dan vaak een kwestie van proberen. Begin met een minimaal aantal configuratiebestanden en concretiseer dat steeds verder. Begin bijvoorbeeld zonder een poort aan te geven. Verstuur met echo “Hallo” | sendmail root een testbericht en kijk daarbij goed naar de meldingen die het systeem laat zien.

    Terwijl Ssmtp daarbij heel snel reageert en problemen bij het versturen meteen meldt, bijvoorbeeld ‘Relay access denied’, moet je bij Nullmailer wat meer moeite doen om die te zien te krijgen. Met het commando mailq kun je zien of er berichten in zijn queue staan die hij niet kwijt kan. De reden daarvoor zie je pas in het logbestand (/var/log/mail.err bij een Debian-systeem). Ssmtp heeft een dergelijk logbestand niet.

    Als een SMTP-server helemaal niets met een gegenereerd e-mailadres wil, helpen eventueel de opties voor de versturende processen. Bij cron is het bijvoorbeeld mogelijk om met [email protected] in crontab de reguliere ontvanger van berichten te overschrijven. Dat is normaal gesproken de eigenaar van de desbetreffende crontab. Moderne cron-versies staan ook het instellen van een afzender toe met [email protected].

    Vaak veroorzaakt het afzenderadres de meeste problemen. Bij het testen met sendmail op de commandline komen er wellicht anders gegenereerde afzenderafdressen aan bij de mailhulp dan bij een aanroep vanuit de webapplicatie waarvoor je al die moeite eigenlijk doet – dan wordt het bijvoorbeeld root@localhost in plaats van alleen root. Test sendmail dus niet alleen met de commandline, maar ook vanuit de uiteindelijke applicatie.

    e-mail versturen op Raspberry Pi of Linux met Nullmailer

    Gratis webmailers zijn vaak als SMTP-relay te gebruiken. Daar moet je bij de instellingen dan wel toegang tot POP/IMAP voor activeren, waarmee dan ook SMTP vrijgegeven wordt.

    Test daarnaast ook of de berichten daadwerkelijk aankomen. Zeker als je met populaire gratis hosters als Google Mail of Outlook.com werkt, belanden de berichten snel in een verkeerde inbox. Als je testberichten niet aankomen, hoef je niet te wanhopen. Controleer voor de eerste testpogingen of op de website van de aanbieder toegang tot SMTP/IMAP geactiveerd kan worden. Daarvoor vind je in de webinterface vaak opties.

    Loop aan het eind ook de rechten van de configuratiebestanden eens even na. Als er wachtwoorden in staan, moeten die alleen door bepaalde gebruikers in te zien zijn, bijvoorbeeld de groep ‘mail’.

    (Peter Siering, c’t magazine)

    Workshops, tips en meer lees je in c't magazine. Nieuwste uitgave: c't 05/2024

    Deel dit artikel

    Noud van Kruysbergen
    Noud van KruysbergenNoud heeft de 'American Dream' doorlopen van jongste bediende tot hoofdredacteur van c't, waar hij zo veel mogelijk de diepgang, betrouwbaarheid en diversiteit wil bewaken.

    Lees ook

    Chat GPT 4 gebruiken: dit is het verschil tussen GPT-3 & GPT-4

    De lancering van GPT-4 heeft de intelligentie van ChatGPT naar een hoger niveau gebracht maar hoe kun je effectief de nieuwe Chat GPT gebruiken en wat...

    Raspberry Pi als NAS-systeem gebruiken? Dit moet je weten!

    Wist je dat je een Raspberry Pi als Network Attached Storage (NAS) kunt gebruiken? Zo voldoet de Raspberry Pi 4 aan de belangrijkste eisen om dit te k...

    0 Praat mee
    avatar
      Abonneer  
    Laat het mij weten wanneer er