E’ un sito di appunti.

Di norma faccio il sistemista, anche se negli ultimi anni mi sono rotto decisamente le balle a combattere ogni giorno con gente piu’ o meno decerebrata.

In questo sito ho inserito una raccolta di appunti, spesso scritti di getto, su alcune delle cose che mi sono capitate tra le mani. Magari possono tornare utili a qualcuno.

Non sono esatte, sicuramente ci sono parecchi casini e svarioni. Se ne trovate, per favore, mandate una mail a mauro [at] tazzadelcesso [dot] com con l’errore e la correzione. Anche solo l’errore. Ma siate chiari, altrimenti non vi piglio minimanente in attenzione.

Posted on by mauro | Leave a comment

htaccess: dimensioni dell’upload

php, come opzione di default (modificabile in php.ini) prevede come dimensione massima di un file caricabile il limite di 2Mb.

Questo limite puo’ essere aggiornato localmente usando due righe da inserire in htaccess:

php_value upload_max_filesize 50000000
php_value post_max_size 50000000

 

Posted in http | Tagged , , , | Leave a comment

rsyslog

rsyslog, o meglio, l’evoluzione di syslog e’ il demone che si occupa di registrare e gestire i log all’interno di una macchina linux.

la configurazione di default e’ ottima, ma in caso di aumento dei dati in entrata (mailserver in particolare, ma non tralasciamo dhcp, dns) la configurazione di default complica un po’ l’esistenza.

alcuni dati sono ridodanti. Il tipico esempio sono i messaggi di posta generati da cron che vengono contemporaneamente registrati in syslog e in mail. Leggere poi questi file diventa frustrante.

andiamo a modificare il file.
tralasciando tutte le opzioni generali mettiamo mano nella sezione che riguarda le “RULES”:

la riga che fa riferimento a syslog deve essere modificata in quanto, come indicato nella riga di default “*.*” registra tutti i messaggi di tutto quello che ha qualcosa da dire.

modifichiamo questa riga con:

*.*;auth,authpriv.none;mail.none -/var/log/syslog

in questo modo, gia’ non registriamo piu’ i dati delle mail (“mail.none“) che finiranno solo in mail.log.

una volta salvato il file, e’ sufficiente riavviare il demone che la nuova configurazione e’ subito operativa.

aggiungiamo: server dhcp

di default, il dhcpd server logga le proprie informazioni usando la riga: log-facility local7.

in pratica manda tutto quello che emette usando l’indicazione local7.

non ci resta che dire a rsyslog (o syslog) che vogliamo utilizzare un file diverso per memorizzare tutto quello che arriva con la facility “local7″:

nel file rsyslog.conf aggiungiamo l’indicazione per local7: local7.* ~/var/log/facility7.log

facciamo in modo che la stessa facility non venga registrata da altro file:

tipicamente: *.*;auth,authpriv.none,local7.none              -/var/log/syslog

salvare e riavviare.

considerando l’uso intelligente di severity e facility e’ possibile fare in modo che ogni demone possa registrare la propria messaggistica (sempre che faccia uso di rsyslog) in file organizzati a dovere in modo da non rendere impossibile l’esistenza.

riferimento: http://rsyslog.com

Posted in linux, logging, operating system, tools | Tagged , , | Leave a comment

xen: partizionamento del disco

Ci sono diversi sistemi per creare la propria configurazione xen. Anche nella definizione della struttura disco puo’ essere personalizzato a dovere.
Oltre alla definizione delle dimensioni che si possono desiderare via xen-create-image (size), possiamo creare una definizione di struttura disco usando un file appositamente create in /etc/xen-tools/partition.d.

Il file ha una struttura estremamente semplice.

Ogni partizione viene definita da una sezione che abbia inizio con due parentesi quadre:

[root], p.es, definisce la partizione di root, [home] definisce la partizione usata poi come home.

per ogni sezione vanno poi definiti:

size = ovvero la dimensione della partizione,
type = il filesystem utilizzato,
mountpoint = l’effettivo mount point , eccetto per la part. di swap,
options = ovvero le opzioni di montaggio della partizione.

facendo un esempio pratico riporto un file che utilizzo io:

[root]
size=1G
type=xfs
mountpoint=/
options=sync,errors=remount-ro

[swap]
size=1G
type=swap

[home]
size=5G
type=xfs
mountpoint=/home
options=nodev,nosuid,noexec

[tmp]
size=0.5G
type=xfs
mountpoint=/tmp
options=nodev,nosuid,noexec

per utilizzare questa struttura deve essere usata l’opzione partition=nomescelto in xen-create-image.

Posted in disk, Uncategorized, xen | Tagged , | Leave a comment

postfix: sender_dependent_relayhost_maps

Trattasi di una comodissima opzione di postfix che consente selezionare i server di inoltro in base al mittente (singolo o dominio).

La spiegazione ufficiale e’ qua : http://www.postfix.org/postconf.5.html.

l’utilizzo e’ semplice.

creiamo un file dove scriviamo:

@dominio serverdiinoltro1
account@dominio serverdiinoltro2

un bel postmap sul file in modo da ottenere il relativo cdb.

dopo di che, in main.cnf inseriamo quanto segue:

sender_dependent_relayhost_maps = hash:/etc/postfix/sender_maps

e refreshiamo la configurazione di postfix.

il discorso postmap va bene per piccole configurazioni. nulla vieta di usare altre soluzioni piu’ performanti e adatte alle scopo in base alle necessita’.

altro link: http://readlist.com/lists/postfix.org/postfix-users/14/74989.html utile allo scopo.

 

 

 

 

 

Posted in mail | Tagged | Leave a comment

roundcube: note

installazione di roundcube.

ambiente:
lighttpd
sqlite (2), il (3) attualmente non e’ supportato.
php5-cgi installazione standard debian.

problema 1:
durante l’installazione roundcube verra’ richiesto se affidare il lavoro a db-config di debian: io rispondo sempre NO.

problema 2:
una volta individuato il posto dove piazzare il db di sqlite provvedete a rendere scrivibile da tutti la dir, almeno a utente www-data (che e’ l’utente di lighttpd).

scaricate da roundcube un pacchetto vergine di installazione di roundcube perche’ servira’ il file SQL/sqlite.initial.db che non ho trovato nell’installazione standard di roundcube.

inizializzate il db con sqlite -init “dove lo avete messo”/SQL/sqlite.initial.sql “/posizione del db/nome del file che avete intenzione di creare”.

provvedete a utenti e diritti per lo stesso discorso di cui sopra.

problema 3:
configurate il tutto (server smtp, pop e quant’altro).

ultimo dettaglio, di primo acchitto vi ritroverete davanti a un roundcube che dopo pochi istanti dal login vi sbattera’ fuori.

nei log troverete a ripetizione questo errore:

PHP Deprecated: Assigning the return value of new by reference is deprecated in /usr/share/php/MDB2.php on line 2647

poco male, non inficia, almeno per il momento, pero’, ho scoperto che roundcube va in conflitto con suhosin che ovviamente viene installato di default.

come da ricerchina veloce sul web, ho aggiornato mdb2 (per upgrade mdb2).

problema 4:

se abbiamo un’altra installazione roundcube e’ logico pensare di esportare il db e importarlo nella nuova. anche qui c’e’ un problema, semplice, ma rognoso: nel db, ci sono diverse tavole (contacts,event, messages,identities) tutte legate alla tabella users attraverso la join su users.user_id. Ogni volta che un utente si collega, se esiste in users si va avanti, altrimenti viene creato un nuovo record. Importando la tabella saltano totalmente gli id tra users e le altre tabelle in quanto sulla nuova installazione gli utenti vengono ricreati mano a mano che si collegano. Per risolvere basta risistemare gli id nelle quattro tabelle, in base alle nuove connessioni. Probabilmente ci sara’ un sistema meno incasinato, ma per il momento va bene cosi’.

altro problema relativo a un piccolo baco nella gestione dell’imap:

PHP Warning: strtolower() expects parameter 1 to be string, array given in /…/roundcube/program/include/rcube_imap.php on line 1285

(http://trac.roundcube.net/ticket/1486284)  corretto seguendo sempre le indicazioni sul trac di roundcube (http://trac.roundcube.net/changeset/3176):

net131 (131):/usr/share/roundcube/program/include# diff rcube_imap.php rcube_imap.php.originale
1285,1290c1285,1287
< //if (strtolower($part[$i][0]) == 'message' ||
< // (in_array('name', (array)$part[$i][2]) && (empty($part[$i][3]) || $part[$i][3]=='NIL'))) {
< // fetch message headers if message/rfc822 or named part (could contain Content-Location header)
< if (!is_array($part[$i][0]) && (strtolower($part[$i][0]) == 'message' ||
< (in_array('name', (array)$part[$i][2]) && (empty($part[$i][3]) || $part[$i][3]=='NIL')))) {
< $part_headers[] = $struct->mime_id ? $struct->mime_id.'.'.($i+1) : $i+1;
---
> if (strtolower($part[$i][0]) == 'message' ||
> (in_array('name', (array)$part[$i][2]) && (empty($part[$i][3]) || $part[$i][3]=='NIL'))) {
> $part_headers[] = $struct->mime_id ? $struct->mime_id.'.'.($i+1) : $i+1;

 

Posted in mail, Uncategorized | Tagged , , , | Leave a comment

Xen: max virtual machine

Questo e’ da verificare prima di mettere in moto il sistema.
Xen si basa du loop. In debian il numero di device attivabili e’ di default fissato a 5.
Il sesto non parte nemmeno.

Si deve quindi provvedere ad aumentare il numero di risorse loop mappabili. In sintesi si tratta di caricare il modulo loop con un numero maggiore attraverso l’opzione max_loop.

Si puo’ provvedere al boot modificando il file modules (modules.conf in alcune versioni) inserendo o sostituendo loop con loop max_loop=64.

se non possiamo riavviare la macchina, la soluzione e’ fermare tutte le vm xen, rimovere il modulo loop e provvedere con “modprobe loop max_loop=64″. Successivamente possiamo riavviare la baracca.

Il 64 e’ il numero di loop che potremo utilizzare.

 

Posted in virtualization, xen | Tagged , , , | Leave a comment

xen: interruzione dell’installazione.

Xen, per la generazione di un immagine ha un meccanismo tutto suo. Tra le varie operazioni che effettua, monta in loop il disco virtuale generato.
un classico mount vi dira’ (mentre state generando una nuova VM) che:

/dev/loop4 on /tmp/YJnmLmyJJ0 type xfs (rw)
proc on /tmp/YJnmLmyJJ0/proc
devpts on /tmp/YJnmLmyJJ0/dev/pts

puo’ capitare che il processo di generazione venga interrotto accidentalmente (nel mio caso, p.es, visto che lavoro sempre da remoto, ci potrebbe stare una caduta della connessione verso le macchine interessate).

in questo caso, nonostante il processo di creazione sia interrotto, i mountpoint restano attivi.

e’ buona cosa ripulire questa situazione smontando le unita’ interessate a xen.

ATTENZIONE: non andate prima a cancellare il file generato, ma smontate i vari mountpoint nel loro giusto ordine (dal piu’ basso – dev/pts, proc – al piu’ alto). Poi potete ripartire con la nuova generazione.

SUGGERIMENTO: se, come me, lavorate da remoto, un tool utile potrebbe essere “screen” che vi consente di staccare la sessione dalla connessione attiva e metterla in background. Nel caso di disconnessione, non perderete l’opera in corso.

 

Posted in virtualization, xen | Tagged | Leave a comment

vnc e firewall

vnc e’ un protocollo semplice, veloce, ma soffre rispetto ad altri concorrenti di alcune limitazioni sull’uso attraverso i firewall.
In particolare, dovendo accedere a postazioni vnc dietro un firewall si possono adottare diverse tecniche.

la prima: giocare con le porte, programmando il firewall in modo che ogni porta venga dirottata verso una particolare macchina.

la seconda: facciamo in modo che sia il server vnc a collegarsi verso di noi. Noi mettiamo il client in ascolo con l’opzione -listen .

l’ultima e quella di utilizzare la redirezione di ssh.
in pratica ci colleghiamo al nostro server – presupponde che si tratti di un server linux con tanto di ssh attivo. usiamo l’opzione -L per forwardare l’ip del vnc in ascolto sul nostro localhost. A questo punto basta pure un vncviewer localhost che gia’ possiamo connetterci.

Inoltre, per migliorare le performance, ho giocato stasera con le seguenti opzioni, che devo dire hanno reso un servizio decisamente alto al godimento della sessione:

vncviewer -compresslevel 9 -quality 0 -depth 2 -noshared -encoding tight localhost

di solito la connessione e’ abbastanza stantia. Sto’ giro e’ andata di una velocita’ notevole, ma goduta prima.

Posted in Uncategorized | Tagged , | Leave a comment

postfix e la sospensione smtp

E’ possibile sospendere temporaneamente l’smtp di postfix modificando questa chiave nella configurazione:

defer_transports

di norma, questa chiave e’ vuota, aggiungendo un =smtp viene di fatto predisposta la sospensione degli invii fino a che manualmente non si procede con un sendmail -q.

si puo’ operare in modo piu’ rapido:

postconf -e defer_transports=smtp

e successivamente, un postfix reload per aggiornare il demone.

per riprendere le normali operazioni, e’ sufficiente impostare nuovamente l’opzione a vuoto:

postconf -e defer_transports=

e successivamente procedere con postfix reload.

 

Posted in mail | Leave a comment

XEN, hints

xen ha bisogno di poche presentazioni. Si tratta di un sistema di paravirtualizzazione robusto e affidabile.

ci sono alcuni hints che tornano comodi; ora che ci lavoro, li riporto qua’ a mo’ di promemoria, tanto per comodita’ mia e di chi legge.

link utili:

debian wiki: http://wiki.debian.org/Xen

valent:

http://www.valent-blog.eu/2007/09/13/creazione-di-virtual-machine-per-xen/

note:

xm: utilita’ di gestione (avvio, stop, ingresso)

creazione di una vm (comandi che uso io)

xen-create-image

–fs = xfs installazione del sistema in xfs. Sono disponibili anche altri filesystems.

–password = XXXXX se non vogliamo la generazione della pwd automatica (–genpass deve essere impostato a 0, altrimenti verra’ comunque generata la password casuale)

–hostname = CICCIO hostname da utilizzare

–ip = xxx.xxx.xxx.xxx  indirizzo ip di accesso. In alternativa e’ possbile indicare –dhcp laddove si ha la gestione del dhcp

–netmask = xxx.xxx.xxx.xxx

–gateway = xxx.xxx.xxx.xxx

–nameserver = xxx.xxx.xxx.xxx

–memory = 256M memoria messa a disposizione della macchina virtuale

–size = 5G dimensione del disco

–swap = 256M dimensione dello spazio di swap

–dir = /home/xxxxx posizione della macchina virtuale

–pygrub (http://wiki.xensource.com/xenwiki/PyGrub)

 

 

 

Posted in virtualization, xen | Tagged | Leave a comment