29.3. sendmail instellen

Bijgedragen door Christopher Shumway.

sendmail(8) is de standaard Mail Transfer Agent (MTA) in FreeBSD. sendmail's taak is het accepteren van mail van gebruikersprogramma's (MUA ) en deze te bezorgen bij de juiste mailer zoals gedefinieerd in het betreffende configuratiebestand. sendmail kan ook netwerkverbindingen accepteren en mail in lokale postbussen afleveren of bezorgen bij een ander programma.

sendmail gebruikt de volgende configuratiebestanden:

Bestandsnaam Functie
/etc/mail/access bestand met de toegangsdatabase van sendmail
/etc/mail/aliases Aliases voor postbussen
/etc/mail/local-host-names Lijst van servers waarvoor sendmail mail accepteert
/etc/mail/mailer.conf Configuratie voor het mailerprogramma
/etc/mail/mailertable Aflevertabel voor de mailer
/etc/mail/sendmail.cf Hoofdconfiguratiebestand van sendmail
/etc/mail/virtusertable Tabellen voor virtuele gebruikers en domeinen

29.3.1. /etc/mail/access

De toegangsdatabase definieert welke host(s) of IP-adressen toegang hebben tot de lokale mailserver en wat voor soort toegang ze hebben. Hosts kunnen in de lijst als OK, REJECT, of RELAY staan, of worden doorgevoerd naar de foutafhandelingsprocedure van sendmail met een bepaalde mailerfout. Hosts welke vermeld staan als OK, wat de standaard is, kunnen mail versturen naar deze host zolang de eindbestemming van de mail de lokale machine is. Hosts welke vermeld staan als REJECT worden voor alle verbindingen geweigerd. Hosts met een RELAY vermelding wordt toegestaan om via deze server mail naar elke bestemming te sturen.

Voorbeeld 29-1. Configureren van de sendmail toegangsdatabase

cyberspammer.com	550 We accepteren geen mail van spammers
FREE.STEALTH.MAILER@	550 We accepteren geen mail van spammers
another.source.of.spam	REJECT
okay.cyberspammer.com	OK
128.32	RELAY

In dit voorbeeld staan vijf vermeldingen. Mailafzenders die overeenkomen met de linkerzijde van de tabel worden beïnvloed door de actie die vermeld staan aan de rechterzijde van de tabel. De eerste twee voorbeelden geven een foutcode af aan de foutafhandelingsroutine van sendmail. Het bericht wordt bij de externe host bekend gemaakt wanneer een mail voldoet aan de linkerzijde van de tabel. De volgende regel weigert mail van een specifieke host op het Internet, another.source.of.spam. De volgende regel accepteert mailverbindingen van een host okay.cyberspammer.com, welke nauwkeuriger is dan de regel met cyberspammer.com erboven. Specifiekere regels vervangen minder specifieke. De laatste regel staat het doorsturen van elektronische mail toe vanaf hosts waarvan de IP-adressen beginnen met 128.32. Deze hosts zijn dan in staat om via deze mailserver naar een andere bestemming mail te versturen.

Wanneer dit bestand is bijgewerkt, dient make in /etc/mail/ te gedraaid te worden om de database bij te werken.

29.3.2. /etc/mail/aliases

De aliasdatabase bevat een lijst met virtuele postbussen die verwijzen naar andere gebruiker(s), bestand(en), programma('s) of andere aliassen. Hier zijn een paar voorbeelden die gebruikt kunnen worden in /etc/mail/aliases:

Voorbeeld 29-2. Mailaliassen

root: localuser
ftp-bugs: joe,eric,paul
bit.bucket:  /dev/null
procmail: "|/usr/local/bin/procmail"

Het bestandsformaat is simpel; de postbusnaam aan de linkerzijde van de dubbele punt wordt verder uitgewerkt naar de doel(en) aan de rechterzijde. Het eerste voorbeeld breidt de postbus van root uit naar de postbus localuser, welke dan vervolgens weer wordt opgezocht in de aliasdatabase. Als er geen verdere overeenkomst wordt gevonden, dan wordt het bericht afgeleverd bij de lokale gebruiker localuser. Het volgende voorbeeld toont een mailinglijst. Mail voor de postbus ftp-bugs wordt doorverwezen naar de drie lokale postbussen joe, eric en paul. Merk op dat een externe postbus gespecificeerd kan worden als . Het volgende voorbeeld toont het schrijven van mail naar een bestand, in dit geval /dev/null. Het laatste voorbeeld toont het sturen van mail naar een programma, in dit geval wordt het mailbericht doorgestuurd naar de standaard invoer van /usr/local/bin/procmail via een UNIX® pijp.

Wanneer dit bestand is bijgewerkt, dient make in /etc/mail/ gedraaid te worden om de database bij te werken.

29.3.3. /etc/mail/local-host-names

Dit is een lijst van hostnamen die sendmail(8) moet accepteren als de lokale hostnaam. Hierin dienen alle hostnamen geplaatst te worden waarvoor sendmail mail moet ontvangen. Als deze mailserver mail moet ontvangen voor het domein example.com en de hostnaam is mail.example.com, dan ziet local-host-names er ongeveer zo uit:

example.com
mail.example.com

Wanneer dit bestand is bijgewerkt, dient sendmail(8) opnieuw gestart te worden zodat het de veranderingen kan lezen.

29.3.4. /etc/mail/sendmail.cf

Het hoofdinstellingenbestand van sendmail , sendmail.cf controleert het algemene gedrag van sendmail, inclusief alles van het herschrijven van emailadressen tot het sturen van weigeringsberichten naar externe mailservers. Met zo'n diverse rol is dit instellingenbestand redelijk complex en vallen de details buiten het bereik van dit hoofdstuk. Gelukkig hoeft dit bestand maar zelden aangepast te worden voor standaard mailservers.

Het hoofdinstellingenbestand van sendmail kan gebouwd worden met m4(1) macro's die het gedrag en de mogelijkheden van sendmail specificeren. Lees /usr/src/contrib/sendmail/cf/README voor meer details.

Wanneer dit bestand is bijgewerkt, dient sendmail(8) opnieuw gestart te worden om de wijzigingen door te voeren.

29.3.5. /etc/mail/virtusertable

De virtusertable verbindt mailadressen voor virtuele domeinen en postbussen met echte postbussen. Deze postbussen kunnen lokaal, op afstand, aliassen gedefinieerd in /etc/mail/aliases, of bestanden zijn.

Voorbeeld 29-3. Voorbeeld van een mailtabel voor een virtueel domein

root@example.com	root
postmaster@example.com	postmaster@noc.example.net
@example.com	joe

In het voorbeeld hierboven staat een tabel voor een domein example.com. Dit bestand wordt van boven naar beneden verwerkt, en de eerste overeenkomende regel wordt gebruikt. De eerste regel verbindt met de lokale postbus root. De volgende regel verbindt met de postbus postmaster op de host noc.example.net. Als geen van de vorige regels van example.com overeenkomen, zal de laatste regel gebruikt worden, die alle andere post geadresseerd aan iemand bij example.com opvangt en naar de lokale postbus joe stuurt.