We gaan ervan uit dat je het soort Internet toegang hebt welke tegenwoordig op universiteiten en online services het meest gebruikelijk schijnt te zijn: je belt in op het netwerk van je provider met PPP over een seriële verbinding. Je inkomende mail wordt gespoold op de POP- of IMAP-server van je ISP, terwijl uitgaande berichten via SMTP worden verzonden. Je hebt geen eigen domeinnaam, dus voor alles moet je gebruik maken van één adres.
We gaan ervan uit dat je reeds een tamelijk recente versie van Eric Allman's sendmail (tijdens dit schrijven is de huidige versie 8.8.8 en deze voldoet prima) hebt geïnstalleerd.
In dit document wordt voor een deel naar specifieke eigenschappen van een Debian GNU/Linux systeem verwezen; gebruikers van andere distributies zullen dit in de gaten moeten houden.
Zorg dat je de volgende informatie bij de hand hebt:
De te plannen configuratie dient twee hoofddoelen:
Om dit te bereiken, zullen we gebruik maken van
de genericstable
feature van sendmail.
We zullen alle configuratiebestanden van sendmail in een
aparte directory onder /etc
plaatsen:
/etc/mail
. Gewoonlijk verwacht sendmail dat deze
bestanden direct onder /etc
voorkomen. Om problemen te
voorkomen, moet /etc/sendmail.cf
een symbolische link
zijn naar /etc/mail/sendmail.cf
.
De volgende bestanden zullen in /etc/mail
worden geplaatst:
aliases
- bevat extra lokale adressengenericsdomain
- bevat wat informatie over de configuratie
van je lokale hostgenericstable
- bevat de feitelijke rewriting regels.sendmail.cf
- configuratiebestand van sendmailsendmail.mc
- de bron van sendmail.cf
.Een aantal van deze bestanden zullen worden vergezeld door .db
bestanden.
Deze bevatten hashed databases voor direct gebruik door sendmail.
We gaan ervan uit dat het cf
deel van sendmail's directorystructuur
onder een directory genaamd
/usr/lib/sendmail.cf
voorkomt. Dit is het geval op
Debian GNU/Linux systemen.
Andere distributies plaatsen dit op verschillende lokaties. Raadpleeg
alsjeblieft de met je distributie meegeleverde documentatie voor details.
Sendmail maakt gebruik van een zeer complex regelsysteem voor z'n
configuratie. Ondanks dat je hier heel veel handige truuks mee uit kunt
halen, is het ongebruikelijk en het kost nogal wat tijd om een
sendmail.cf
bestand vanaf begin af aan te schrijven. Als je hierin
bent geïnteresseerd, zou je dit document nu niet verder moeten lezen,
maar in plaats daarvan het "Bat Book" van O'Reilly moeten lezen.
In plaats van deze regels met de hand aan te gaan passen, zullen
we vertrouwen op de m4
macro processor om ons configuratiebestand
vanuit kant-en-klare delen, die met sendmail worden gedistribueerd,
samen te stellen.
Laten we eens kijken naar de eerste regels van het sendmail.mc
bestand:
include(/usr/lib/sendmail.cf/m4/cf.m4) VERSIONID(`sendmail.mc - [email protected]') OSTYPE(debian) define(`ALIAS_FILE',`/etc/mail/aliases')
Aan het begin is cf.m4
ingesloten. Dit m4 macro
bestand bevat heel veel macrodefinities voor de rest van het bestand.
Zorg dat het pad dat je hier opgeeft correct is -
het pad dat we in ons voorbeeld weergeven is kenmerkend voor
Debian GNU/Linux. De OSTYPE
macro wordt gebruikt om een aantal nuttige
standaardwaarden voor bepaalde configuratiewaarden te geven.
Als je geen Debian systeem gebruikt, zou je hier het woord "debian" door
"linux" moeten vervangen.
ALIAS_FILE
vertelt sendmail waar het moet zoeken naar de lijst met
aliassen.
De volgende regels vertellen sendmail gebruik te maken van
de genericstable
feature, en waar het de benodigde configuratiebestanden
kan vinden:
FEATURE(masquerade_envelope) FEATURE(genericstable, `hash -o /etc/mail/genericstable') GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')
De masquerade_envelope
feature vertelt sendmail header rewriting
toe te passen op de envelope zender van een bericht. Dit is het mailadres
waarnaar externe mailbezorg subsystemen
hun foutverslagen met betrekking tot de bezorging van mail en
waarschuwingsberichten zullen doorsturen.
De generics*
bestanden zullen hierna worden uitgelegd.
Nu moeten we een zogenoemde smart host definiëren, dat is een computer die uitgaande mail voor je systeem afhandelt. Dit kan een andere computer zijn dan je ISP's POP en IMAP-servers. Neem contact op met de helpdesk als je twijfelt. De code in het hoofdconfiguratiebestand:
define(`SMART_HOST',`mail-out.je.provider')
De laatste twee regels bestaan uit de "mailer" definities die sendmail nodig heeft om erachter te komen hoe diverse typen mail moeten worden afgehandeld:
MAILER(local) MAILER(smtp)
Om een sendmail.cf
bestand van dit
sendmail.mc
bestand te genereren, typ je (als root) de volgende
opdrachten:
# m4 sendmail.mc > _sendmail.cf # mv -f _sendmail.cf sendmail.cf
m4
's uitvoer naar een tijdelijk bestand
wordt weggeschreven die daarna naar de juiste lokatie wordt verplaatst.
Dit helpt ons te voorkomen dat sendmail deels geschreven
configuratiebestanden inleest.
Ten eerste moeten we aan sendmail opgeven welke adressen als
lokaal moeten worden aangemerkt (en dus zijn onderworpen aan rewriting).
Dit is heel simpel: plaats gewoon de fully qualified hostname van
je computer in het bestand /etc/mail/genericsdomain
.
Om achter de fully qualified name van je host te komen, typ je de
volgende opdracht:
$ hostname -f
Laten we ons nu gaan bezig houden met de rewriting tabel:
/etc/mail/genericstable
. Dit bestand bestaat uit
door twee spaties gescheiden kolommen. In de eerste kolom staat het
lokale adres, in de tweede kolom het email-adres dat daarvoor in de
plaats moet worden gebruikt.
Het bestand zou er ongeveer zo uit kunnen zien:
harry [email protected] maude [email protected] root [email protected] news [email protected]
Voor iedere account op de lokale computer moet één regel voorkomen, zodat automatisch gegenereerde mail die het lokale systeem uitlekt, de correcte header informatie bevat.
Om redenen van performance, maakt sendmail niet direkt gebruik van dit tekstbestand, maar verwacht in plaats daarvan een "hashed" versie. Typ de volgende opdracht om het te genereren:
# makemap -r hash genericstable.db < genericstable
De rewriting regels uit
genericstable
zijn niet van toepassing op lokale mail of
berichten die je van buitenaf ontvangt - de indeling wordt alleen
gebruikt als een bericht je lokale systeem verlaat voor je
ISP's smart host.
Het aliassenbestad bevat aanvullende lokale namen die
alleen geldig zijn voor lokale berichten.
Dit is handig voor administratieve accounts zoals
root
die automatisch gegenereerde berichten van je
systeem ontvangen.
Een redelijk begin voor
/etc/mail/aliases
zou er als het volgende
bestand uit kunnen zien:
root: fred news: root postmaster: root mail: root www: root nobody: /dev/null MAILER-DAEMON: nobody
Dit voorbeeld zal lokale mail voor de root
,
news
, postmaster
, mail
, en www
gebruikers forwarden
naar fred
, en de berichten voor nobody
en
MAILER-DAEMON
zullen worden doorgestuurd naar
/dev/null
.
Net als de genericstable
, kunnen er in aliases
heel veel
regels voorkomen. Dus wederom zou het niet efficiënt voor sendmail
zijn als we het tekstbestand dat we juist hebben beschreven zouden gebruiken.
Hetzelfde mechanisme als voor genericstable
wordt gebruikt voor
aliases
: er wordt een "hashed" database gegenereerd.
In plaats van makemap
direct te gebruiken, kun je deze keer de opdracht
newaliases
typen. Het zal automatisch voor alles zorgdragen wat nodig
is.
De sendmail source-distributie bevat heel wat documentatie.
Lees het, in het bijzonder het bestand cf/README
.
Als je geïnteresseerd bent je in de configuratie-opties van sendmail te verdiepen, koop dan het "Bat Book" van O'Reilly: Bryan Costales, Eric Allman, en Neil Rickert: "sendmail". O'Reilly, 1993.