Appunti per tecnici anziani e smemorati: come configurare l’accesso via SSH utilizzando una coppia di chiavi invece di nome utente e password.

Passo 1: generare la chiave

ssh-keygen -t rsa

Personalmente assegno un nome diverso rispetto al predefinito (id_rsa) per capire al volo di che cosa si tratta.

Passo 2: copiare la chiave sul server

Copiare il file via FTP o direttamente via scp

scp /home/UTENTE/.ssh/id_rsa.pub UTENTE_REMOTO@SERVER_REMOTO:.

Effettuare l’accesso al server via SSH (con nome utente e password) e copiare il contenuto della chiave pubblica in .ssh/authorized_keys

cat /home/UTENTE/id_rsa.pub >> /home/UTENTE/.ssh/authorized_keys

Se necessario creare la cartella .ssh prima di lanciare questo comando. Dovrebbe funzionare anche con sss-copy-id, ma su Mac va installato (es. con homebrew).

ssh-copy-id -i /home/UTENTE/.ssh/id_rsa UTENTE_REMOTO@SERVER_REMOTO

Passo 3: modificare .ssh/config in locale per utilizzare la chiave

Host SERVER_REMOTO
User UTENTE_REMOTO
IdentityFile ~/.ssh/id_rsa

Nel file config è possibile utilizzare wildcard, particolarmente utile per le innumerevoli macchine virtuali 🙂


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)