File system: quali strumenti per gestire gli errori del filesystem

Degli strumenti simili al FDISK dei sistemi MS, ma molto più versatili e potenti sono

e2fsck (per eseguire il ripristino del filesystem ext2)
tune2fs (per trasformare ext3 -> ext2)

Qualche link utile da tenere sotto mano

  1. FAQ sul EXT3 filesystem
  2. ManPage di e2fsck

Routing

Tutto è nato cercando di scaricare la posta con un modem, rimanendo collegati alla rete LAN dell’ufficio.

Il problema che ho incontrato è stato quello di scaricare la posta da un server su una rete non raggiungibile dalla mia LAN, bensì esclusivamente attraverso il collegamento PPP di un modem.
Dapprima ho erroneamente cambiato il default gateway, inserendo l’IP assegnato alla mia macchina dal collegamento PPP.
Questo faceva si che tutto il traffico internet si indirizzasse sul nuovo gateway, anche le richieste del DNS e questo … non è bello. Infatti usando fetchmail (che passa tutta la posta al MDA..sendmail..) e non riuscendo a risolvere i nomi di dominio dei destinatari, non trasferiva le mail scaricate poichè i DNS in resolv.conf erano quelle utili alla mia LAN.
Una soluzione sarebbe stata quella di cambiare i DNS per il tempo del collegamento, ma rinunciando alla velocità dell’ADSL e adottandoi quella della connessione modem 56 K bps (quando ci arriva…).
Conoscendo l’indirizzo del server mail.serverposta.org dal quale scaricare la posta e sapendo che difficilmente questo cambi improvvisamente IP ho deciso di impostare le regole del traffico in modo che:

a) tutte le richieste al server mail.serverposta.org vengano instradate verso il gateway x.x.x.x attestato su PPP0
b) tutte le altre richieste vengano instradate al default gateway della LAN, quindi anche quelle verso i DNS.

Procedura:
1) Modifico il file host.conf con la riga
order hosts, bind
In questo modo la risoluzione di un nome avviene prima attraverso il file hosts

2) Modifico il file hosts inserendo l’indirizzo del server di posta
10.10.2.10 mail.serverposta.org

3) Disabilito l’opzione che consente allo script ppp-go di impostare com default gateway l’IP della PPP0

4) Aggiungo la regola di route seguente
route add -net 10.0.0.0 netmask 255.0.0.0 gw $ipassegnato ppp0
allo script post-collegamento ip-up

Quando effettuo il collegamento posso scaricare la posta dal server e l’MDA può interrogare a piacimento il suo DNS.

Nota sul DNS : nel file /etc/ppp/options ho inserito l’opzione usepeerdns che mi permette di ottenere gli IP del name server direttamente dal server ISP al quale mi collego. Questi dati vengono poi messi a disposizione nel file /etc/ppp/resolv.conf e nello script /etc/ppp/ip-up (leggi man pppd /usepeerdns)

Installare Postfix

Postfix è semplice da installare e ancora più semplice da configurare. Per usarlo come SMTP client si deve usare però SASL.

Perchè Postfix

Nella distribuzione Slackware è presente Sendmail che è un programma storico e largamente usato, ma con dei problemi di sicurezza e complessità di configurazione.
Dalle impressioni ricavate su Internet ho provato ad usare Postfix.
Già visitando il sito si riceve una sensazione rassicurante grazie anche ai documenti riportati per le varie lingue che rappresentano un valido Quick Start.

Installazione di Postfix

Fatto il download ed eseguita la solita installazione si può procedere alla modifica dei file di configurazione /etc/postfix/aliases e /etc/postfix/main.cf.
Seguendo le indicazioni dei tutorial on-line (che trovate nell’elenco dei link) si può utilizzare il server di posta in pochi passaggi, ma se si vuole utilizzare il server SMTP del proprio provider, bisogna configurare il sistema di autenticazione SASL.

Quindi dal server FTP si scarica la versione che ritiene più idonea (leggere le note del Postfix SASL Howto circa la versione supportata), io ho scaricato la versione 1.5.28, e si installa.

A questo punto si deve creare il seguente link come suggerito dalle istruzioni:
ln -s /usr/local/lib/sasl /usr/lib/sasl

Fatto questo si deve ricompilare Postfix con il supporto per SASL utilizzando i seguenti comandi.
% make tidy # se si hanno dei file della precedente installazione
% make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/local/include" \
AUXLIBS="-L/usr/local/lib -lsasl"
% make upgrade

Nota: durante il make upgrade (o install se è la prima installazione) ha dato un errore poichè non trovata la libreria libsasl.so.7.
Ho risolto con un semplice SymLink da /usr/lib/libsasl–>/usr/local/lib/libsasl.so.7
Questa anomalia si è presentata solo una volta su due installazioni su Slack

Configurazione

Per la configurazione ho letto prima lil tutorial del Pluto Journal , poi il HOW TO di Mr. Shark ed infine la documentazione ufficiale.
Dopo essermi fatto un’idea ho optato per le seguenti operazioni

1) Inserire gli alias nel file /etc/postfix/aliases
Non ho creato un nuovo file ma ho utilizzato il commentatissimo file già presente sostituendo ‘you’ nella 11^ riga con il mio account e aggiungendo qualche altro utente.
Salvato il file bisogna eseguire ‘newaliases’.
Il programma non trova il file /etc/aliases che cerca per default, quindi creo un altro bel symLink /etc/aliases –> /etc/postfix/aliases
Inoltre segnala la mancanza di indicazioni nel file /etc/postfix/main.cf circa il nome del dominio o dell’host.
Quindi si configura main.cf e poi ci si riprova

2) configurare impostare il file /etc/postfix/main.cf

Il mio server di posta è all’interno di una LAN e deve poter inviare la posta facendo il relay verso un server SMTP esterno quindi:

relayhost = [smtp.dominiovero.it]

le impostazioni per inviare la userid e password al server SMTP esterno sono :

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =

nel file /etc/postfix/sasl_passwd è presente la seguente riga:

smtp.dominiovero.it userid:password

Volendo nascondere nell’indirizzo il nome del dominio sulla LAN e far apparire quello pubblico dominiovero.it imposto il seguente comando

masquerade_domains = dominiolan.qualsiasi dominiovero.it

in questo modo posso “mascherare” il dominio della LAN

Per non far apparire nel banner smtp il nome del programma di posta e la versione ? sufficente impostare il formato del banner

smtpd_banner = $myhostname ESMTP $mail_name

Per far si che per un dato dominio le mail vengano inviate localmente senza trasmetterle ad un’altra macchina, si utilizza

mydestination = $myhostname localhost.$mydomain localhost $mydomain dominiovero.it

in questo caso anche le email inviate da un utente della rete locale all’utente pippo@dominiovero.it vengono redirette localmente.