I'm Tux!

Linux: The new O.S.






Introduction
Micro How-To:QMAIL
Micro How-To:Installazione JNOS
Micro How-To:JNOS inside Firewall
AX25 files:my linux radiobox AX25 files

 

Copyright
Ringraziamenti
Acknowledgements

  
     
     
     
     
     
     
     
     
     
     
     
     
    


What is Linux?...

Linus Torvalds,a young student of Helsinki University,decided to rewrite a new version of UNIX.
He wrote a message through INTERNET looking for people that could help him with this gigantic project.
Many programmers answered and finally they realized the first 'linux-kernel'.
The most important aspect of Linux is that it is a completely FREE code.

Here I won't begin a new Linux Documentation Project [LDP]:
there are a lot of Linux Web Sites where you can find everything you need;
try yourself to write the word "linux" into any internet search engine and you will get what I mean!

Furthermore I would try to list a few of mine personal uses of Linux .

Apologies for some topics that have been wrote in italian and not translated
in english ,but this has been intentionally wanted.
Marco,ik5bcu

top

 

 

 

 

       


COPYRIGHT

Materials herein present are available for free copying and free distribution provided that:

a) TRADEMARKS names and Copyrights be maintained,
b) AUTHORS names (including myself) be maintained.
c) Software could be freeware,shareware,GPL...so read the specific author's Copyright/Copyleft.


I Materiali quì presenti sono disponibili per essere copiati e distribuiti liberamente purché:

a) I rispettivi nomi dei MARCHI REGISTRATI e i relativi Copyrights siano mantenuti,
b) I rispettivi nomi degli AUTORI (me incluso) siano mantenuti.
c) Il Software potrebbe essere freeware,shareware,GPL...pertanto leggere le informazioni specifiche sul Copyright/Copyleft.

-Marco Calistri ik5bcu May 2001-  
 
top   back to index

     

 

 

 

 

 

 

 


Installazione JNOS.
La descrizione che segue cercherà di spiegare come compilare ed installare il JNOS sotto linux.
(JNOS (C) Copyright 1994 by Johan K. Reinalda, WG7J)

Innanzitutto cos'è il JNOS...?
Brevemente diciamo che é una variante del programma N.O.S.(Net Operating System)
scitto da Phil Karn,KA9Q.
(JNOS is based on work (C) Copyright 1991 by Phil R. Karn,KA9Q, and other contributors)

Più dettagliatamente la lettera "J" identifica la versione riadattata da Johan K.Reinalda,WG7J.
Esistono anche altre versioni del NOS come ad esempio il TNOS, il WNOS,il GRINOS,ecc.
Ognuna di queste presenta alcune differenze,ma sostanzialmente si tratta di applicazioni TCP/IP
(Transmission Control Protocol/Internet Protocol)sviluppate per essere usate via packet radio AX25
(Amateur Radio X25 protocol).
Non verranno trattati in questa sede i dettagli dei singoli protocolli,che richiederebbero
uno spazio molto ampio,rimandiamo gli interessati alla documentazione presente
sulla bibliografia specializzata e in minima parte anche su questo URL.

Abbiamo detto all'inizio "compilare...",certo,ma per le persone che non hanno nessuna
esperienza o che non vogliono impazzire con i vari comandi richiesti,o anche che
semplicemente non hanno voglia di farlo,possono reperire il JNOS già compilato e pronto all'uso,
anche se và detto che é necessario personalizzare determinati parametri in base ai propri dati personali.
Insomma questo non é uno dei soliti programmi che una volta caricati in memoria
funziona immediatamente:DEVE ESSERE CONFIGURATO OPPORTUNAMENTE!
Dato che questo é lo spazio "linux" non credo ci sia qualcuno che voglia rinunciare al piacere
di mettere le mani sui programmi che installa quindi le precisazioni appena fatte
sono abbastanza superflue,ma ho voluto ribadire alcuni aspetti per gli utenti meno esperti.
(Io non mi ritengo assolutamente un utente esperto comunque!)

Allora per chi vuole compilarsi il JNOS e personalizzarlo in base alle sue esigenze
deve prima di tutto reperire il codice sorgente della release più recente,
mentre scriviamo la release corrente é la 1.11f.
La lettera finale identifica che dopo il rilascio della release 1.11
ci sono state 5 successivi aggiornamenti:
a,b,c,d,e della versione "stabile".
Le versioni "beta" sono invece identificate dalla lettera "x"
ad esempio 1.11x1 rappresenta la versione prima "beta" della release 1.11.
Questa convenzione é stata adottata dall'attuale manutentore del codice:
James P.Dugal,N5KNX - P. O. Box 44844 Lafayette, LA 70504 U.S.A.
email: jpd@usl.edu (o N5KNX@K5ARH.#LFT.LA.USA.NA)
Il codice é reperibile via ftp presso:
pc.usl.edu in pub/ham/jnos (Sede ufficiale!)
ftp.ucsd.edu in hamradio/packet/tcpip/incoming  
mvangel.npt.nuwc.navy.mil in public/tcpip
db0fho-l.et-inf.fho-emden.de in pub/hamradio/tcpip/jnos/jnos111*/* 
hydra.carleton.ca in pub/hamradio/packet/tcpip/jnos

mentre il pacchetto rpm per coloro che non sanno o non vogliono compilare il codice sorgente:
ftp.pc.louisiana.edu/hamradio/jnos/contrib
http://www.qsl.net/ik5bcu/files/jnos-1.11-f.i386.rpm
Siccome il codice sorgente può essere compilato sia per DOS che per UNIX e quindi linux,
nonché per Solaris,é stato scelto di comprimerlo tramite il formato zip.
Una volta che abbiamo reperito il sorgente lo sposteremo in una sottocartella del nostro
hard-disk,ad esempio in /usr/local e poi da root dovremo scrivere:
unzip -aL jnos<versione>.zip
le chiavi "-aL" sono necessarie per eliminare i carriage return "CR"
e per convertire in minuscolo ogni nome originale in maiuscolo.
Prima di proseguire và detto che il porting del JNOS
per la piattaforma UNIX-POSIX é stato curato da Brandon Allbery,KF8NH.
Tornando al nostro sorgente dato il comando di cui sopra,vedremo sullo schermo
un lungo elenco di files,quando il processo di decompattazione sarà terminato
saremo pronti per entrare nei particolari della compilazione,ma prima dovremo
assicurarci di avere installato le librerie ncurses.
Il JNOS é stato testato con successo con le seguenti ncurses:

version 1.8.5
version 4.0
version 4.2

Io personalmente ho visto anche JNOS linkati con le più recenti ncurses-5.0.
Nel caso non fossero presenti sul vostro sistema potrete installarle o tramite
rpm oppure tramite archivio tar.gz,tgz:
Usando la versione 4.2 (ncurses-4.2.tgz):

cd /usr/local/src
zcat ncurses-4.2.tgz | tar xvf -
cd ncurses-4.2
./configure --prefix=/usr --datadir=/usr/lib
make all > make.out 2>&1 (sh/bash/ash)

=o=
make all >& make.out (csh/tcsh)
ls -l lib/libncurses.a


Adesso entriamo nel vivo della compilazione e scriviamo(ovviamente dalla cartella jnos decompressa):

cp unixconf.h config.h
mv makefile.lnx Makefile

[OPZIONALE:] Editare il config.h per disabilitare funzioni indesiderate.
Basta semplicemente scrivere #UNDEF al posto di #DEFINE.
La distribuzione per UNIX ha quasi tutte le funzioni abilitate,dato che quì non esistono
i limiti di memoria DOS,e produrrà un file binario chiamato jnos.
Vedere comunque anche i commenti nel Makefile.
Editare all'occorrenza il Makefile controllando i valori per ICURSES e LCURSES
che si basano sui path descritti al punto sopra per le ncurses 4.2.
Compilare il JNOS(ovvio che sul sistema dovrete avere il vostro gcc,il make ecc):

make clean
make depend (makedepend é nel pkg Slackware X)
make > make.out 2>&1 (sh/bash/ash shells)
=o=
make >& make.out (csh/tcsh shells)
make mail2ind (se volete)

Il vostro computer si metterà a lavorare per tempi variabili e dipendenti
dalla classe di CPU e RAM installata,comunque anche un vecchio i486 con 40MBRAM
svolge l'operazione in tempi accettabili e nell'ordine delle decine di minuti.
Il risultato sarà un file binario di nome jnos più altre due utility:
u2j e dumpdate.Notare che affinché u2j funzioni nel modo voluto,dovrete editare
il file u2j.c inserendo nella parte chiaramente specificata al suo interno,
il path che avrete scelto per il vostro jnos (ad esempio /home/jnos)e riscrivere
il comando make.
Questo farà in modo che il kernel linux/UNIX possa inviare la posta elettronica
verso lo spool del jnos.
Nel maleaugurato caso il comando make depend non funzioni sul vostro sistema,
editate il Makefile e rimuovete tutte le linee al di sotto di "DO NOT DELETE"
e passate al punto successivo.
Preparate una directory apposita per contenere il jnos,i suoi files accessori,
e le sue sottocartelle,potreste scegliere di trasferire quelle che avete sul
vostro sistema MS-DOS se già stavate usando il jnos sotto DOS,
ma dovrete necessariamente eliminare i carriage-returns "CR",operazione possibile
usando diversi programmi come dos2unix oppure mtools -t.
I files di help del JNOS sono distribuiti secondo la convenzione DOS ovvero troncati
all'ottavo carattere.Per fare in modo che i nomi degli help più lunghi di 8 caratteri
siano mostrati per intero,occorre rinominarli oppure é possibile scegliere l'opzione:
DOS_NAME_COMPAT #define in config.h.
Per avviare il JNOS é presente lo script originale "dojnos" che implica l'utilizzo
di DIP;se non fosse possibile o non si volesse usare questa opzione,potremo avviare il JNOS
anche in modo diverso e tutto sommato più facilmente.
Un tale esempio é disponibile nel pacchetto rpm citato sopra ed é denominato "go".
Ricordate che in UNIX-linux i nomi dei files minuscoli o maiuscoli hanno diverso
significato,pertanto tenetene di conto soprattutto nei files root,spool e di configurazione.
E' consigliabile verificare che il kernel linux sia in grado di gestire l'IP-forwarding
e che questa funzione sia abilitata nel caso si intenda sfruttare il kernel come IP gateway del JNOS.
Nel caso vi fossero problemi causati dalle ncurses,verificare che almeno una delle due cartelle
esista nel vostro sistema:

/usr/share/terminfo
-o-
/usr/lib/terminfo


Se una delle due fosse mancante é possibile crearla tramite link simbolico:
ln -s /usr/share/terminfo /usr/lib (se mancasse /usr/lib/terminfo)
-o-
ln -s /usr/lib/terminfo /usr/share (se mancasse /usr/share/terminfo)

Se avete tralasciato questa impostazione,potreste avere il messaggio di errore:

Error opening terminal: linux (o xterm, o qualcosa di simile).


Il JNOS creerà dei files di LOCK per prevenire accessi simultanei alle interfacce asy,
la cartella di LOCK di default in linux é /var/spool/locks,se questa non esiste é probabile
che il vostro sistema usi una diversa cartella,magari /var/lock.
Se questo fosse il vostro caso allora il JNOS si lamenterebbe che non riesce a creare il file di lock,
percui dovremo creare un symlink:

cd /var/spool
ln -s /var/lock locks

(Nota:questo accadeva fino alla versione 1.11e,la nuova versione riconosce di default /var/lock)

Il JNOS necessita di creare i files di lock e leggere/aggiornare i files sotto la sua homedir.
Per questo si può scegliere di usarlo come superutente (root) ma ciò non é considerato una buona
pratica in UNIX,in alternativa é possibile usarlo tramite l'opzione -d (vedere il readme.now)
oppure sotto un diverso uid come uucp che ha solitamente permessi rwx sui files .lock:

chgrp uucp jnos; chmod g+s jnos


Se trovate dei bugs siete pregati di informare la mailing list presso:
nos-bbs@hydra.carleton.ca
(per iscriversi http://hydra.carleton.ca/mailman/listinfo/nos-bbs/)
indicando la versione linux delle ncurses,gcc,Jnos che usate.
Per sapere a che versione di ncurses si sia linkato il vostro JNOS,
basta che dal suo prompt digitiate il comando "info";
la versione gcc (compilatore GNU) é verificabile tramite il comando gcc -v.
Se per qualche inaspettata causa il vostro JNOS dovesse andare in crash,
questo potrebbe essere dovuto ad un SEGFAULT o altro errore di tipo fatal.
E' possibile ottenere uno script di debugging ammesso che abbiate avviato
il JNOS con l'opzione -C (vedere readme.now) tramite i seguenti comandi:

script for.knx
gdb jnos core
bt
quit
exit (o control-D, dipende dalla shell)


Nota:lo script deve essere allegato alla segnalazione del bug affinché il maintainer:
N5KNX,sia in grado di scoprirne la causa,o quantomeno lo aiuti a farlo.
Per ottenere uno script attendibile é opportuno non avere "strippato" il file binario jnos
tramite il comando strip jnos che riduce di molto le dimensioni del file stesso,
ma toglie anche determinati headers utili al debugging.

<fine della prima parte>

top

 

 

 

 

 


     
     
     
     

JNOS inside a linux Router/Firewall.

Description comes from one of the many mail arriving on the nos-bbs mailing list.

Let's start with a recent example about configuring both a linux as router/firewall plus another
linux as JNOS server.

On 01-Apr-2001 on4hu wrote:
> Hello Marco
>
> again on4hu..
>
> bad result.. on jnos using redhat no network is the system answer??
> for instance i have instaled linux on another machine, this las working
> easyly on internet, so the lan network seams ok, but no file exist
> as etv/rc.d/rc.local ans i dont no where i must place the additional lines??
>
> at last i have write the ipchains lines on dojnos file?? i do not know is it
> is
> ok but no more result also
>
> on linux command line the network is visible, but no amateur ip nummer??
> on jnos command no network destinations...
>
> jnos seams to run properly on SuSe 6.4 via the serial port
>
> now one question how start one ip forwarding to internet????
>
> andré
> on4hu@skynet.be

André,I could answer only about Red Hat:
linux is one but something can be different from distribution
to distribution as for the rc.local file.

As pointed by Dave,you shall configure your network so that:

1)JNOS works correctly and pings linux side
2)linux works correctly and pings jnos side

If are you using a linux machine that works as router/firewall for your LAN
(192.168.xx) and for JNOS LAN (44.xx.xx) you shall configure it so that:

1)NIC(ethernet card) is detected:

#note:"xx" are *your* numbers and jnos IP must be YOUR!

[root@linux /root]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:00:A4:A6:3G:BX
          inet addr:192.168.xx.xx  Bcast:192.168.xx.xx  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1398 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1525 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          Interrupt:11 Base address:0x6100

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:3924  Metric:1
          RX packets:806 errors:0 dropped:0 overruns:0 frame:0
          TX packets:806 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0

2)IP-Forwarding is enabled:

[root@linux /root]# cat /proc/sys/net/ipv4/ip_forward
1

Your kernel must be compiled to support IP-Forwarding (usually it is)
and you have to force this by inserting this line:
/bin/echo > "1" /proc/sys/net/ipv4/ip_forward

3)Routes are provided:

[root@linux /root]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
ik5bcu.ampr.org linux.ik5bcu.am 255.255.255.255 UGH   0      0        0 eth0
192.168.xx.xx   *               255.255.255.0   U     0      0        0 eth0
127.0.0.0       *               255.0.0.0       U     0      0        0 lo

[root@linux /root]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
44.134.210.32   192.168.xx.xx   255.255.255.255 UGH   0      0        0 eth0
192.168.xx.xx   0.0.0.0         255.255.255.0   U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo

This is an half-done job since ethernet card (eth0) is automatically
set to right netmask and broadcast unless you declare different values;
just add a specific route to jnos machine/ip:

/sbin/route add -host 44.134.210.32 gw 192.168.xx.xx dev eth0

4)Mask your private LAN and your JNOS LAN:
# masq rules
/sbin/ipchains -A forward -s 192.168.xx.xx/24 -d 0/0 -j MASQ
/sbin/ipchains -A forward -s 44.134.210.32 -d 0/0 -j MASQ

END of configuration for the linux router/firewall!

Now we play with JNOS machine ;)

Beside configuring a NIC as for above,on JNOS machine you have to
configure a slip-link to the kernel side,
routing and probably IP-ACCESS,TCP-ACCESS rules so that only AMPRNET is allowed
to use our JNOS.

1)Setting slip link from kernel side:

#NOTE:JNOS-IP=44.134.210.32  KERNEL-IP=44.134.210.33
/sbin/slattach -s 38400 -p slip ptype &
/bin/sleep 3
/sbin/ifconfig sl0 44.134.210.33 pointopoint 44.134.210.32 netmask
255.255.255.255 mtu 1460 up
/sbin/route add -net 44.0.0.0 netmask 255.0.0.0 irtt 60000 gw 44.134.210.32 dev
sl0 mss 951 window 1902

#these serves so our 44.x is reached from LAN (from Windoze too!)
#Tnx Ronnie,w0plw
#You must use your JNOS NIC-MAC address!!
/sbin/arp -s 44.134.210.33 00:00:8C:53:63:42 pub
/sbin/arp -s 44.134.210.32 00:00:8C:53:63:42 pub

2) Settings into JNOS autoexec.nos:
#-------------SLIP-LINK-------------------#
attach asy ttype - slip sl0 2048 1460 38400
asyconfig sl0 rxq 10
asyconfig sl0 txq 10
#---------IP ACCESS-----------------------#
ip access permit all 44.134.210.32 all  sl0
ip access permit all 44/8       44/8    ax0
ip access permit all 44/8       44/8    ax1
ip access permit all 44/8       44/8    ax2
ip access permit all 44/8       44/8    sl0
ip access permit all 44/8       44/8    mk0
#--------ROUTES LAN--------#
route addp 44.134.210.33 sl0
route addp 192.168.xx/24 sl0
route addp default sl0
route sort yes
#-------------ARP-------------------------#
arp publish 44.134.210.33 ax25 ik5bcu-2 ax1
arp sort yes
#--------END-------------#

If you have a friend close to you a bit more familiar with linux,
probably you will do this setup very easily.

Good Luck!

--
Regards,: Marco Calistri <ik5bcu@tin.it>
gpg key available on http://www.qsl.net/ik5bcu
Xfmail 1.4.7p2 on linux RedHat 6.2
_______________________________________________
nos-bbs mailing list
nos-bbs@hydra.carleton.ca
http://hydra.carleton.ca/mailman/listinfo/nos-bbs
 
top

 

AX25 files

#/etc/ax25.profile
#! /bin/bash echo "/char ibmpc ibmpc" >.conversrc

#/etc/ax25.conf
[IK5BCU-5 VIA awz]
NOCALL * * * * * * L
default * * * * * * - root /usr/sbin/node node
#
[PTNODE via awz ]
NOCALL * * * * * * L
default * * * * * * - root /usr/sbin/node node
#
[IK5BCU-9 VIA xnet]
NOCALL * * * * * * L
default * * * * * * - root /usr/sbin/node node
#
[PTNODE VIA xnet]
NOCALL * * * * * * L
default * * * * * * - root /usr/sbin/node node
#
#[PTNODE via fbb]
#NOCALL * * * * * * L
#default * * * * * * - root /usr/sbin/node node
#<netrom>
#NOCALL * * * * * * L
#default * * * * * * - root /usr/sbin/node node
#
<netnod>
NOCALL * * * * * * L
default * * * * * * - root /usr/sbin/node node

# /etc/ax25/axports
#
# The format of this file is:
#
# name callsign speed paclen window description
#
#1 OH2BNS-1 1200 255 2 144.675 MHz (1200 bps)
#2 OH2BNS-9 38400 255 7 TNOS/Linux (38400 bps)
awz IK5BCU-13 38400 255 7 AWZNode (38400 bps)
fbb IK5BCU-6 2400 128 3 XFBB (2400 bps)
xnet IK5BCU-14 38400 255 7 Linu(X)Net (38400 bps)
kiss IK5BCU-15 38400 255 7 TNC (38400 bps)
#linpac IK5BCU-12 9600 255 7 TNC (9600 bps)

#/etc/ax25/axspawn.conf
#
# allow automatic creation of user accounts
create yes
#
# guest user if above is 'no' or everything else fails. Disable with "no"
guest ax25
#
# group id or name for autoaccount
group ax25
#
# first user id to use
first_uid 400
#
# maximum user id
max_uid 2000
#
# where to add the home directory for the new user
home /home/ax25
#
# user shell
shell /bin/bash
#
# bind user id to callsign for outgoing connects.
associate no

# /etc/ax25/flexd.conf AWZNode example configuration file
#
MyCall ik5bcu-5
PollInterval 900
#
FlexGate ik5bcu-9
#

# /etc/ax25/node.conf - AWZNode example configuration file
#
# see node.conf(5)

# Idle timeout (seconds).
#
IdleTimeout 9000

# Timeout when gatewaying (seconds).
#
ConnTimeout 9000

# Visible hostname. Will be shown at telnet login.
#
HostName sys2.ik5bcu.ampr.org

# ReConnect flag.
#
ReConnect on

# "Local" network.
#
LocalNet 44.0.0.0/32

# Command aliases. See node.conf(5) for the meaning of the uppercase
# letters in the name of the alias.
#
Alias BBS "c ptfbb"
Alias CAllbook "telnet %{2:44.17.0.53} 1235 %1 s"
#Alias CONVers "telnet 44.131.96.100 3600"
Alias CONVers "telnet %{2:44.131.96.100} 3600 \"/n %u %{1:139}\""
Alias DXCluster "telnet %{2:44.134.130.50} 41112 %1 s"
Alias ITAnet "connect ir5vin"
#Alias JNOS "telnet 44.134.210.32"
Alias JNOS "c awz ik5bcu-10"
#Alias FLEX "c kiss ik5mep"
# Hidden ports.
#
HiddenPorts xnet

# External commands. See node.conf(5) for the meaning of the uppercase
# letters in the name of the extcmd.
#
# Flags: 1 Run command through pipe
# 2 Reconnected flag
#
ExtCmd NEstat 1 nobody /bin/netstat netstat --inet
#ExtCmd PMS 1 root /usr/sbin/pms pms -u %U -o XX0XX
#ExtCmd TPM 3 nobody /usr/bin/finger finger tpm
#ExtCmd Echo 1 nobody /bin/echo echo %U %u %S %s %P %p %R %r %T %t %% %0 %{1:foobar} %{2} %3 %4 %5

# Node ID.
#
NodeId PTNODE:IK5BCU-5

# Netrom port name. This port is used for outgoing netrom connects.
#
NrPort netrom

# Logging level
#
#LogLevel 3

# The escape character (CTRL-T)
#
EscapeChar ^T

# AWZNode Prompt
#
Prompt "PTNODE:IK5BCU-5\nCmd: !,?,CA,CONV,B,BBS,C,D,DXC,E,F,H,HO,I,ITA,JNOS,L,MH,MS,N,PI,P,R,S,TA,T,U ->"

# Password Prompt
#
PassPrompt "SYSPassword>"

#/etc/ax25/node.info
Experimental setup running AWZNode.

# /etc/ax25/node.perms - AWZNode example permissions file
#
# see node.perms(5)
# user type port passwd perms
# User oh2bns can login without password from anywhere else but 'inet'.
#
#xx0xx inet * qwerty 95
#xx0xx * * * 95
# OH2RBI is a bbs so it needs escape disabled.
#
#xx0xx * * * 287
ik5bcu * * * 95
# Default permissions per connection type.
#
* ax25 * * 31
*netrom * * 31
*local * * 31
*ampr * * 31
*inet * * 0
*host * * 31

# /etc/ax25/node.routes AWZNode example configuration file
#
# AWZNode shows links with this order.
#
# Direct Routing
# route <call> <alias> <port> d 'description'
#
#route iw5czk-8 czkbbs czk d 'BBS Sezione ARI Massarosa'
route ir5vin vinci kiss d 'Nodo ITANET Vinci'
#route ik5mep mepnod awz d 'Nodo Flexnet Sesto'
#route ik5bcu ptjnos awz d 'jnos Tcp/Ip'
#route ik5mep flex kiss d 'Flexnet'
route ik5skv-8 skvbbs kiss d 'BBS Empoli'
route ik5bcu-9 ptxnet xnet d 'Linu(X)Net'
route ik5bcu-7 ptjnos awz d 'JNOS'
#
# Routing across another node with sending a string "C <call>"
# route <call> <alias> <port> n 'description' <node>
#
#route ik5skv-8 skvbb itanet n 'BBS ARI Empoli' ir5vin
#route iw5cwb-8 cwbbbs itanet n 'BBS ARI Siena ' ir5vin
route ik5pwj-6 dxclx kiss n 'DX Cluster' ir5vin
route ir5pwj-8 clxpwj kiss n 'CLX Cluster' ir5vin
route ir5pi pserra kiss n 'Nodo ITANET MonteSerra' ir5vin
route ik5qgo dxpwj kiss n 'AWZNode IK5QGO' ir5vin
#
# Routing via digipeaters
# route <call> <alias> <port> v 'description' <digipeaters>
#
#route iz5awz awztcp vhf v 'AWZTCP Station' ik5qpz
#route ik5bcu-10 ptawz awz v 'awz tcp/Ip' ik5bcu-5
#route ik5mep-8 mepbbs kiss v 'BBS Sesto F.' ik5mep
#route iw5cmm-8 cmmbbs kiss v 'BBS S.Maria a M.' ik5mep
#route ir5pwj-8 clxpwj kiss v 'DX Cluster' ir5vin
#route ir5pit-7 pitcp kiss v 'Node Tcp/Ip' ik5mep

# /etc/ax25/node.users - AWZNode example configuration file
# Mail & Shell for Sysop and users
# callsign:password:linux username:settings
# where can be mail, shell or both separated by a semicolon
#xx0xx:password:user:mail,shell
ik5bcu:password:ik5bcu:mail,shell


# /etc/ax25/nrbroadcast
#
# The format of this file is:
#
# ax25_name min_obs def_qual worst_qual verbose
#
#1 5 192 100 0
#ax0 5 255 100 1
awz 5 192 100 0
fbb 5 192 100 0
kiss 5 192 100 0
xnet 5 192 10 0

# /etc/ax25/nrports
#
# The format of this file is:
#
# name callsign alias paclen description
#
#netrom IK5BCU-7 #PTJNOS 236 Switch Port
netrom IK5BCU-12 #PTNOD 236 Switch Port
netnod IK5BCU-5 PTNODE 236 AWZNode
netbbs IK5BCU-8 PTFBB 236 XFBB

Addendum:/etc/rc.local,rc.serial,inittab

#/etc/rc.d/rc.local
/bin/echo "Abilito l'IP Forwarding:IPv4..."
/bin/echo "1" > /proc/sys/net/ipv4/ip_forward
/bin/echo "Abilito la protezione tcp_syncookies..."
/bin/echo "1" > /proc/sys/net/ipv4/tcp_syncookies
#/bin/echo "Abilito la deframmentazione dei pacchetti..."
#/bin/echo "1" > /proc/sys/net/ipv4/ip_always_defrag
#/bin/echo "Proviamo ad utilizzare stty -raw su com1 per XFBB protocol error"
#/bin/stty sane < /dev/ttyS0
/bin/echo "Inizializzo la connessione SLIP col Jnos/Linux..."
/sbin/slattach -s 38400 -p slip ptype &
/bin/echo "Attendi che il processo sia finito..."
/bin/sleep 3
/sbin/ifconfig sl0 44.134.210.33 pointopoint 44.134.210.32 netmask 255.255.255.255 mtu 1460 up
/sbin/route add -net 44.0.0.0 netmask 255.0.0.0 irtt 60000 gw 44.134.210.32 dev sl0 mss 951 window 1902
#/bin/echo "Configuro la virtual eth0..."
#/sbin/ifconfig eth0:1 44.134.210.33 broadcast 44.134.210.255 netmask 255.255.255.0 mtu 1460 up
#/sbin/route add -host 44.134.210.37 gw 44.134.210.33 dev sl0
#/sbin/route add -net 0.0.0.0 gw 192.168.2.1 netmask 0.0.0.0
/sbin/arp -s 44.134.210.33 00:C1:8C:11:23:44 pub
/sbin/arp -s 44.134.210.32 00:C1:8C:11:23:44 pub
#/bin/echo "Prova IP Masquerading AMPRNET<->INTERNET..."
#/sbin/ipchains -A forward -i ppp0 -b -s 44.134.210.32 -j MASQ
#/sbin/ipchains -A forward -i sl0 -b -s 192.168.2.4 -j MASQ
#Inizio script configurazione AWZNODE
#/bin/echo "Attivo ax25 + mkiss..."
#/sbin/modprobe ax25
#/sbin/modprobe mkiss
#/bin/sleep 1
/bin/echo "Setto axparms..."
/usr/sbin/axparms -assoc ik5bcu ik5bcu
/bin/echo "Configuro le interfaccia per AWZNODE,XFBB,XNET..."
/usr/sbin/kissattach -m 236 /dev/ptypa awz 44.134.210.33 #ax0
#02-12-2001:prova,attacco diretto pk88
#/usr/sbin/kissattach -m 236 /dev/ttyS0 fbb 44.134.210.33 #ax1
#
#riga usata con rxecho dal jnos:
/usr/sbin/kissattach -m 236 /dev/ptypb fbb 44.134.210.33 #ax1
#
/usr/sbin/kissattach -m 236 /dev/ptypc xnet 192.168.2.5 #ax2
/usr/sbin/kissattach -m 236 /dev/ttyS2 kiss 44.134.210.33 #ax3
#/usr/sbin/kissattach -m 236 /dev/ttyS3 linpac 44.134.210.33 #ax4
/bin/echo "Check kissattach...!!"
kissparms -p awz -t 250 -l 20 -s 100 -r 128
kissparms -p fbb -f no -t 250 -l 20 -s 100 -r 128
kissparms -p xnet -t 250 -l 20 -s 100 -r 128
kissparms -p kiss -f no -t 250 -l 20 -s 100 -r 128
/bin/echo "Check kissparms...!!"
/sbin/ifconfig ax0 broadcast 44.134.210.255 netmask 255.255.255.0 mtu 236
/sbin/ifconfig ax1 broadcast 44.134.210.255 netmask 255.255.255.0 mtu 236
/sbin/ifconfig ax2 broadcast 44.134.210.255 netmask 255.255.255.0 mtu 236
/sbin/ifconfig ax3 broadcast 44.134.210.255 netmask 255.255.255.0 mtu 236
#/sbin/ifconfig ax4 broadcast 44.134.210.255 netmask 255.255.255.0 mtu 1024
/bin/sleep 1
#/bin/sleep 2
/usr/sbin/net2kiss -a -i ax3 /dev/ptyp0 & #RXECHO /dev/ttyS2 to XNET
/usr/sbin/net2kiss -a -i ax3 /dev/ptypf & #RXECHO /dev/ttyS2 to JNOS
#/usr/sbin/net2kiss -a -i ax1 /dev/ptypb & #RXECHO /dev/ttyS0 to JNOS
/bin/echo "Check net2kiss...!!"
/bin/sleep 1
/bin/echo "Cancello i vecchi login..."
> /var/ax25/node/loggedin
/bin/echo "Configuro l'interfaccia netrom..."
/usr/sbin/nrattach -i 44.134.210.33 netrom
/usr/sbin/nrattach -i 44.134.210.33 netnod
/usr/sbin/nrattach -i 44.134.210.33 netbbs
/sbin/ifconfig nr0 broadcast 44.134.210.255 netmask 255.255.255.0 mtu 236
/sbin/ifconfig nr1 broadcast 44.134.210.255 netmask 255.255.255.0 mtu 236
/sbin/ifconfig nr2 broadcast 44.134.210.255 netmask 255.255.255.0 mtu 236
/bin/echo "Check nrattach!!..."
#/bin/sleep 8
/bin/echo "Start demone ax25d..."
/usr/sbin/ax25d
#/bin/echo "Check ax25d!!..."
#/bin/sleep 8
/bin/echo "Start demone netromd..."
/usr/sbin/netromd -i -t 30 -l
#/bin/echo "Check netromd!!..."
#/bin/sleep 8
#/bin/echo "Start demone ax25ipd..."
#/usr/sbin/ax25ipd > /var/log/ax25ipd.log 2>&1
#/bin/echo "Check ipd!!..."
/bin/sleep 1
/bin/echo "Start demone mheardd..."
/usr/sbin/mheardd -f -n 20
/bin/echo "Avvio XFBB-7.03..."
/usr/sbin/fbb #-l /var/ax25/fbb/log/boot.log
/bin/sleep 1
#/bin/echo "Start Linu(X)Net..."
#/usr/local/src/xnet/xnet.run
#/bin/echo "Check (X)Net!!..."
#/bin/sleep 1
#/bin/echo "Start demone ax25rtd..."
#/usr/sbin/ax25rtd
#/bin/echo "Start demone flexd..."
#/bin/bash -c "cd /usr/local/src/awznode*; ./flexd"
#/bin/echo "Check flexd!!..."
#/bin/sleep 8
#/bin/echo "Attivo il redirect verso ik5bcu.ampr.org..."
#/usr/sbin/rinetd
#/bin/echo "Attivo il JNOS..."
#/bin/bash -c " cd /home/jnos; ./go"
/bin/echo "Avvio SVGATextMode a 100x37..."
SVGATextMode 100x37x8_SVGA > /var/log/SVGATextMode.log 2>&1
/bin/echo "Controlla eventuali errori sullo schermo..."
/bin/sleep 3

#/etc/rc.d/rc.serial
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

/bin/echo "Setto com1 e com2 (uart 8250)..."
/bin/setserial /dev/ttyS0 uart 8250 port 0x3f8 irq 4 #COM 1
/bin/setserial /dev/ttyS1 uart 8250 port 0x2f8 irq 3 #COM 2
/bin/echo "Setto la com3 e com4 (uart 16C550)..."
/bin/setserial /dev/ttyS2 uart 16550A port 0x3e8 irq 7 #COM 3
/bin/setserial /dev/ttyS3 ^fourport uart 16550A port 0x2e8 irq 10 #COM 4
/bin/setserial /dev/ttyS4 ^fourport uart 16550A port 0x250 irq 12 #COM 5
/bin/sleep 2
#/bin/echo "Proviamo ad utilizzare stty -raw su com1 per XFBB protocol error"
#/bin/stty sane < /dev/ttyS0
#/bin/echo "Mando in kiss il tnc sulla COM3..."
#/bin/echo -e "KISS ON" > /dev/ttyS2
#/bin/echo -e "RESTART" > /dev/ttyS2

#/etc/inittab
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
# Author:Miquel van Smoorenburg,
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
id:3:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Things to run in every runlevel.
ud::once:/sbin/update

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
7:2345:respawn:/home/jnos/jnos.start tty7
8:2345:respawn:/usr/local/xnet/xnet.start tty8

# Run xdm in runlevel 5
# xdm is now a separate service
x:5:respawn:/etc/X11/prefdm -nodaemon
#
#Start of SVSCAN
#
SV:123456:respawn:env - PATH=/usr/local/bin:/usr/sbin/:/usr/bin:/bin svscan /service /dev/console 2>/dev/console

top

 


 

 

Installazione di qmail.
Innanzitutto cosa é qmail?
qmail é uno tra i più sicuri (se non il più sicuro) MTA (Mail Transfer Agent) attualmente disponibili
per sistemi UNIX-like.
qmail (và scritto in minuscolo!) é nato come sostituto di SENDMAIL,il MTA utilizzato da tutti
i sistemi UNIX.

Perché sostituire SENDMAIL con qmail?
Tra le motivazioni maggiori possiamo includere:

SICUREZZA:qmail é stato progettato espressamente per non presentare vulnerabilità
in termini di sicurezza,mentre SENDMAIL,nato molti anni fà quando INTERNET era
un mondo meno affollato e essenzialmente più sicuro,ha avuto notevoli difetti in questo.

PRESTAZIONI:qmail può gestire una piccola rete domestica come un grande ISP
con migliaia di utenti;di default é in grado di  consegnare 20 messaggi di posta simultaneamente.

Il suo Autore Dan J. Bernstein,un professore di Matematica dell'Università di Chicago,Illinois,
ha addirittura messo in palio 1.000 dollari per chi avesse scoperto una falla o un difetto
in questo programma,ebbene a distanza di qualche anno,quei 1.000 dollari sono ancora lì.
Oltre a qmail Dan J. Bernstein é autore di moltissimi altri programmi come ezmlm,
uno tra i più diffusi mailing-list manager;o djbdns,un versatilissimo DNS.
Per maggiori informazioni sull'Autore e le sue realizzazioni:djb
Un'altro link utile é senza dubbio questo:qmail

La descrizione che segue é riferita a un sistema linux Red Hat 6.2 ma che con qualche modifica
potrà essere adattata anche per altre distribuzioni.
Innanzitutto procuriamoci i pacchetti necessari...
(per chi non volesse compilare gli archivi tar.gz,potrà reperirli anche in formato rpm )

I sorgenti possono essere reperiti via ftp presso:

· qmail, ftp://cr.yp.to/software/qmail 1.03.tar.gz
· ucspi tcp, ftp://cr.yp.to/ucspi tcp/ucspi tcp 0.88.tar.gz
· daemontools, ftp://cr.yp.to/daemontools/daemontools 0.70.tar.gz
Nel caso vi fossero problemi con ftp potete usare il link seguente:http://cr.yp.to/software.html

Una volta reperiti i sorgenti  create una directory apposita:

mkdir -p /usr/local/src/qmail
mv *.tar.gz  /usr/local/src/qmail

su - #se non eravate root
cd /usr/local/src/qmail
gunzip qmail 1.03.tar.gz
tar xvf qmail 1.03.tar
gunzip ucspi tcp 0.88.tar.gz
tar xvf ucspi tcp 0.88.tar
gunzip daemontools 0.70.tar.gz
tar xvf daemontools 0.70.tar
rm *.tar # opzionale se si vuole liberare spazio
cd qmail 1.03
mkdir /var/qmail

Ora dobbiamo creare gli utenti e i gruppi

La maniera più facile é tramite lo script INSTALL.ids fornito con l'archivio qmail.

Poi,usando l'editor preferito,modificare il testo dello script in base al sistema usato
FreeBSD,Linux...basta rimuovere tutto tranne la parte che ci interessa,dopodiché
basta eseguire IDS che creerà users e groups richiesti:

chmod 700 IDS
./IDS

Per verificare che IDS abbia fatto il suo lavoro,controllare in /etc/passwd se esistono queste voci
[n.b.:non fare caso agli UID,GID sottoriportati che sono di esempio]

alias:*:7790:2108::/var/qmail/alias:/bin/true
qmaild:*:7791:2108::/var/qmail:/bin/true
qmaill:*:7792:2108::/var/qmail:/bin/true
qmailp:*:7793:2108::/var/qmail:/bin/true
qmailq:*:7794:2107::/var/qmail:/bin/true
qmailr:*:7795:2107::/var/qmail:/bin/true
qmails:*:7796:2107::/var/qmail:/bin/true

A questo punto potremo compilare il nostro qmail:

make setup check

Se avete un server DNS perfettamente configurato potete usare il seguente comando:

./config

Altrimenti dovrete usare il seguente:

./config fast the.full.hostname

Ad esempio se il vostro host lo avete chiamato linux.casamia.org ,dovrete scrivere:

./config fast linux.casamia.org

A questo punto potete compilare gli altri pacchetti che avevamo prelevato,ovvero
ucspi-tcp e daemontools,sempre che desideriate in seguito usare qmail nella
configurazione estesa che prevede tcpserver e svscan.
Come al solito basterà entrare nelle rispettive directory:

cd /usr/local/src/qmail/ucspi tcp 0.88
cd /usr/local/src/qmail/daemontools 0.70
e scrivere:
make
make setup check

qmail é un programma totalmente modulare può essere configurato in decine di modi differenti,
per questo io all'inizio ho avuto grossi problemi a farlo funzionare perché,leggendo lwq [life with qmail] tentavo di farlo partire
nella configurazione più complessa,quella "sorvegliata" [supervised].
Solo adesso riesco ad usare qmail tramite supervise e tcpserver,un'applicazione che sostituisce inetd,
e che consente,tra le altre cose,di aumentare moltissimo la sicurezza del server SMTP,evitando il relaying indesiderato;
quindi consiglio di provarlo prima nella configurazione più semplice:senza svscan.
Questa raccomandazione ovviamente non vale per gli utenti esperti che potrebbero benissimo fare a meno di leggersi queste note
e magari insegnarmi altri metodi ;-)

Il file /var/qmail/rc
qmail supporta diversi tipi di formati "Mailbox" da scegliere in base alle esigenze personali
nonché al tipo di Client di posta.Nel mio caso ho scelto il formato classico mbox-UNIX,
ma é consigliato l'utilizzo di Maildir (tra l'altro inventato dallo stesso Dan J. Bernstein!)

 
FormatoMailbox 
Nome 
Posizione 
defaultdelivery 
Commenti 
mbox Mailbox $HOME ./Mailbox più comune;maggior supporto MUA
maildir Maildir $HOME ./Maildir/ più affidabile;minor supporto MUA
mbox nomeutente /var/spool/mail vedere INSTALL.vsm  UNIX mailbox tradizionale

Questo era il mio file /var/qmail/rc prima di passare a svscan

#!/bin/sh

# Using splogger to send the log through syslog.
# Using qmail-local to deliver messages to ~/Mailbox by default.

exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Mailbox splogger qmail

Nota:rc deve avere i permessi di esecuzione!:

chmod 755 /var/qmail/rc

Questo invece é il mio /var/qmail/rc attuale:

#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start "`cat /var/qmail/control/defaultdelivery`"

Dobbiamo creare il file che conterrà i messaggi di posta elettronica:

touch $HOME/Mailbox
chmod 600 Mailbox

e creare il link simbolico in /var/spool/mail/ :
ln -s  /home/nomeutente/Mailbox  /var/spool/mail/nomeutente

Potremo già verificare il funzionamento di qmail anche se sendmail fosse già avviato:

$ csh  cf '/var/qmail/rc &'

se appaiono messaggi di errore del tipo:
"qmail cannot start" consultate le FAQ che trovate in /var/qmail/doc dove ci sono molti esempi.
Se invece qmail é partito regolarmente dovrete trovare una riga del tipo:

 qmail: status: local 0/10 remote 0/20

nei log di sistema (/var/log/mail.log)

Provate anche un :

ps -ax | grep qmail

dovrete vedere almeno 4 daemons attivi : ps -ax |grep qmail

Possiamo anche effettuare delle prove autoinviandoci una e-mail

echo to:nomeutente | /var/qmail/bin/qmail-inject

se qmail avrà  inviato il messaggio dentro a $nomeutente/Mailbox dovrete trovare:

less ~nomeutente/Mailbox

From root@linux.ik5bcu.ampr.org Tue May 01 00:54:13 2001
Return-Path: <root@linux.ik5bcu.ampr.org>
Delivered-To: ik5bcu@linux.ik5bcu.ampr.org
Received: (qmail 2567 invoked by uid 0); 1 May 2001 00:54:12 -0000
Date: 1 May 2001 00:54:12 -0000
Message-ID: <20010501005412.2566.qmail@linux.ik5bcu.ampr.org>
From: root@linux.ik5bcu.ampr.org
to: ik5bcu@linux.ik5bcu.ampr.org

Se troverete qualcosa di simile nel vostro Mailbox allora avrete fatto le cose nel modo giusto.
Se siete esigenti e curiosi potrete provare ad inviare anche verso indirizzi non esistenti
per i quali qmail risponderà con dei messaggi di errore...
leggete gli esempi che troverete in /var/qmail/doc/TEST.deliver  ../TEST.receive

Rimuovere SENDMAIL

Spostare i file originali di sendmail:

mv /usr/lib/sendmail /usr/lib/sendmail.old
mv /usr/sbin/sendmail /usr/sbin/sendmail.old

chmod 0 /usr/lib/sendmail.old
chmod 0 /usr/sbin/sendmail.old

Rendere la versione ``sendmail'' di qmail disponibile al nostro MUA [Mail User Agent]:

ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

Consiglio di rileggere i vari /var/qmail/doc/INSTALL e TEST *e solo dopo*
provvedere alla disinstallazione di SENDMAIL.Non fate come il sottoscritto che non legge mai,
o comunque sempre troppo poco le doc. e gli RTFM ;)

Questo può essere fatto in maniera drastica con un:

rpm -e sendmail --nodeps

oppure in maniera "soft" senza eliminare nulla limitandosi semplicemente a disabilitare sendmail,
verificare negli script /etc/init.d/rc2.d/ /etc/init.d/rc3.d o /etc/rc.d/rc2.d /etc/rc.d/rc3.d
(a seconda della distribuzione/versione)
i link simbolici S80sendmail che vanno semplicemente rinominati:

mv S80sendmail K30sendmail

in modo che al boot sendmail non sia riavviato.

Aggiunte e prove finali

Configurare qmail-smtpd in /etc/inetd.conf (tutto in una linea senza andare a capo):
questo serve ad attivare il demone smtpd in modo che qmail possa accettare anche
connessioni esterne (senza SMTP gateway):

 smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env  tcp-env /var/qmail/bin/qmail-smtpd

Per avviare qmail al boot del nostro sistema linux basta  inserire le righe:

/bin/echo "Metto qmail in background..."
csh -cf ' /var/qmail/rc & '

nel file /etc/rc.d/rc.local (ovviamente altre distribuzioni linux useranno path differenti)

A questo punto possiamo verificare il funzionamento SMTP di qmail.

Per la prova,così come per la configurazione,si potrà scegliere tra modi diversi:
riavviamo il nostro sistema e verifichiamo che durante il boot
non si ripresenti la riga   SENDMAIL [OK]
apriamo una finestra terminale e proviamo a vedere se
qmail é attivo...:

ps -ax | grep qmail

[ik5bcu@linux ik5bcu]$ ps -ax |grep qmail
  638 ?        S      0:00 supervise qmail-send
  640 ?        S      0:00 supervise qmail-smtpd
  647 ?        S      0:00 qmail-send
  650 ?        S      0:00 /usr/local/bin/multilog t s2500000 /var/log/qmail/qma
  652 ?        S      0:00 /usr/local/bin/multilog t s2500000 /var/log/qmail/qma
  655 ?        S      0:00 qmail-lspawn ./Mailbox
  656 ?        S      0:00 qmail-rspawn
  657 ?        S      0:00 qmail-clean
#Nota nel mio caso avendo attivato supervise ritrovo questo programma nella lista dei processi
#se non si é attivato supervise né tcpserver si avrà un elenco dei processi leggermente
#differente nel quale comunque non dovranno mancare qmail-send qmail-smtp qmail-lspawn
#qmail-rspawn e qmail-clean.

e in ascolto sulla porta tcp 25:

telnet localhost 25

se abbiamo fatto tutto correttamente dovremmo vedere
il prompt (o SMTP greeting di qmail):

[ik5bcu@linux ik5bcu]$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 linux.ik5bcu.ampr.org ESMTP
quit
221 linux.ik5bcu.ampr.org

Dobbiamo anche creare almeno gli alias di base che sono:
MAILER-DAEMON,postmaster,root
(in quanto sempre per migliorare la sicurezza,root =superuser non riceve la posta con qmail!)

cd ~alias
echo nomeutente > /var/qmail/alias/.qmail-root
echo nomeutente > /var/qmail/alias/.qmail-postmaster
ln  -s .qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon
chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster

Abbiamo finito!...Almeno la configurazione di base,ma come ho detto qmail é un progetto
modulare,flessibile,estremamente espandibile percui avrete solo l'imbarazzo della scelta
se vorrete configurarlo in modi diversi o aggiungere qualcuna delle moltissime estensioni
disponibili.

top

qmail con Svscan e tcpserver
(Nota:larga parte di questa descrizione é tratta da "lwq-life with qmail" di Dave Sill nonché da qmail-howto di Adam Mc Kenna)

Come anticipato nella parte iniziale,descriveremo ora la configurazione "ideale" o almeno quella che consente
maggiori garanzie in termini di sicurezza (Mail Relay Abuse) e affidabilità (supervised).
Vi ricordate degli archivi daemontools e ucspi-tcp?...
Bene é il momento di rispolverarli!
Se li avevate compilati come descritto in precedenza,sono già lì pronti in attesa di essere utilizzati!
Prima di tutto creiamo la directory "/service" necessaria a svscan il gestore dei processi supervised
(nota:svscan può gestire fino a 1000 sottodirectory di /service)...da root:

mkdir /service
chmod 755 /service


configuriamo il nostro /etc/inittab in modo da avviare svscan al boot del sistema,aggiungere questa riga alla fine di inittab:

SV:123456:respawn:env - PATH=/usr/local/bin:/usr/sbin:/usr/bin:/bin svscan /service < /dev/null > /dev/console 2>/dev/console

Per verificare che svscan sia attivato scrivere:

kill -HUP 1
ps ax |grep svscan

Per installare un nuovo servizio controllato da svscan basta fare un semplice link simbolico dentro a /service,
entro 5 secondi il nuovo servizio sarà gestito da svscan.Il bello di questa procedura é che per rimuovere
un servizio:qmail,dnscache,tinydns...basta rimuovere il link simbolico da /service e bloccare il processo supervise.

cd /service/sub
rm /service/sub
svc -dx . log

Creiamo ora le sottodirectory necesarie:

mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtpd

mkdir -p /var/log/qmail/qmail-send
mkdir -p /var/log/qmail/qmail-smtpd
chown qmaill /var/log/qmail
chown qmaill /var/log/qmail/*


Creiamo il file /var/qmail/supervise/qmail-send/run che dovrà contenere:

#!/bin/sh
exec /var/qmail/rc


Creiamo il file /var/qmail/supervise/qmail-send/log/run che dovrà contenere:

#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 /var/log/qmail
/qmail-send

Creiamo il file /var/qmail/supervise/qmail-smtpd/run che dovrà contenere:

#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -H -R -v -p -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1


Creiamo il file di controllo concurrencyincoming
(non é obbligatorio,ma se non lo volete configurare dovete rimuovere tutta la riga MAXSMTPD=):

echo 20 > /var/qmail/control/concurrencyincoming
chmod 644 /var/qmail/control/concurrencyincoming


Creiamo il file /var/qmail/supervise/qmail-smtpd/log/run:

#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 /var/log/qmail-smtpd


Rendiamo il tutto eseguibile:

chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/log/run
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run


Per fare in modo che svscan controlli tramite supervise qmail basterà creare questo link simbolico:

ln -s /var/qmail/supervise/* /service/

Ora un ps ax |grep qmail dovrebbe dare la lista dei processi vista prima:ps-ax |grep qmail
N.B.:Ricordarsi di commentare la riga SMTP in /etc/inetd.conf che ora non serve più!

smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env  tcp-env /var/qmail/bin/qmail-smtpd

E commentare la riga da /etc/rc.d/rc.local:

/bin/echo "Metto qmail in background..."
csh -cf ' /var/qmail/rc & '

top

 

Disabilitare il relaying

Avevamo detto che l'utilizzo di tcpserver oltre a fornirci altre interessanti prestazioni,
é in grado di proteggere il nostro server SMTP dal relaying indesiderato:
purtroppo esiste la spiacevole possibilità che qualcuno si diverta ad inviare SPAM usando
il nostro server SMTP,per fare in modo che qmail accetti la posta *solamente* dal nostro
client possiamo usare le seguenti procedure:

echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp
/usr/local/sbin/qmail cdb


In questo modo solo localhost potrà usare qmail per inviare la posta.
Se esiste l'esigenza di creare altri utenti abilitati potremo aggiungerli dentro
/etc/tcp.smtp:

IP address del client:allow,RELAYCLIENT=""


Quindi ricostruire il database con i seguenti comandi:

tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp*

Un esempio di /etc/tcp.smtp che blocca il relaying é questo:

127.0.0.1:allow,RELAYCLIENT=""
192.168.1.:allow,RELAYCLIENT=""
:allow

Nota l'ultima riga ci deve essere e *NON* significa che il RELAY é aperto per tutti.

Nell'esempio sopra il relaying é concesso a localhost e ai clients della LAN.

Se al contrario del sottoscritto siete dei perfezionisti,potreste creare lo script di avvio specifico per qmail,
io per il momento non lo utilizzo e avvio qmail senza questo script che però riporto per completezza:

#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
case "$1" in
start)
echo -n "Starting qmail: svscan"
cd /var/qmail/supervise
env - PATH="$PATH" svscan &
echo $! > /var/run/svscan.pid
echo "."
;;
stop)
echo -n "Stopping qmail: svscan"
kill `cat /var/run/svscan.pid`
echo -n " qmail"
svc -dx /var/qmail/supervise/*
echo -n " logging"
svc -dx /var/qmail/supervise/*/log
echo "."
;;
stat)
cd /var/qmail/supervise
svstat * */log
;;
doqueue|alrm)
echo "Sending ALRM signal to qmail-send."
svc -a /var/qmail/supervise/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sending HUP signal to qmail-send."

svc -h /var/qmail/supervise/qmail-send
;;
pause)
echo "Pausing qmail-send"
svc -p /var/qmail/supervise/qmail-send
echo "Pausing qmail-smtpd"
svc -p /var/qmail/supervise/qmail-smtpd
;;
cont)
echo "Continuing qmail-send"
svc -c /var/qmail/supervise/qmail-send
echo "Continuing qmail-smtpd"
svc -c /var/qmail/supervise/qmail-smtpd
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtpd."
svc -d /var/qmail/supervise/qmail-smtpd
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /var/qmail/supervise/qmail-send
echo "* Restarting qmail-smtpd."
svc -u /var/qmail/supervise/qmail-smtpd
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp*
echo "Reloaded /etc/tcp.smtp."
;;
help)
cat <
<HELP
stop -- stops mail service (smtp connections refused, nothing goes out)
start -- starts mail service (smtp connection accepted, mail can go out)
pause -- temporarily stops mail service (connections accepted, nothing leaves)
cont -- continues paused mail service
stat -- displays status of mail service
cdb -- rebuild the tcpserver cdb file for smtp
restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it
doqueue -- sends qmail-send ALRM, scheduling queued messages for delivery
reload -- sends qmail-send HUP, rereading locals and virtualdomains
queue -- shows status of queue
alrm -- same as doqueue
hup -- same as reload
HELP
;;
*)
echo "Usage: $0 {start|stop|restart|doqueue|reload|stat|pause|cont|cdb|queue|help}"
exit 1
;;
esac
exit 0


Nota:se qmail dovesse interrompersi dopo pochi istanti dall'avvio,potete modificare il comando env
nella sezione start dello script con il comando nohup:

nohup env - PATH="$PATH" svscan &


Ovviamente questo script andrà inserito opportunamente in uno degli init scripts del sistema come ad
esempio /etc/rc.d/init.d.Lo script lo potreste chiamare qmail (che fantasia!) e lo dovrete collegare
simbolicamente nelle varie /etc/rc.d/rcX.d dove X é chiaramente il runlevel e RCDIR la directory:

ln -s ../init.d/qmail RCDIR/rc0.d/K30qmail
ln -s ../init.d/qmail RCDIR/rc1.d/K30qmail
ln -s ../init.d/qmail RCDIR/rc2.d/S80qmail
ln -s ../init.d/qmail RCDIR/rc3.d/S80qmail
ln -s ../init.d/qmail RCDIR/rc4.d/S80qmail
ln -s ../init.d/qmail RCDIR/rc5.d/S80qmail
ln -s ../init.d/qmail RCDIR/rc6.d/K30qmail


Ovvio anche che lo script qmail abbia permessi di esecuzione e che sia raggiungibile dal PATH:

chmod 755 /etc/rc.d/init.d/qmail
ln -s /etc/rc.d/init.d/qmail /usr/local/sbin

La configurazione dovrebbe essere terminata ma solo per quello che abbiamo descritto:
basta leggersi qualche documento sul sito ufficiale di qmail o a questo collegato,
per scoprire la quantità incredibile di optional e adds-on dedicate a questo MTA.

top

 

Ringraziamenti Acknowledgements

JNOS:
Per il JNOS in particolare e il TCP/IP in generale,la lista delle persone da ringraziare é piuttosto lunga,
e probabilmente incompleta,comunque tra queste devo citare:
Renzo,I6KZR,Daniele,I3FUE(autore della versione italianizzata del JNOS/MS-DOS),
Emiliano,IW5DWA(per la configurazione del JNOS/MSDOS con driver axppdrvr FLEXNET),
Stefano,IK5LZC(SySOP del gateway ir5tcp.ampr.org e coordinatore regionale tcp/ip)...
Foreign list:
A lot of the nos-bbs list's members and particularly:
James P. Dugal,N5KNX(JNOS source code maintainer),
Ronnie Hale,W0PLW(for the large amount of examples about autoexec.nos)
Bob Nielsen,N7XY,Bob and David Tenty,VE3TOK(SySOPs of port.ve3mch.ampr.org),
Jose R.Marte A.,HI8GN(JNOS and XASTIR too!!),
Michael Day,KF9UG(examples about JNOS and PPP.SySOP of leogate.kf9ug.ampr.org),
Jaye Inabnit,KE6SLS(examples about JNOS and PPP)...

QMAIL:
Non posso esimermi dal citare tre persone che si sono particolarmente prodigate aiutandomi
e dandomi degli ottimi consigli per configurare qmail-che magari a chi si affaccia per la prima volta
in ambiente linux potrebbe apparire come un programma difficilissimo da capire e far funzionare-
dimostrando ancora una volta lo spirito della comunità linux di estrema e qualificata collaborazione.
Camillo Bongiovanni,El-Chupacabra,Dario...
Grazie davvero ragazzi,senza di Voi non ci sarei riuscito!

top


 

back!