Sendmail 8.8.x bouwen, installeren en configureren.

ArticleCategory:

System Administration

AuthorImage:

[Foto van de Auteur]

TranslationInfo:

original in en John E. Gotts 

en to nl Tom Uijldert

AboutTheAuthor:

Abstract:

Dit artikel beschrijft de installatie van een patch voor sendmail 8.8.8 (niet werkende TCP wrapper)

ArticleIllustration:

[Illustratie]

ArticleBody:

Beschrijving

Hier is een patch voor ../../common/March1998/Makefile.Linux die TCP wrappers aanzet en nog een aantal andere onschuldige veranderingen doorvoert (met TCP wrappers aan, kun je toegang tot je sendmail daemon van buitenaf beperken tot datgene wat vermeld staat in de hosts_access (5) man pagina's)1. Even aannemend dat je deze patch hebt opgeslagen als ../../common/March1998/sendmail.diff kun je nu het volgende commando geven, vanuit de directory onder sendmail-8.8.x:
$ patch -p0 <../../common/March1998/sendmail.diff
Ga naar de directory src en voer het volgende uit:
./makesendmail
sendmail zou nu zonder problemen moeten bouwen.

Ik ga er hier vanuit dat je alleen gebruik maakt van elektronische post via TCP/IP. UUCP valt buiten dit artikel.

Ga naar de directory cf/cf en maak een nieuw bestand aan, genaamd generic-linux.mc met de volgende inhoud:

divert(-1)
divert(0)dnl
VERSIONID(`@(#)generic-linux2.mc 8.8 (Local) 11/22/97')
OSTYPE(linux)dnl
FEATURE(nouucp)dnl
MAILER(local)dnl
MAILER(smtp)dnl
Als je ook nog netwerk adressen wilt vertalen (Masquerading), voeg dan de volgende twee regels toe:
MASQUERADE_AS(<hostname>)dnl
EXPOSED_USER(root)dnl
Dit betekent dat het lijkt alsof alle elektronische post die wordt verstuurd vanuit jouw machine (behalve die van gebruiker root), wordt verstuurd vanaf de hostname (machine) die jij opgeeft. Dit is handig voor gebruikers die slechts af en toe een verbinding met het netwerk maken (oftewel gebruikers van SLIP en PPP) en voor machines met IP-adressen die dynamisch worden toegewezen (via BOOTP of DHCP). De EXPOSED_USER(root) kan vervallen voor sendmail 8.8.8 en hoger, vanaf dan is dit standaard ingebakken.

Indien je procmail wilt gebruiken als standaard afhandelaar voor je post (standaard op RedHat Linux), voeg dan de volgende regel toe:

FEATURE(local_procmail)dnl
Zet nu generic-linux.mc om in een sendmail.cf bestand:
$ m4 ../m4/cf.m4 generic-linux.mc >obj/sendmail.cf
Wellicht moet je het volgende (maak er commentaar van):
Cwlocalhost
uit obj/sendmail.cf halen met het # teken, daar het inkomende post lijkt te verstoren op nieuwere distributies van Linux.

Bewaar je oude /etc/sendmail.cf bestand en installeer obj/sendmail.cf:

$ install -m 644 -o 0 obj/sendmail.cf /etc/sendmail.cf
Wanneer je deze hebt geïnstalleerd kun je de sendmail daemon stoppen (kill), teruggaan naar de src directory en het volgende uitvoeren:
$ cd obj.Linux.*.*; make install
Dit zal het sendmail programma installeren en de symbolische links. De help pagina's moeten met de hand worden geïnstalleerd.

Als je ervoor hebt gekozen om procmail niet te gebruiken, ga dan naar de hoofddirectory van sendmail en tik het volgende in:

$ uudecode contrib/mail.local.linux
$ mv mail.local mail.local.old
$ tar zxvf mail.local.linux.tar.Z
$ cd mail.local
$ gcc -O3 -o mail.local mail.local.c
$ strip mail.local
$ install -m 2711 -o 0 -g mail mail.local /bin
$ install -m 644 -o 0 -g 0 mail.local.8 /usr/man/man8
Je /var/spool/mail directory moet de protectie 775 hebben en van eigenaar root zijn, in de groep mail. Mail programma's moeten een SGID protectie krijgen voor de mail groep (mode 2711, eigenaar root, groep mail).

Je kunt nu je sendmail daemon herstarten. Die van mij start als volgt:

$ /usr/sbin/sendmail -bd -q1h
Let op: RedHat start sendmail zonder volledige padnaam. Dit kan problemen geven zoals het geen HUP-signaal kunnen geven om z'n configuratie bestand opnieuw in te laten lezen. Verzeker je ervan dat het bestand /etc/rc/init.d/sendmail.init sendmail start met het volledige pad (/usr/sbin/sendmail) om dit te voorkomen.

Als je slechts af en toe verbinding hebt is het wellicht aan te raden om sendmail in deferred mode te starten:

/usr/sbin/sendmail -bd -o DeliveryMode=d
tijdens opstarten en vervolgens te activeren met:
/usr/sbin/sendmail -q
voor het afleveren van alle opgehouden (deferred) mail na het maken van de verbinding met het netwerk en verdere periodieke afleveringen terwijl je een verbinding hebt (wellicht via een cron job).

Hier aangekomen moet je je nieuwe sendmail installatie testen. Hier is een mogelijkheid om dit te doen:

$ telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 <hostname> ESMTP Sendmail 8.8.8/8.8.8; Fri, 22 Nov 1997 03:21:18 -0500
helo localhost
250 <hostname> Hello jgotts@localhost [127.0.0.1], pleased to meet you
mail from: jgotts
250 jgotts... Sender ok
rcpt to: jgotts
250 jgotts... Recipient ok
data
354 Enter mail, end with "." on a line by itself
This is a test.
.
250 DAA23297 Message accepted for delivery
Verzeker je er ook van dat andere mail programma's nog steeds werken en je nog steeds e-mail kan ontvangen van buiten.

Voetnoten:
1Ondersteuning voor TCP wrapper werkt niet onder 8.8.8. Voor een patch, zie:
http://www-personal.engin.umich.edu/~jgotts/linux/sendmail-8.8.8-tcp-wrappers-patch

Als je dan toch bezig bent kun je net zo goed meteen het volgende installeren:
http://www-personal.engin.umich.edu/~jgotts/linux/sendmail-8.8.8-core-dump-patch

Meer informatie