Verder Terug Inhoud

3. Sendmail configureren

3.1 Het hoofdconfiguratiebestand

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 - roessler@guug.de')
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')

Vervang mail-out.je.provider alsjeblieft door de fully qualified hostname van je internet service 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

Let op de techniek waarbij 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.

3.2 Adres rewriting

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   harryx@je.isp
maude   maudey@haar.isp
root    fredx@je.isp
news    fredx@je.isp

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.

3.3 Aliassen

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.


Verder Terug Inhoud