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.