29.5. Problemen oplossen

29.5.1. Waarom is het nodig om de FQDN te gebruiken voor hosts op de site?
29.5.2. sendmail zegt “mail loops back to myself
29.5.3. Hoe kan een mailserver op een inbel-PPP-host gedraaid worden?
29.5.4. Waarom blijven er fouten als “Relaying Denied ” verchijnen wanneer er mail van andere hosts wordt verstuurd?

29.5.1. Waarom is het nodig om de FQDN te gebruiken voor hosts op de site?

Het is waarschijnlijk dat de host zich in een ander domein bevindt; bijvoorbeeld als het gewenst is om host mompel in het domein bar.edu vanuit domein foo.bar.edu te bereiken, is het nodig om er met de volledig gekwalificeerde domeinnaam naar te verwijzen, mompel.bar.edu, in plaats van slechts mompel.

Traditioneel werd dit door BSD BIND resolvers toegestaan. De huidige versie van BIND die met FreeBSD wordt geleverd levert niet langer standaard afkortingen voor onvolledig gekwalificeerde domeinnamen anders dan het huidige domein. Dus moet een ongekwalificeerde host mompel òf als mompel.foo.bar.edu gevonden worden, òf wordt er naar gezocht in het root-domein.

Dit verschilt van het vorige gedrag, waar de zoektocht doorging over mompel.bar.edu, en bar.edu. Zie RFC 1535 voor de redenen waarom dit als een slechte gewoonte en zelfs als beveiligingslek werd beschouwd.

Als een goede tussenoplossing kan deze regel:

search foo.bar.edu bar.edu

in plaats van het voorgaande:

domain foo.bar.edu

in /etc/resolv.conf geplaatst worden. Ben er echter zeker van dat de zoekvolgorde niet verder gaat dan de “grens tussen lokale en publieke regelgeving”, zoals RFC 1535 het noemt.

29.5.2. sendmail zegt “mail loops back to myself

Dit wordt in de FAQ van sendmail als volgt beantwoord:

Deze foutmeldingen verschijnen:

553 MX list for domain.net points back to relay.domain.net
554 <user@domain.net>... Local configuration error

Hoe kan dit probleem worden opgelost?

Er is gevraagd om mail van het domein (bijvoorbeeld domain.net) naar een
specifieke host door te sturen (in dit geval relay.domain.net) door
gebruik te maken van een MX-regel, maar de machine die het door moet
sturen herkent zichzelf niet als domain.net.  Voeg domain.net toe aan
/etc/mail/local-host-names [bekend als /etc/sendmail.cw voor versies
eerder dan 8.10] (als FEATURE(use_cw_file) gebruikt wordt) of voeg
“Cw domain.net” toe aan /etc/mail/sendmail.cf.

De FAQ van sendmail is te vinden op http://www.sendmail.org/faq/ en wordt aangeraden om te lezen indien enig “tweaken ” van de mailinstallatie gewenst is.

29.5.3. Hoe kan een mailserver op een inbel-PPP-host gedraaid worden?

Het is gewenst om een FreeBSD-computer in een LAN met het Internet te verbinden. De FreeBSD-computer zal en mail-gateway voor het LAN zijn. De PPP-verbinding is niet toegewijd.

Er zijn minstens twee manieren om dit te doen. Eén manier is om UUCP te gebruiken.

Een andere manier is ervoor te zorgen dat een server die altijd met het Internet verbonden is secundaire MX-diensten voor het domein biedt. Als het domein bijvoorbeeld example.com is en de internetprovider example.net heeft ingesteld om secundaire MX-diensten voor het domein te bieden:

example.com.		MX	10	example.com.
			MX	20	example.net.

Er dient slechts één host als de uiteindelijke ontvanger gespecificeerd te worden (voeg CW example.com toe aan /etc/mail/sendmail.cf op example.com>).

Wanneer de verzendende sendmail probeert om mail af te leveren zal het proberen met example.com te verbinden via de modemverbinding. Waarschijnlijk zal dit een time-out geven omdat de computer niet online is. Het programma sendmail zal het automatisch aan de secundaire MX-site, de internetprovider (example.net) afleveren. De secundaire MX zal dan periodiek proberen om een verbinding te maken met de computer en de mail aan de primaire MX-host leveren (example.com).

Het kan wenselijk zijn om iets als het onderstaande als inlogscript te gebruiken:

#!/bin/sh
# Zet mij in /usr/local/bin/pppmyisp
( sleep 60 ; /usr/sbin/sendmail -q ) &
/usr/sbin/ppp -direct pppmyisp

Indien er een apart inlogscript voor een gebruiker wordt aangemaakt, kan sendmail -qRexample.com gebruikt worden in plaats van het bovenstaande script. Dit zorgt ervoor dat alle mail in de mailrij voor example.com onmiddellijk verwerkt wordt.

Een verdere verfijning van de situatie is deze:

Bericht gestolen van de FreeBSD Internet service provider mailinglijst.

> we bieden de secundaire MX voor een klant.
> De klant maakt automatisch verschillende keren per dag een verbinding
> met onze diensten om de mailberichten naar zijn primaire MX te
> sturen (we bellen zijn site niet indien er een mail voor zijn
> domein arriveert).  Onze sendmail verstuurt de mailrij om de 30
> minuten.  Op het moment moet de klant 30 minuten online blijven om
> er zeker van te zijn dat alle mail naar de primaire MX is gegaan.
>
> Is er een commando dat sendmail er toe aanzet om alle mailberichten
> nu te versturen?  De gebruiker heeft uiteraard geen root-rechten op
> onze machine.

In de sectie “privacy flags” van sendmail.cf staat een
definitie Opgoaway,restrictqrun

Verwijder restrictqrun om niet-root-gebruikers toe te staan te beginnen
de rij te verwerken.  Het kan ook wenselijk zijn om de MXs opnieuw te
rangschikken.  Wij zijn zo de eerste MX voor onze klanten, en we hebben
dit gedefinieerd:

# Als we de beste MX voor een host zijn, probeer direct in plaats van
# een lokale configuratiefout te genereren.
OwTrue

Op deze manier zal een site op afstand rechtstreeks hier afleveren,
zonder de verbinding van de klant te proberen.  Vervolgens wordt er naar
de klant verstuurd.  Dit werkt alleen voor “hosts”, dus
dient de klant hun mailcomputer “customer.com” te noemen en
“hostname.customer.com” in de DNS de plaatsen.  Plaats een
A-regel in de DNS voor “customer.com”.

29.5.4. Waarom blijven er fouten als “Relaying Denied ” verchijnen wanneer er mail van andere hosts wordt verstuurd?

In standaard FreeBSD-installaties is sendmail geconfigureerd om alleen mail te versturen van de host waarop het draait. Als bijvoorbeeld een POP-server beschikbaar is, kunnen gebruikers mail controleren vanuit school, werk, of andere lokaties op afstand, maar zullen ze nog steeds niet in staat zijn om uitgaande emails van lokaties van buitenaf te versturen. Gewoonlijk zal er na enkele ogenblikken na de poging een email van MAILER-DAEMON worden verzonden met een foutbericht “5.7 Relaying Denied”.

Er zijn verschillende manieren om dit te omzeilen. De oplossing die het meest voor de hand ligt, is om het adres van de internetprovider in een bestand relay-domains op /etc/mail/relay-domains te zetten. Een snelle manier om dit te doen is:

# echo "your.isp.example.com" > /etc/mail/relay-domains

Nadat dit bestand is aangemaakt of bewerkt dient sendmail opnieuw gestart te worden. Dit werkt prima indien u een serverbeheerder bent en het niet wenselijk is om mail lokaal te verzenden, of indien het gewenst is om een point-en-click client/systeem op een andere machine of zelfs bij een andere internetprovider te gebruiken. Het is ook erg bruikbaar indien er slechts enkele email-accounts zijn aangemaakt. Als er een groot aantal adressen dient te worden toegevoegd, kan dit bestand in een tekstverwerker worden geopend en de domeinen worden toegevoegd, één per regel:

your.isp.example.com
other.isp.example.net
users-isp.example.org
www.example.org

Nu zal het verzenden van elke mail door dit systeem, verstuurd door elke host in deze lijst, lukken (aangenomen dat de gebruiker een account op het systeem heeft). Dit is een aardige manier om gebruikers toe te staan op afstand mail vanaf het systeem te verzenden zonder dat mensen wordt toegestaan om spam vanaf het systeem te verzenden.