24/09/2012

Lotus Domino “CD to MIME error”

Nei giorni scorsi ho avuto i miei bei grattacapi per venire a capo di un problema di conversione MIME su Lotus Domino 8.5.x (sperimentato su Domino 8.5.2FP2 e rilevato anche post upgrade a Domino 8.5.3FP2 Interim Fix 1).
Il problema si presenta ogni qualvolta un task del server effettua la conversione dal formato Notes Rich Text a MIME, nel mio caso durante il download dei documenti tramite task IMAP oppure l’invio di nuove mail tramite Lotus Traveler, da quanto ho trovato online però sembra che le casistiche siano molteplici a seconda della configurazione del proprio server.

Per rilevare correttamente il problema suggerisco di attivare i seguenti parametri di debug nel file notes.ini del server (presente nella directory dei binari di Domino se usate Windows, oppure nella Domino data directory se usate Linux).

debugmimeconversion=1
converter_log_level=40

Una volta fatto questo i messaggi in console diventeranno un tantino verbosi mostrando qualche dettaglio in più…

ccCVSOpenSession() > CVS: Not initialized
CHInitCVSSession> CVS: Not initialized
OCInitCVSSession> CVS: Not initialized

…che mi ha portato a identificare la fonte del problema nei file .res presenti nella directory /opt/ibm/lotus/notes/85030/linux/res (su Linux chiaramente).

A questo punto ho sguinzagliato i segugi sul web (in particolare sul forum di Developerworks) e ho trovato altre casistiche simili e due interessanti technote IBM:

Verificato che i file cvs310.res non sono vuoti e il checksum coincide con quanto riportato dalla technote IBM

[root@drakaris res]# cd /opt/ibm/lotus/notes/85030/
[root@drakaris 85030]# find ./ -name 'cvs310.res'
./linux/cvs310.res
./linux/res/it_IT.UTF-8/cvs310.res
[root@drakaris 85030]# find ./ -name 'cvs310.res' | xargs ls -la
-rwxr-xr-x 1 root root 2432 13 set 14:20 ./linux/cvs310.res
-rwxr-xr-x 1 root root 2432 28 feb 2002 ./linux/res/it_IT.UTF-8/cvs310.res
[root@drakaris 85030]# find ./ -name 'cvs310.res' | xargs sum
34709 3 ./linux/cvs310.res
34709 3 ./linux/res/it_IT.UTF-8/cvs310.res

A questo punto ho verificato i permessi della directory e dei file contenuti per essere sicuro che l’owner fosse root:root e i permessi settati a 755 (grazie a Lutz Geschinsky per la dritta), ma nonostante questo il problema non sembra essersi risolto.

Esaurita ogni altra opzione sono passato all’ipotesi più catastrofica, ovvero una corruzione di altri file nella directory dei binari di Domino.
L’unica soluzione ipotizzabile  è stata quella della ricostruzione totale dei binari partendo da un setup pulito, quindi:

  1. shutdown Domino
  2. cancellazione (o move) della directory /opt/ibm/lotus
  3. reinstallazione Domino utilizzando la stessa data directory
  4. installazione Fixpack 2, Interim Fix 1 e Lotus Traveler 8.5.3.2

Una volta terminata l’installazione e lanciato il servizio tutto ha ripreso a funzionare correttamente inclusa la conversione Notes rtf  -> MIME.

19/09/2012

Installazione agente Nagios nrpe tramite yum

Partiamo dal presupposto che Nagios è:

  • figo
  • utile
  • indispensabile
  • funzionale

L’accoppiata Nagios + nrpe poi diventa una vera manna dal cielo in tutte quelle occasioni dove per problemi di rete o per esigenze particolari un check passivo non è possibile o quantomeno non è così utile.

L’installazione del package nagios-nrpe è relativamente semplice, occorre soltanto soddisfare qualche dipendenza, se però occorre configurare diverse macchine diventa molto utile poterlo fare tramite yum.

Per far questo viene in aiuto il sempreverde respository di RPMForge, installando gli rpm disponibili alla pagina di download, scaricate l’rpm relativo alla vostra distribuzione RedHat based (cat /etc/redhat-release) e architettura (uname -a) e installatelo usando il comando rpm -ivh, es:

[root@drakaris ~]# rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
Preparazione in corso... ######################## [100%]
 1:rpmforge-release ######################## [100%]

Una volta fatto questo potete cercare il package corretto tramite il comando yum search:

[root@drakaris yum.repos.d]# yum search nagios-nrpe
Loaded plugins: katello, product-id, security, subscription-manager
Updating certificate-based repositories.
Unable to read consumer identity
rpmforge | 1.9 kB 00:00
rpmforge/primary_db | 6.9 MB 00:01
=== Matched: nagios-nrpe ===
nagios-nrpe.x86_64 : Nagios Remote Plug-ins Execution daemon

A questo punto lanciate il comando yum per installare il package:

[root@drakaris yum.repos.d]# yum install nagios-nrpe
 Loaded plugins: katello, product-id, security, subscription-manager
 Updating certificate-based repositories.
 Unable to read consumer identity
 rpmforge | 1.9 kB 00:00
 rpmforge/primary_db | 6.9 MB 00:01
 Setting up Install Process
 Resolving Dependencies
 --> Running transaction check
 ---> Package nagios-nrpe.x86_64 0:2.12-1.el5.rf set to be updated
 --> Processing Dependency: nagios-plugins for package: nagios-nrpe
 --> Running transaction check
 ---> Package nagios-plugins.x86_64 0:1.4.16-1.el5.rf set to be updated
 --> Processing Dependency: fping for package: nagios-plugins
 --> Processing Dependency: perl(Net::SNMP) for package: nagios-plugins
 --> Running transaction check
 ---> Package fping.x86_64 0:3.3-1.el5.rf set to be updated
 ---> Package perl-Net-SNMP.noarch 0:5.2.0-1.2.el5.rf set to be updated
 --> Processing Dependency: perl(Socket6) >= 0.19 for package: perl-Net-SNMP
 --> Processing Dependency: perl(Digest::HMAC) for package: perl-Net-SNMP
 --> Processing Dependency: perl(Crypt::DES) for package: perl-Net-SNMP
 --> Processing Dependency: perl(Digest::SHA1) for package: perl-Net-SNMP
 --> Running transaction check
 ---> Package perl-Crypt-DES.x86_64 0:2.05-3.2.el5.rf set to be updated
 ---> Package perl-Net-SNMP.noarch 0:5.2.0-1.2.el5.rf set to be updated
 --> Processing Dependency: perl(Socket6) >= 0.19 for package: perl-Net-SNMP
 --> Processing Dependency: perl(Digest::HMAC) for package: perl-Net-SNMP
 --> Processing Dependency: perl(Digest::SHA1) for package: perl-Net-SNMP
 --> Finished Dependency Resolution
 perl-Net-SNMP-5.2.0-1.2.el5.rf.noarch from rpmforge has depsolving problems
 --> Missing Dependency: perl(Socket6) >= 0.19 is needed by package perl-Net-SNMP-5.2.0-1.2.el5.rf.noarch (rpmforge)
 perl-Net-SNMP-5.2.0-1.2.el5.rf.noarch from rpmforge has depsolving problems
 --> Missing Dependency: perl(Digest::HMAC) is needed by package perl-Net-SNMP-5.2.0-1.2.el5.rf.noarch (rpmforge)
 perl-Net-SNMP-5.2.0-1.2.el5.rf.noarch from rpmforge has depsolving problems
 --> Missing Dependency: perl(Digest::SHA1) is needed by package perl-Net-SNMP-5.2.0-1.2.el5.rf.noarch (rpmforge)
Error: Missing Dependency: perl(Socket6) >= 0.19 is needed by package perl-Net-SNMP-5.2.0-1.2.el5.rf.noarch (rpmforge)
Error: Missing Dependency: perl(Digest::SHA1) is needed by package perl-Net-SNMP-5.2.0-1.2.el5.rf.noarch (rpmforge)
Error: Missing Dependency: perl(Digest::HMAC) is needed by package perl-Net-SNMP-5.2.0-1.2.el5.rf.noarch (rpmforge)
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest

Ahi ahi pare ci siano problemi con le dipendenze, i package perl-Digest-HMAC, perl-Digest-SHA1 e perl-Socket6 sono richiesti per l’installazione di nagios-nrpe.

In condizioni ideali (ovvero server in grado di raggiungere i repository pubblici di yum o registrato su RedHat Network con subscription attiva) il problema non si porrebbe, yum andrebbe a recuperare gli rpm necessari e soddisferebbe le dipendenze.

Se invece il vostro server non è in grado di scaricare i package rpm in automatico potete sempre utilizzare la iso del dvd di installazione come repository per yum.
Copiate la iso in locale o montate una risorsa di rete che la contenga (nell’esempio si trova in /mnt/nfs/rhel-server-5.8-x86_64-dvd.iso) e montate la iso con il comando:

 [root@infraced239 ~]# mount -t iso9660 -o loop /mnt/nfs/rhel-server-5.8-x86_64-dvd.iso /mnt/iso

Ora create un nuovo file in /etc/yum.repos.d (es /etc/yum.repos.d/dvd.repo) contenente la seguente sintassi (il parametro baseurl deve corrispondere al percorso degli rpm presenti nella iso che avete montato in precedenza):

[rhel-cd]
name=Red Hat Enterprise Linux $releasever - $basearch - CD
baseurl=file:///mnt/iso/Server/
enabled=1
gpgcheck=0

A questo punto ripetete il comando yum install nagios-nrpe:

[root@drakaris yum.repos.d]# yum install nagios-nrpe
 Loaded plugins: katello, product-id, security, subscription-manager
 Updating certificate-based repositories.
 Unable to read consumer identity
 Setting up Install Process
 Resolving Dependencies
 --> Running transaction check
 ---> Package nagios-nrpe.x86_64 0:2.12-1.el5.rf set to be updated
 --> Processing Dependency: nagios-plugins for package: nagios-nrpe
 --> Running transaction check
 ---> Package nagios-plugins.x86_64 0:1.4.16-1.el5.rf set to be updated
 --> Processing Dependency: fping for package: nagios-plugins
 --> Processing Dependency: perl(Net::SNMP) for package: nagios-plugins
 --> Running transaction check
 ---> Package fping.x86_64 0:3.3-1.el5.rf set to be updated
 ---> Package perl-Net-SNMP.noarch 0:5.2.0-1.2.el5.rf set to be updated
 --> Processing Dependency: perl(Socket6) >= 0.19 for package: perl-Net-SNMP
 --> Processing Dependency: perl(Digest::HMAC) for package: perl-Net-SNMP
 --> Processing Dependency: perl(Crypt::DES) for package: perl-Net-SNMP
 --> Processing Dependency: perl(Digest::SHA1) for package: perl-Net-SNMP
 --> Running transaction check
 ---> Package perl-Crypt-DES.x86_64 0:2.05-3.2.el5.rf set to be updated
 ---> Package perl-Digest-HMAC.noarch 0:1.01-15 set to be updated
 ---> Package perl-Digest-SHA1.x86_64 0:2.11-1.2.1 set to be updated
 ---> Package perl-Socket6.x86_64 0:0.19-3.fc6 set to be updated
 --> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================================
 Package Arch Version Repository Size
 ==============================================================================================================================
 Installing:
 nagios-nrpe x86_64 2.12-1.el5.rf rpmforge 35 k
 Installing for dependencies:
 fping x86_64 3.3-1.el5.rf rpmforge 62 k
 nagios-plugins x86_64 1.4.16-1.el5.rf rpmforge 1.9 M
 perl-Crypt-DES x86_64 2.05-3.2.el5.rf rpmforge 37 k
 perl-Digest-HMAC noarch 1.01-15 rhel-cd 12 k
 perl-Digest-SHA1 x86_64 2.11-1.2.1 rhel-cd 49 k
 perl-Net-SNMP noarch 5.2.0-1.2.el5.rf rpmforge 96 k
 perl-Socket6 x86_64 0.19-3.fc6 rhel-cd 21 k
Transaction Summary
 ==============================================================================================================================
 Install 8 Package(s)
 Upgrade 0 Package(s)
Total download size: 2.2 M
 Is this ok [y/N]: y
 Downloading Packages:
 (1/8): nagios-nrpe-2.12-1.el5.rf.x86_64.rpm | 35 kB 00:00
 (2/8): perl-Crypt-DES-2.05-3.2.el5.rf.x86_64.rpm | 37 kB 00:00
 (3/8): fping-3.3-1.el5.rf.x86_64.rpm | 62 kB 00:00
 (4/8): perl-Net-SNMP-5.2.0-1.2.el5.rf.noarch.rpm | 96 kB 00:00
 (5/8): nagios-plugins-1.4.16-1.el5.rf.x86_64.rpm | 1.9 MB 00:00
 ------------------------------------------------------------------------------------------------------------------------------
 Total 1.5 MB/s | 2.2 MB 00:01
 Running rpm_check_debug
 Running Transaction Test
 Finished Transaction Test
 Transaction Test Succeeded
 Running Transaction
 Installing : perl-Digest-SHA1 1/8
 Installing : perl-Socket6 2/8
 Installing : fping 3/8
 Installing : perl-Crypt-DES 4/8
 Installing : perl-Digest-HMAC 5/8
 Installing : perl-Net-SNMP 6/8
 Installing : nagios-plugins 7/8
 Installing : nagios-nrpe 8/8
 rhel-cd/productid | 1.7 kB 00:00
 Installed products updated.
Installed:
 nagios-nrpe.x86_64 0:2.12-1.el5.rf
Dependency Installed:
 fping.x86_64 0:3.3-1.el5.rf nagios-plugins.x86_64 0:1.4.16-1.el5.rf perl-Crypt-DES.x86_64 0:2.05-3.2.el5.rf
 perl-Digest-HMAC.noarch 0:1.01-15 perl-Digest-SHA1.x86_64 0:2.11-1.2.1 perl-Net-SNMP.noarch 0:5.2.0-1.2.el5.rf
 perl-Socket6.x86_64 0:0.19-3.fc6
Complete!

GOTCHA!

18/09/2012

iNotes not working correctly with Firefox 15

L’update a Firefox 15 ha portato con se l’ennesima restrizione nell’esecuzione di codice lato client che provoca un malfunzionamento nell’iNotes di Lotus Domino 8.5.3.
Il problema si manifesta con l’impossibilità di utilizzare alcune features (es allegati o anche banalmente cliccare il tasto “invia” per spedire una mail) con la webmail in modalità full e Firefox 15.

In attesa di una fix IBM ha rilasciato un workaround che comporta l’esecuzione dei vecchi script al posto dei nuovi.
Per  attivare questa opzione è sufficiente modificare il file notes.ini del server Domino aggiungendo la direttiva:

iNotes_WA_FirefoxSignedScript=0

Una volta modificato il file notes.ini basta un restart del task http (“restart task http” da console) oppure se siete maneschi un restar del server (restart server).

Link alla technote IBM

15/08/2012

Progetto DebianPad

Uno degli obbiettivi che mi ero prefisso di portare a termine durante queste ferie agostane era il progetto DebianPad, ovvero la migrazione del mio fido ThinkPad T500 da Windows 7 Professional a Linux, preferibilmente Debian Weezy.

L’installazione e configurazione di Debian è filata liscia “come il culo di un bambino”(cit), ho fatto funzionare praticamente tutto, dal client Oracle ad Apache Directory, ho trasferito tutto, virtualizzato e fatto girare con Vmware Player la mia vecchia istanza di Win7, ho pure reimportato tutte le chiavi private per accedere ai server e ai repository svn e git… ma è rimasto quell’unico insormontabile scoglio che risponde al nome di IBM, più precisamente IBM Lotus Notes.

IBM rilascia ufficialmente una versione del client Notes di base per linux, pacchettizzata rpm (per RedHat e Suse) e deb (principalmente per Ubuntu e Debian) ma solo per sistemi a 32bit, far girare Notes su un sistema operativo a 64bit (che all’alba del terzo millennio dovrebbe rappresentare la norma…) è un’impresa a dir poco avventurosa.

Alla fine ce l’ho fatta, ho fatto girare il client Notes 8.5.3 seguendo una serie di guide che veramente sanno di esoterico, mi sono addentrato a colpi di machete nella selva di dipendenze e ne sono uscito vincitore, ho visto il client Notes girare su Debian Weezy e poi anche su Ubuntu 12.04.
Il vero problema però è un altro, non esiste una versione per linux del corrispondente client Lotus Administrator e Designer, e questo è un grosso, grossissimo problema per il sottoscritto.

Mi sono illuso che sarebbe stato sostenibile avviare alla bisogna il client Administrator e Designer da virtual machine Vmware, in realtà provandolo un paio di giorni ho sperimentato quanto sia logorante dipendere da una macchina virtuale locale per fare le cose che veramente servono…

Non è un limite di linux, è una stramaledetta merdata made in IBM, che all’alba del terzo millennio non si decide a rilasciare il client di sviluppo e di amministrazione per linux (idem per MacOS X) di uno dei loro prodotti più sbandierati, diffusi e multipiattaforma (per lo meno lato server), prodotto che dalla versione 8 ha visto una vera e propria nuova giovinezza!
Ma oltre il danno c’è pure la beffa di un client base che esiste solo in versione 32bit e per farlo girare su OS a 64bit occorre varcare la soglia tra informatica e rito voodoo, una cosa che all’alba del terzo millennio non è davvero accettabile… per fino installare un cluster di WebSphere Portal o un RAC Oracle è infinitamente più semplice.

Ora scatta una bella mail cazziatone a quel genio di Ed Brill, anzichè perdere tempo e sparare cazzate a vanvera su cagate social farebbero bene a sistemare il software che hanno in casa e che i loro clienti e partner realmente usano.

12/06/2012

Creazione di un filesystem virtuale

A volte capita di dover tamponare situazioni impreviste o una pessima analisi e progettazione di un sistema con qualche pezza.

Prendiamo ad esempio una directory temporanea dove qualche servizio va a scrivere quantità industriali di file, il buon senso vorrebbe che questi file fossero scritti su un volume ad-hoc, in modo che non vadano ad saturare tutto lo storage disponibile su un volume condiviso creando problemi anche su altri servizi che nulla hanno a che fare con quei file.

Se vi trovate ad affrontare una di queste situazioni su un server linux le soluzioni sono molteplici, una di queste è la creazione di un filesystem virtuale dedicato.
Questa soluzione non è certo la più elegante (un logical volume  LVM è preferibile dal mio punto di vista) ma è quella che offre una flessibilità tale da essere implementabile pressochè in qualsiasi condizione, non necessità di nuovo storage, non richiede fermi, si implementa a caldo, non comporta operazioni invasive sui dispositivi esistenti.

Prima di tutto create un file che fungerà da device, per farlo utilizzate il comando touch

A questo punto utilizzate il comando dd per creare il dispositivo, per rimanere aderenti ai dispositivi utilizzati generalmente suggerisco di utilizzare una dimensione di blocchi pari a 4k (bs=4096), il numero di blocchi dipende dalla dimensione del dispositivo che volete configurare; nell’esempio tale dimensione è pari a 1GB (262144 blocchi * 4096 = 1073741824 byte, ovvero 1GB).

Create il filesystem con il consueto comando mkfs

Ora create una directory dove montare il nuovo filesystem e montatelo

Et voilà! Il filesystem virtuale è servito!

« Post precedenti | Post successivi »