Manuale di FreeBSD
Indietro | Capitolo 26 Posta Elettronica | Avanti

# 26.5 Risoluzione dei Problemi

26.5.1. Perché devo usare nomi di dominio completi (FQDN) per gli host del mio dominio?
26.5.2. sendmail riporta l'errore “`mail loops back to myself`”
26.5.3. Come posso eseguire un server di posta su un host connesso in dial-up tramite PPP?
26.5.4. Perché continuo a ottenere l'errore “`Relaying Denied`” quando spedisco posta da altri host?

26.5.1. Perché devo usare nomi di dominio completi (FQDN) per gli host del mio dominio?

Probabilmente ti accorgerai che l'host è effettivamente in un dominio differente; per esempio, se sei in `foo.bar.edu` e desideri raggiungere un host chiamato `mumble` appartenente al dominio `bar.edu`, dovrai riferirti a questo tramite un nome di dominio completo, `mumble.bar.edu`, invece del solo `mumble`.

Tradizionalmente, questo era permesso dai resolver BIND di BSD. Tuttavia la versione corrente di BIND equipaggiata con FreeBSD non prevede più l'abbreviazione di default per nomi di dominio non completi all'infuori del dominio in cui sei. Quindi l'host `mumble` sarà giudicato come `mumble.foo.bar.edu`, oppure sarà ricercato per il dominio radice.

Questo differisce dal comportamento precedente, dove la ricerca continuava attraverso `mumble.bar.edu`, e `mumble.edu`. Dai un'occhiata all'RFC 1535 per i motivi per cui questa sia considerata una cattiva pratica, o persino un buco di sicurezza.

Come buona soluzione al problema, puoi mettere la linea:

    search foo.bar.edu bar.edu

al posto della precedente:

    domain foo.bar.edu

nel tuo `/etc/resolv.conf`. Comunque, assicurati che l'ordine di ricerca non oltrepassi il “confine tra amministrazione locale e pubblica”, come definito nell'RFC 1535.

26.5.2. sendmail riporta l'errore “`mail loops back to myself`”

La risposta è contenuta nelle FAQ di sendmail come segue:

    Ottengo messaggi di errore, come questo:

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

    Come posso risolvere questo problema?

    Hai chiesto che la posta per il dominio (es., domain.net) sia inoltrata
    a un host specifico (in questo caso, relay.domain.net) attraverso l'uso di
    un record MX, ma la macchina di inoltro non si riconosce appartenente a
    domain.net. Aggiungi domain.net in /etc/mail/local-host-names
    [chiamato /etc/sendmail.cw nelle versioni precedenti alla 8.10]
    (se stai usando FEATURE(use_cw_file)) oppure aggiungi “Cw domain.net”
    in /etc/mail/sendmail.cf.

Le FAQ di sendmail possono essere trovate su http://www.sendmail.org/faq/ ed è raccomandato leggerle se vuoi “perfezionare” la tua configurazione di posta.

26.5.3. Come posso eseguire un server di posta su un host connesso in dial-up tramite PPP?

Vuoi collegare ad Internet una macchina FreeBSD posta sulla tua LAN. La macchina FreeBSD sarà un gateway di posta per la LAN. La connessione PPP non è molto indicata per questo scopo.

Esistono almeno due modi per far questo. Un modo è usare UUCP.

L'altro è trovare un server Internet a tempo pieno che fornisca un servizio MX secondario per il tuo dominio. Per esempio, se il dominio della tua società è `example.com` e il tuo fornitore di servizi Internet ha attivato `example.net` per fornire il servizio MX secondario al tuo dominio, allora:

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

Solo un host deve essere specificato come ultimo ricevente (aggiungi `Cw example.com` in `/etc/mail/sendmail.cf` su `example.com`).

Quando `sendmail` tenterà di consegnare la posta proverà a connettersi alla tua connessione modem (`example.com`). Molto probabilmente finirà in time out poiché non sei online. In modo automatico `sendmail` consegnerà la posta al server MX secondario, ad esempio il tuo provider Internet (`example.net`). Il server MX secondario tenterà periodicamente di collegarsi al tuo host per consegnare la posta all'host MX primario (`example.com`).

Come script di login potresti usare qualcosa di simile a questo:

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

Se hai intenzione di creare uno script di login separato per un utente potresti usare `sendmail -qRexample.com` nello script precedente. Questo forzerà a processare immediatamente tutta la posta per `example.com` situata nella tua coda.

Segue un'ulteriore sottigliezza della situazione:

Messaggio rubato dalla mailing list degli Internet Service Provider che usano FreeBSD.

    > forniamo l'MX secondario per un cliente. Il cliente si connette
    > automaticamente ai nostri servizi molte volte al giorno per ottenere la
    > posta per il suo MX primario (non chiamiamo il suo server quando arriva
    > posta per il suo dominio). Il nostro sendmail processa la posta in coda
    > ogni 30 minuti. Attualmente il cliente sta 30 minuti online per assicurarsi
    > che tutta la posta vada all'MX primario.
    >
    > Esiste un comando che permetta di configurare sendmail in modo tale da
    > spedire tutta la posta in quel momento? Naturalmente l'utente non ha
    > privilegi di root sulla nostra macchina.

    Nella sezione “privacy flags” di sendmail.cf, c'è una
    definizione Opgoaway,restrictqrun

    Rimuovi restrictqrun per permettere a utenti non root di avviare l'elaborazione
    della coda. Inoltre potresti risistemare gli MX. Noi siamo l'MX primario per i
    nostri clienti come questo, e abbiamo definito:

    # Se siamo il miglior MX per un host, prova direttamente invece di generare
    # errori di configurazione locale.
    OwTrue

    In questo modo un server remoto consegnerà direttamente a te, senza
    tentare di connettersi al cliente. Dopodiché tu spedisci al tuo cliente.
    Funziona solamente con gli “host”, quindi hai bisogno che il tuo
    cliente chiami la sua macchina di posta “customer.com” così come
    “nomehost.customer.com” nel DNS.
    Basta mettere un record A nel DNS per “customer.com”.

26.5.4. Perché continuo a ottenere l'errore “`Relaying Denied`” quando spedisco posta da altri host?

Con l'installazione di default di FreeBSD, sendmail viene configurato in modo tale da permettere di spedire posta solamente dall'host sul quale è in esecuzione. Per esempio, se c'è installato un server POP, allora gli utenti saranno in grado di controllare la posta da scuola, dal lavoro, o da altre postazioni remote ma tuttavia non potranno inviare messaggi di posta all'esterno da postazioni esterne. Tipicamente, pochi istanti dopo il tentativo, verrà spedita una email da MAILER-DAEMON con il messaggio di errore “`5.7 Relaying Denied`”.

Esistono diversi modi per aggirare questo problema. La soluzione più semplice è mettere il proprio indirizzo assegnato dall'ISP nel file che contiene i domini a cui viene permesso di effettuare il relay, `/etc/mail/relay-domains`. Un modo veloce per far questo può essere:

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

Dopo aver creato o modificato questo file devi riavviare sendmail. Questa soluzione è ideale se sei un amministratore del server e non desideri spedire posta localmente, o se vorresti usare un client/sistema punta e clicca su un'altra macchina o perfino su un altro ISP. Inoltre è molto utile se hai solo uno o due account di posta configurati. Se ci sono molti indirizzi da aggiungere, puoi semplicemente aprire questo file con il tuo editor di testo preferito e aggiungere i domini, uno per riga:

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

Ora l'invio della posta tramite il tuo sistema, da parte di qualche host in lista (a condizione che l'utente abbia un account sul tuo sistema), avrà successo. Questo è un buon metodo per permettere agli utenti di spedire posta dal tuo sistema in modo remoto senza dare la possibilità a qualcuno di spedire SPAM tramite il tuo sistema.

Indietro | Partenza | Avanti
Sostituzione del proprio Mail Transfer Agent | Risali | Argomenti Avanzati

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.