Archive for the ‘qmail’ Category.

Su Qmail forward di una (o più) email verso un altro server

In fase di migrazione da un server all’altro, come nel mio caso che sono in dismissione del glorioso Qmail per passare (sic) su un Exchange 2010, c’è bisogno che le caselle che vengono eliminate da un server (qmail) e spostate sull’altro (Exchange) ricevano la posta deall’esterno.

Nel mi caso, fino ad oggi, il front-end su internet che riceva la posta e la filtra è un antispam, successivamente le email vengono inviate a Qmail che le mantiene in pancia fino a che il connettore di Exchange non se le scarica.

Al momento ho circa 700 utenti su qmail, 120 dei quali sono di fatto su Exchange e scaricano la posta con un programma apposito (PopCon nel mio caso) detto appunto “connettore”.

Purtroppo Popcon è sequenziale, prima si carica un utente alla volta le 120 caselle e appoggia le email su disco, dopo le consegna a Exchange tutte assieme, la cosa è veramente male ottimizzata, magari parallelizzare lo scarico delle email e la consegna una casella alla volta all’Exchange, invece che tutte assieme alla fine, darebbero un pochino di spinta al lavoro, sopratutto quando avrò alcune centinaio caselle da scaricare ad ogni giro, csarico che costa, se non ci sono mail da prende, un secondo a casella.

Qmail però mi permette di istradare, senza nemmeno guardarle, le email dirette a “Nome.Cognome@miodomino.it”, basta creare nella cartella sul Qmail che contiene le caselle di posta del dominio “miodominio.it” un file chiamato:

.qmail-nome:cognome

il : (due punti) sostituisce il . (punto) quando è presente nell’indirizzo di posta, infatti se creiamo il file chiamandolo .qmail-nome.cognome il forward non funzionerà.

In questo file ci deve essere scritto:

|qmail-remote [10.239.1.177] “$SENDER” “$EXT@$HOST”

dove 10.239.1.177 è l’indirizzo dell’Exchange server che deve ricevere le email. Tutti i fkile devono essere uguali, qundi possiamo creare un solo file e creare link simbolici con il nome giusto.

Una volta creato il file la casella esistente su qmail viene ignorata e può essere rimossa.

Nelle liste su Qmail l’utente rimane operativo.

Qmail lento a permettere la connessione smtp

Se QMAIL è lento a far connettere i client che inviano la posta e si è controllato che il dns funzioni con un dig e il file “/var/qmail/control/blacklists” è a posto (vuopto nel mio caso) non rimane che disabilitare il controllo RBL modificando il file “/var/qmail/supervise/smtp/run” togliendo nell’ultima riga la chiamata al programma, ovvero la voce $RBLSMTPD e riavviando qmail con “qmailctl restart”

 

admin-toaster lento ad aprirsi

Da questa mattina, e lo aveva già fatto in passato, la pagina dell’admin-toaster del mio qmail ci metteva un sacco ad aprirsi. Solo ad aprirsi, una volta caricata andava veloce come sempre.

Presupponendo un timeout ho googleto ed ho scoperto che il toaster fà un controllo sul sito di chi ha creato lo script per verificare delgi aggiornamenti.

Basta editare il file

/usr/share/toaster/htdocs/admin/index.php

e cambiare da

<? print_updates(); ?>

a

<? //print_updates(); ?>

e tutto si risolve

Aggiungere spazio ad un volume LVM, tipico di Centos e RedHat

Mettiamo caso di avere un server linux con un volume LVM, tipico di Centos / Redhat, ma LVM è disponibile su ogni distribuzione linux moderna, io ne ho in corso di installazione proprio uno in questi giorni con jboss, oracle e un remote desktop, il cui spazio (nel nostro caso 15 giga) è insufficente per il lavoro che deve svolgere

LVM ha la simpatica caratteristica di poter aggiungere, in alcuni casi a caldo, spazio ai suoi volumi, vediamo come fare:

Per prima cosa aggiungiamo un altro disco, nel mio caso da 6 giga e, riavviato il server, vediamo che le partizioni sono:

fdisk -l

Disco /dev/sda: 15.0 GB, 15032385536 byte
255 heads, 63 sectors/track, 1827 cylinders
Unità  = cilindri di 16065 * 512 = 8225280 byte
Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1827    14570955   8e  Linux LVM
Disco /dev/sdb: 6442 MB, 6442450944 byte
255 heads, 63 sectors/track, 783 cylinders
Unità  = cilindri di 16065 * 512 = 8225280 byte

Il disco /dev/sdb non contiene una tabella delle partizioni valida

———————

Creiamo una partizione e formattiamola ext3

fdisk /dev/sdb

np1 – un paio di invii e w per scrivere le modifiche.

mkfs.ext3 /dev/sdb1 per creare il file system in EXT3

Rifacciamo fdisk -l per sincerarci che la partizione sia formattata come si deve:

Disco /dev/sda: 15.0 GB, 15032385536 byte
255 heads, 63 sectors/track, 1827 cylinders
Unità  = cilindri di 16065 * 512 = 8225280 byte
Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1827    14570955   8e  Linux LVM
Disco /dev/sdb: 6442 MB, 6442450944 byte
255 heads, 63 sectors/track, 783 cylinders
Unità  = cilindri di 16065 * 512 = 8225280 byte
Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         783     6289447   83  Linux

Adesso colleghiamo la partizione formattata al volume dinamico e passeremo da cosi:

vgdisplay

--- Volume group ---
VG Name               VolGroup00
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  3
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                1
Act PV                1
 VG Size               13,88 GB   <------
PE Size               32,00 MB
Total PE              444
Alloc PE / Size       444 / 13,88 GB
Free  PE / Size       0 / 0
VG UUID               AGNhTW-HXd3-lYjM-a6DC-8Don-zaqP-dwSpVG

diamo il comando di estensione del volume:

vgextend   /dev/VolGroup00 /dev/sdb1

/dev/hda: open failed: Read-only file system
No physical volume label read from /dev/sdb1
Physical volume "/dev/sdb1" successfully created
Volume group "VolGroup00" successfully extended

a cosi:

vgdisplay

--- Volume group ---
VG Name               VolGroup00
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  4
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                2
Act PV                2
 VG Size               19,84 GB    <------
PE Size               32,00 MB
Total PE              635
Alloc PE / Size       444 / 13,88 GB
Free  PE / Size       191 / 5,97 GB
VG UUID               AGNhTW-HXd3-lYjM-a6DC-8Don-zaqP-dwSpVG

adesso aggiungiamo lo spazio:

lvextend -L +SIZE VolGroup00/LogVol00

dove SIZE è la dimenisone, in mega, di quanto si vuole incrementare il volume.

Per divertimento ho usato dei pezzetti da mezzo giga e dando il comando a ripetizione fino all’esaurimento dello spazio libero disponibile, l’ho fatto crescere.

A questo punto, per fare il resize del file system, che ricordo essere EXT3 nel mi caso, servirebbe il comando resize2fs che però funziona solo se il filesystem è smontato, quindi, visto io devo far crescere la root dovrò usare una live.

Ho usato quello che avevo sotto mano: una ubuntu desktop LTS 10.4 32bit. Una volta avviata la Ubuntu si deve andare a prompt di shell e dare questi comandi:

sudo su (per diventare root, a me usare sudo continuamente mi da fastidio)

apt-get update
apt-get install lvm2

modprobe dm_mod

2 logical volume(s) in volume group "VolGroup00" now active

vgchange -a y

e2fsck -f /dev/VolGroup00/LogVol00

e2fsck 1.41.11 (14-Mar-2010)
Adding dirhash hint to filesystem.
Passo 1: Controllo di inode, blocco(i) e dimensioni
Passo 2: Analisi della struttura delle directory
Passo 3: Controllo della connettività  di directory
Pass 4: Controllo del numero dei riferimenti
Pass 5: Checking gruppo summary information
/dev/VolGroup00/LogVol00: ***** IL FILESYSTEM E' STATO MODIFICATO *****
/dev/VolGroup00/LogVol00: 116413/3112960 files (0.4% non-contiguous), 1420333/3112960 blocks

resize2fs  /dev/VolGroup00/LogVol00

resize2fs 1.41.11 (14-Mar-2010)
Resizing the filesystem on /dev/VolGroup00/LogVol00 to 4669440 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 4669440 blocks long.

init 6 (per riavviare il server)

Una volta riavviato facciamo un ultimo controllo

df -h

Filesystem         Dimens. Usati Disp. Uso% Montato su
/dev/mapper/VolGroup00-LogVol00 18G  5,1G   12G  31% /
/dev/sda1              99M   13M   82M  13% /boot
tmpfs                 506M     0  506M   0% /dev/shm

e vedremo che il file system è cresciuto, facile come farsi mettere un bel paio di tette finte come da foto dell’articolo. :-D

Qmailtoaster è molto lento a far scaricare la posta

Oggi pomeriggio, improvisamente, il nostro QMail server aziendale è diventato improvisamente molto lento nel far scaricare la posta via pop3, mentre via webmail, imap o per l’invio via smtp andava come al solito.

Il problema era che la validazione del singolo utente impiegava oltre un minuto, ed alcuni client di posta andavano addirittura in time out, ovviamente il popcon sull’exchange server faceva tenerezza, andava a passo di lumaca, ma poi, una volta che il client si era validato, la posta veniva scaricata normalmente, quindi era lampante che fosse problema di un qualche time-out.

Consultandomi con il mio amico Google ho scoperto che è un problema di dns quando il server di posta è dietro un firewall che fà nat / port forwarding.

Peraltro la cosa è assai strana, visto che quel Qmail dietro un firewall (sempre linux) c’è nato e vissuto per quasi due anni, ed io non ho toccato nulla su iptables da almeno due settimane.

Le modifiche per il fix si fanno nel file /var/qmail/supervise/pop3/run che va cambiato da cosi:

#!/bin/sh
PASSPROG=”/home/vpopmail/bin/vchkpw”
HOSTNAME=`hostname –fqdn`
exec /usr/bin/softlimit -m 9000000 \
/usr/bin/tcpserver -v -R -c 200 0 110 \
/var/qmail/bin/qmail-popup $HOSTNAME \
$PASSPROG /var/qmail/bin/qmail-pop3d Maildir 2>&1

a cosi:

#!/bin/sh
PASSPROG=”/home/vpopmail/bin/vchkpw”
HOSTNAME=`hostname –fqdn`
exec /usr/bin/softlimit -m 9000000 \
/usr/bin/tcpserver -v -R -H -l0 -c 200 0 110 \
/var/qmail/bin/qmail-popup $HOSTNAME \
$PASSPROG /var/qmail/bin/qmail-pop3d Maildir 2>&1

-H: Do not look up the remote host name in DNS; remove the environment variable $TCPREMOTEHOST. To avoid loops, you must use this option for servers on TCP port 53.

-l localname: Do not look up the local host name in DNS; use localname for the environment variable $TCPLOCALHOST. A common choice for localname is 0. To avoid loops, you must use this option for servers on TCP port 53.

Dopo questa modifica è obbligatorio riavviare il server, il solo riavvio dei servizi non è sufficente.

Questi problemi improvisi senza causa apparente mi fanno perdere alcuni anni di vita all’improvviso, e quindi scatta il sistemista mannaro che dorme. :-)

Troppi file in una directory sul Qmail e la posta non si scarica

Ho un account di posta dove vengono recapitate email di controllo generate da un programma, che nessuno legge, e questo programma è un gran chiacchierone, quindi mi sono ritrovato con oltre 303.000 email nella cartella, 1,8 giga  di spazio allocato.

Una directory così grossa, seppur gestita perfettamente gestita dal s.o. (centos 5.0 ext3), mi uccide il server imap che deve enumerare tutta questa roba che esaurisce la memoria e muore.

Siccome sono un poco a corto di spazio su Qmail ho deciso di scaricare via Imap le email in un file di outlook (le più vecchie) e farle fuori dal mail server.

Purtroppo outlook mi chiede la password, che sò essere giusta, e poi mi rende un errore con un laconico:

ERR: Unable to scan %HOME/Maildir

forse i file nella maildir sono un filino troppi, ergo mi loggo sul mail server e sposto i file dalla cartella in un’altra cartella, inizio a spostare tutti i file piu’ vecchi di 140 giorni

find . -maxdepth 1 -mtime +240  | xargs -I {} -t mv {} a/daparte

e poi andando per tentativi vedo quand’e’ che outlook riesce a scaricare la posta e faccio pulizia.