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 |
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.
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 <
user@example.com>
. 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.
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.
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.
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
<root@example.com>
met de lokale postbus
root. De volgende regel verbindt <
postmaster@example.com>
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.