FreeBSD handboek
Terug | Hoofdstuk 29. Elektronische mail | Volgende

# 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.

Terug | Begin | Volgende
De Mail Transfer Agent vervangen | Omhoog | Geavanceerde onderwerpen