Aggiornamento a Debian 7

5 gennaio 2014

Con non pochi patemi d’animo, questa mattina ho aggiornato il server che ospita questo blog. Più o meno la procedura di aggiornamento seguita è stata questa.

Prima
# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 6.0.8 (squeeze)
Release: 6.0.8
Codename: squeeze

# uname -mrs
Linux 2.6.32-5-amd64 x86_64

Dopo
# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 7.3 (wheezy)
Release: 7.3
Codename: wheezy

# uname -mrs
Linux 3.2.0-4-amd64 x86_64

A proposito di aggiornamento e Debian, questo articolo contiene qualche link interessante.

Problemi riscontrati finora (mi aspetto di trovare qualche altra magagna nei prossimi giorni).

Apache

Non partiva per mancanza di un file httpd.conf, rimossa la riga da /etc/apache2/apache2.conf
# Include all the user configurations:
Include httpd.conf

Rimosso suhosin
aptitude purge php5-suhosin

Dovecot

Una marea di warning nell’avviare il servizio
cd /etc/dovecot
cp dovecot.conf dovecot.conf_squeeze
doveconf -n -c ./dovecot.conf_squeeze > dovecot.conf
/etc/init.d/dovecot restart

Postfix

Rimossi due parametri obsoleti da /etc/postfix/main.cf (virtual_maildir_extended, virtual_create_maildirsize), modificato /etc/postfix/sasl/smtpd.conf per la parte relativa all’autenticazione
auxprop_plugin: mysql
sql_select: select password from users where email = '%u'

a
auxprop_plugin: sql
sql_engine: mysql
sql_select: select password from users where email = '%u@%r'

Mi pare di capire che si possa delegare l’autenticazione a Dovecot, per ora sono già contento (e sorpreso) che il server sia ripartito 🙂


Premessa: questo blog si trova da qualche mese su un server dedicato in Germania (Hetzner), dopo essere stato ospitato per anni su DreamHost. Ad oggi, nonostante venga indicato tra gli hosting consigliati, ritengo che DreamHost non sia una soluzione ideale per WordPress.

hanno un simpatico demone che sega le gambe ai processi quando il consumo di memoria è eccessivo, il che non è particolarmente piacevole quando si utilizza WordPress. La loro risposta standard è “prenditi un VPS con memoria garantita”. Assurdità collegata: cliente1 con 100 domini, cliente2 con 1 solo dominio, il singolo processo ha la stessa quantità di memoria a disposizione, peccato che il secondo cliente, a parità di prezzo, stia usando un centesimo delle risorse rispetto all’altro.

A questo punto il dubbio: che cosa proporre ad un cliente per ospitare il proprio sito web basato su WordPress? Se il cliente chiede una soluzione economica non ci sono dubbi (vedo già qualcuno storcere il naso): Aruba. E se invece le esigenze fossero più complesse? Queste a mio avviso le caratteristiche imprescindibili:

  • deve essere un hosting gestito, non voglio trovarmi a configurare VPS o server dedicati, soprattutto per quanto concerne la posta elettronica. Inoltre, nel caso in cui i rapporti con il cliente si interrompano, voglio potergli dare accesso completo ai propri dati;
  • deve offrire accesso SSH e garantire un minimo di risorse;
  • è preferibile un datacenter situato in Europa;
  • un sistema di backup è utile ma non indispensabile.

Qualche settimana fa ho aperto una discussione su FriendFeed ed è uscito fuori il nome WebFaction*. La gestione è abbastanza “spiazzante” (vedi video introduttivo) per chi arriva da DreamHost, CPanel e simili:

  • il mattone fondamentale è l’applicazione (webapp). Ad esempio, si crea una webapp di tipo WordPress 3.3.1, il sistema procede con l’installazione e ti comunica la password dell’utente admin;
  • si crea un website a cui vengono associati un dominio e una o più webapp. Ad esempio si può stabilire che “/” venga servito da WordPress e “/drupal” da Drupal.

Fortunatamente il sistema offre una documentazione veramente completa e ben fatta. Ecco qualche link utile per chi decidesse di installare WordPress su WebFaction:

Il sito in questione non è ancora online, dovrebbe essere pubblicato in settimana per cui avrò modo di verificare la stabilità e le prestazioni del sistema. Per il momento nulla di negativo da segnalare: l’hosting, come promesso dal sito, è stato attivato in meno di un’ora nonostante fosse sabato mattina (datacenter ad Amsterdam). I costi vanno da $9,50 a $5,50 al mese a seconda della durata del contratto (da mensile fino a 5 anni, 60 giorni “soddisfatti o rimborsati”), in caso di privati al costo bisogna aggiungere l’IVA.

* disclaimer per un mondo migliore: trattasi di link di affiliazione (dettagli)


Pulizie di gennaio

15 gennaio 2012

Dopo le pulizie fatte sul sito di Mozilla Italia e il cambio di tema sul blog inglese (per un misto di pigrizia e curiosità ho scelto di utilizzare direttamente Twenty Eleven, il tema predefinito di WordPress, con alcune mie fotografie come header), stamattina era il turno di questo blog:

  • nuova immagine di testata con fotografia fresca di giornata. Nota di costume: per chi non l’avesse mai notato, il gecko tribale comparso in alto a destra verso la metà del 2010 è in realtà un tatuaggio;
  • drastica riduzione del numero di immagini, passando da 39 (225 KB) a 9 (115 KB) grazie all’utilizzo di sprite CSS;
  • rimozione dal CSS delle regole obsolete (per capirci, girava ancora roba con nome “blogbabel”…);
  • sostituito il badge di flickr utilizzato in home page con un widget (plugin FlickrPress);
  • installato un plugin per la condivisione (SexyBookmarks), così gli orsi di passaggio non possono più lamentarsi.

Sul fronte Hosting & Apache, ne ho approfittato per attivare mod_expires (per oscuri motivi ne avevo sempre ignorato l’esistenza).


Sempre il solito server di posta (Debian 6+Postfix+Dovecot+MySql) con ClamAV e SpamAssassin (integrato adattando quest’altra guida).

Premessa:

  • da sempre utilizzo una casella @gmail.com come catch-all/archivio. Tutte le mie caselle di posta inoltrano una copia del messaggio alla casella in questione, in questo modo ho costantemente sotto controllo tutti gli indirizzi (una decina) in un unico punto via browser o cellulare Android. Inoltre utilizzando questa soluzione non devo preoccuparmi di limiti e tempi del servizio di recupero messaggi via POP3 messo a disposizione da Gmail;
  • lo spam non viene cancellato direttamente, viene archiviato tramite Sieve in una cartella «Spam». Periodicamente controllo la cartella in questione via WebMail alla ricerca di falsi positivi e la svuoto.

Per inoltrare una copia dei messaggi utilizzo direttamente la tabella Forwardings:

  • source: indirizzo_originale
  • destination: indirizzo_originale, indirizzo_gmail

Problema: la casella e-mail di questo blog riceve un po’ troppa rumenta per i miei gusti, per cui la cartella Spam di Gmail è costantemente piena (le e-mail vengono inoltrate prima dell’applicazione dei filtri). Dovendo tenerla sotto controllo per evitare falsi positivi, la cosa non è piacevole.

La soluzione è inoltrare la posta a livello di Sieve, quantomeno per le caselle più problematiche. Per farlo bisogna modificare la sezione plugin del file /etc/dovecot/dovecot.conf aggiungendo la riga

sieve = /home/vmail/%d/%n/.dovecot.sieve

%d verrà sostituito dal dominio, %n dall’utente (la parte prima della @), per cui il file verrà cercato in un percorso del tipo /home/vmail/example.com/info/.dovecot.sieve per info(at)example.com

Nel file .dovecot.sieve (ricordarsi di assegnare come proprietario l’utente vmail) inserire

require ["fileinto"];
# Move spam to spam folder
if header :contains "X-Spam-Flag" ["YES"] {
  fileinto "INBOX.Spam";
}
else {
  redirect "indirizzo_gmail";
  keep;
}

Nuovo post della serie “appunti per tecnici anziani”.

Una volta configurato il simpatico server utilizzando questa guida come base (Debian 6 con Postfix, Dovecot e MySql per registrare utenti e virtual domain), sorge il dubbio: e adesso come ci accedo via WebMail?

Dopo qualche ricerca ho deciso di provare RoundCube, anche considerando che la nuova versione stabile è stata rilasciata il 14 dicembre 2011 (segno che il progetto è attivo).

Lasciando perdere la versione obsoleta nei repository, configuro il virtual domain per Apache (webmail.example.com) e ci decomprimo i file rimuovendo direttamente la cartella INSTALL. A questo punto bisogna procedere con la configurazione.

Creazione database MySql

Bisogna creare un nuovo database (e volendo un nuovo utente) per gestire sessioni e compagnia bella. Da console di MySql:

CREATE DATABASE roundcubemail;
GRANT ALL PRIVILEGES ON roundcubemail.* TO utente IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
USE roundcubemail;
SOURCE percorsowww/SQL/mysql.initial.sql;

Sostituire username, password e percorsowww con i dati corretti. L’ultima riga esegue un file .sql per creare le tabelle necessarie nel database roundcubemail.

File di configurazione

A questo punto bisogna rinominare (o meglio copiare) i file db.inc.php.dist e main.inc.php.dist in /config rimuovendo il .dist e apportare alcune modifiche.

db.inc.php (stringa di connessione al database MySql)

$rcmail_config['db_dsnw'] = 'mysql://utente:password@localhost/roundcubemail';

main.inc.php

$rcmail_config['default_host'] = 'localhost';
$rcmail_config['smtp_server'] = 'localhost';
$rcmail_config['create_default_folders'] = true;
$rcmail_config['junk_mbox'] = 'Spam';

Spiegazione ultima riga: tramite regole Sieve sposto lo SPAM filtrato da SpamAssassin in una cartella “Spam”, non “Junk” come previsto dal file di configurazione standard.

Plugin per la modifica delle password

Ok, funziona tutto. Ma se un utente non ha accesso al database MySql come può modificare la propria password? Semplice: basta attivare il plugin “Password” cambiando questa riga in main.inc.php

$rcmail_config['plugins'] = array('password');

Anche in questo caso il plugin ha un file di configurazione da sistemare (rinominare o copiare senza .dist il file /plugins/password/config.inc.php.dist).

$rcmail_config['password_confirm_current'] = true;
$rcmail_config['password_db_dsn'] = 'mysql://mailadminutente:mailadminpassword@localhost/maildb';
$rcmail_config['password_query'] = 'UPDATE users SET password=ENCRYPT(%p) WHERE email=%u LIMIT 1';

Nel mio caso l’utente MySql di RoundCube è diverso da quello utilizzato per gestire gli utenti di posta, per cui devo modificare la stringa di connessione specificando user, password e database corretti. Anche la stringa SQL deve essere adeguata in base alla struttura del database.

Permettere al browser di memorizzare utente e password
Anche in questo caso bisogna mettere mano al file di configurazione principale main.inc.php.

// Allow browser-autocompletion on login form.
// 0 - disabled, 1 - username and host only, 2 - username, host, password
$rcmail_config['login_autocomplete'] = 2;

Look

Questo è l’aspetto con il tema default di RoundCube 0.7

Questo invece è il nuovo tema “Larry” su trunk (0.8 via svn)


A New Home

10 dicembre 2011

Information Highways

Benvenuti nella nuova casa 🙂

Se state leggendo questo post significa che i DNS hanno terminato la loro magica e incomprensibile danza e il dominio punta al nuovo server. Per i più curiosi, il server scelto è l’EX4 (Intel® Core™ i7-2600 Quad-Core, 16 GB DDR3 RAM, 2×3 TB SATA 6 Gb/s HDD). Inizialmente avevo puntato l’EQ4, ma i soldi risparmiati evitando la licenza di Plesk (7,90 €/mese) li ho girati sul maggior costo di setup iniziale.

Un ringraziamento a Giovanni per avermi fatto scoprire Hetzner a suo tempo e Gianluca per il supporto morale (e quello pratico che dovrà darmi non appena esplode qualcosa).