Postfix e SquirrelMail · 14 min read · Sep 28, 2025
Utenti e Domini Virtuali Con Postfix, Courier, MySQL e SquirrelMail (Mandriva 2009.1 x86_64) - Pagina 5
15 Installazione di SquirrelMail
SquirrelMail è un’interfaccia webmail che permette ai tuoi utenti di inviare e ricevere email in un browser. Questo capitolo mostra come installarlo e adattarlo alla nostra configurazione in modo che gli utenti possano persino cambiare la propria password dell’account email dall’interfaccia di SquirrelMail.
Per installare SquirrelMail, digitiamo semplicemente:
urpmi squirrelmailSquirrelMail viene fornito con alcuni plugin preinstallati, sfortunatamente nessuno di essi è in grado di permetterci di cambiare la nostra password email nel nostro database MySQL. Ma c’è il plugin Change SQL Password che possiamo installare manualmente:
cd /var/www/squirrelmail/plugins/
wget http://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fchange_sqlpass-3.3-1.2.tar.gz
tar xvfz change_sqlpass-3.3-1.2.tar.gz
cd change_sqlpass
cp config.php.sample config.phpOra dobbiamo modificare config.php e adattarlo alla nostra configurazione. Si prega di modificare le variabili $csp_dsn, $lookup_password_query, $password_update_queries, $password_encryption, $csp_salt_static e $csp_delimiter come segue e commentare $csp_salt_query:
vi config.php| [...] $csp_dsn = 'mysql://mail_admin:mail_admin_password@localhost/mail'; [...] $lookup_password_query = 'SELECT count(*) FROM users WHERE email = "%1" AND password = %4'; [...] $password_update_queries = array('UPDATE users SET password = %4 WHERE email = "%1"'); [...] $password_encryption = 'MYSQLENCRYPT'; [...] $csp_salt_static = 'LEFT(password, 2)'; [...] //$csp_salt_query = 'SELECT salt FROM users WHERE username = "%1"'; [...] $csp_delimiter = '@'; [...] |
I file completi appaiono come segue:
| * 2002-2005 Paul Lesneiwski <[email protected]> * Questo programma è concesso in licenza sotto GPL. Vedi COPYING per dettagli * * @package plugins * @subpackage Change SQL Password * */ // Variabili Globali, non toccare queste a meno che tu non voglia rompere il plugin // global $csp_dsn, $password_update_queries, $lookup_password_query, $force_change_password_check_query, $password_encryption, $csp_salt_query, $csp_salt_static, $csp_secure_port, $csp_non_standard_http_port, $csp_delimiter, $csp_debug, $min_password_length, $max_password_length, $include_digit_in_password, $include_uppercase_letter_in_password, $include_lowercase_letter_in_password, $include_nonalphanumeric_in_password; // csp_dsn // // Teoricamente, qualsiasi database SQL supportato da Pear dovrebbe essere supportato // qui. Il DSN (data source name) deve contenere le informazioni necessarie // per connettersi al tuo backend database. Un esempio MySQL è incluso qui sotto. // Per ulteriori dettagli sulla sintassi DSN e l'elenco dei tipi di database supportati, // si prega di vedere: // http://pear.php.net/manual/en/package.database.db.intro-dsn.php // //$csp_dsn = 'mysql://user:password@localhost/email_users'; $csp_dsn = 'mysql://mail_admin:mail_admin_password@localhost/mail'; // lookup_password_query // // Questo plugin verificherà sempre la vecchia password dell'utente // rispetto alla loro password di accesso, ma un controllo extra può anche // essere fatto contro il database per maggiore sicurezza se lo // desideri. Se non hai bisogno del controllo extra della password, // assicurati che questa impostazione sia vuota. // // Questa è una query che restituisce un valore positivo se un utente // e una coppia di password vengono trovati nel database. // // Questa query dovrebbe restituire un valore (una riga, una colonna), il // valore è idealmente uno o zero, semplicemente indicando che // la coppia utente/password esiste effettivamente nel database. // // %1 in questa query sarà sostituito con il nome utente completo // (incluso il dominio), come "[email protected]" // %2 in questa query sarà sostituito con il nome utente (senza // alcuna parte di dominio), come "jose" // %3 in questa query sarà sostituito con il nome del dominio, // come "example.com" // %4 in questa query sarà sostituito con la password attuale (vecchia) // in qualsiasi formato di crittografia necessario per altre // impostazioni di configurazione del plugin (Nota che la sintassi della // password sarà fornita a seconda delle tue scelte di crittografia, // quindi NON devi mai fornire virgolette attorno a questo // valore nella query qui.) // %5 in questa query sarà sostituito con la password attuale (vecchia) // in testo semplice non crittografato. Se non utilizzi alcuna // crittografia della password, %4 e %5 saranno gli stessi valori, // tranne che %4 avrà virgolette attorno e %5 no. // //$lookup_password_query = ''; // TERRIBILE SICUREZZA: $lookup_password_query = 'SELECT count(*) FROM users WHERE username = "%1" AND plain_password = "%5"'; //$lookup_password_query = 'SELECT count(*) FROM users WHERE username = "%1" AND crypt_password = %4'; $lookup_password_query = 'SELECT count(*) FROM users WHERE email = "%1" AND password = %4'; // password_update_queries // // Un array di query SQL che verranno tutte eseguite // ogni volta che viene effettuato un tentativo di cambio password. // // Qualsiasi numero di query può essere incluso qui. // Le query verranno eseguite nell'ordine fornito qui. // // %1 in tutte le query sarà sostituito con il nome utente completo // (incluso il dominio), come "[email protected]" // %2 in tutte le query sarà sostituito con il nome utente (senza // alcuna parte di dominio), come "jose" // %3 in tutte le query sarà sostituito con il nome del dominio, // come "example.com" // %4 in tutte le query sarà sostituito con la nuova password // in qualsiasi formato di crittografia necessario per altre // impostazioni di configurazione del plugin (Nota che la sintassi della // password sarà fornita a seconda delle tue // scelte di crittografia, quindi NON devi mai fornire virgolette // attorno a questo valore nelle query qui.) // %5 in tutte le query sarà sostituito con la nuova password // in testo semplice non crittografato - ATTENZIONE! Se non utilizzi // alcuna crittografia della password, %4 e %5 saranno gli stessi // valori, tranne che %4 avrà virgolette attorno e // %5 no. // //$password_update_queries = array( // 'UPDATE users SET crypt_password = %4 WHERE username = "%1"', // 'UPDATE user_flags SET force_change_pwd = 0 WHERE username = "%1"', // 'UPDATE users SET crypt_password = %4, force_change_pwd = 0 WHERE username = "%1", // ); $password_update_queries = array('UPDATE users SET password = %4 WHERE email = "%1"'); // force_change_password_check_query // // Una query che controlla un flag che indica se un utente // dovrebbe essere costretto a cambiare la propria password. Questa query // dovrebbe restituire un valore (una riga, una colonna) che è // zero se l'utente NON deve cambiare la propria password, // o uno se l'utente deve essere costretto a cambiarla ora. // // Questa impostazione dovrebbe essere una stringa vuota se non desideri // abilitare questa funzionalità. // // %1 in questa query sarà sostituito con il nome utente completo // (incluso il dominio), come "[email protected]" // %2 in questa query sarà sostituito con il nome utente (senza // alcuna parte di dominio), come "jose" // %3 in questa query sarà sostituito con il nome del dominio, // come "example.com" // //$force_change_password_check_query = 'SELECT IF(force_change_pwd = "yes", 1, 0) FROM users WHERE username = "%1"'; //$force_change_password_check_query = 'SELECT force_change_pwd FROM users WHERE username = "%1"'; $force_change_password_check_query = ''; // password_encryption // // Quale metodo di crittografia utilizzi per memorizzare le password // nel tuo database? Si prega di utilizzare uno dei seguenti, // esattamente come lo vedi: // // NONE Le password sono memorizzate come testo semplice // MYSQLPWD Le password sono memorizzate utilizzando la funzione password() di MySQL // MYSQLENCRYPT Le password sono memorizzate utilizzando la funzione encrypt() di MySQL // PHPCRYPT Le password sono memorizzate utilizzando la funzione crypt() di PHP // MD5CRYPT Le password sono memorizzate utilizzando l'algoritmo MD5 crittografato // MD5 Le password sono memorizzate come hash MD5 // //$password_encryption = 'MYSQLPWD'; $password_encryption = 'MYSQLENCRYPT'; // csp_salt_query // csp_salt_static // // I tipi di crittografia che necessitano di un sale devono sapere dove ottenere // quel sale. Se hai un valore di sale costante e noto, // dovresti definirlo in $csp_salt_static. Altrimenti, lascia quel // valore vuoto e definisci un valore per il $csp_salt_query. // // Lascia entrambi i valori vuoti se non hai bisogno (o usi) di sali // per crittografare le tue password. // // La query dovrebbe restituire un valore (una riga, una colonna) che // è il valore di sale per la password dell'utente corrente. Questa // query viene ignorata se $csp_salt_static è qualsiasi cosa diversa da vuota. // // %1 in questa query sarà sostituito con il nome utente completo // (incluso il dominio), come "[email protected]" // %2 in questa query sarà sostituito con il nome utente (senza // alcuna parte di dominio), come "jose" // %3 in questa query sarà sostituito con il nome del dominio, // come "example.com" // //$csp_salt_static = 'LEFT(crypt_password, 2)'; //$csp_salt_static = '"a4"'; // usa questo formato con MYSQLENCRYPT //$csp_salt_static = '$2$blowsomefish$'; // usa questo formato con PHPCRYPT //$csp_salt_static = ''; $csp_salt_static = 'LEFT(password, 2)'; //$csp_salt_query = 'SELECT SUBSTRING_INDEX(crypt_password, '$', 1) FROM users WHERE username = "%1"'; //$csp_salt_query = 'SELECT SUBSTRING(crypt_password, (LENGTH(SUBSTRING_INDEX(crypt_password, '$', 2)) + 2)) FROM users WHERE username = "%1"'; //$csp_salt_query = 'SELECT salt FROM users WHERE username = "%1"'; //$csp_salt_query = ''; // csp_secure_port // // Puoi assicurarti che la crittografia SSL venga utilizzata durante il cambio della password // impostando questo alla porta su cui il tuo HTTPS è servito // (443 è tipico). Imposta a zero se non desideri forzare // una connessione HTTPS quando gli utenti cambiano le loro password. // // Puoi sovrascrivere questo valore per determinati domini, utenti o // livelli di servizio tramite il plugin Virtual Host Login (vlogin) // impostando un valore per $vlogin_csp_secure_port nella configurazione vlogin. // $csp_secure_port = 0; //$csp_secure_port = 443; // csp_non_standard_http_port // // Se servi richieste web HTTP standard su una porta non standard // (qualsiasi cosa diversa dalla porta 80), dovresti specificare quel // numero di porta qui. Imposta a zero altrimenti. // // Puoi sovrascrivere questo valore per determinati domini, utenti o // livelli di servizio tramite il plugin Virtual Host Login (vlogin) // impostando un valore per $vlogin_csp_non_standard_http_port // nella configurazione vlogin. // //$csp_non_standard_http_port = 8080; $csp_non_standard_http_port = 0; // min_password_length // max_password_length // include_digit_in_password // include_uppercase_letter_in_password // include_lowercase_letter_in_password // include_nonalphanumeric_in_password // // Puoi impostare le lunghezze minime e massime delle password che // accetti o lasciare queste impostazioni a zero per indicare che // non deve essere applicato alcun limite. // // Attiva qualsiasi delle altre impostazioni qui per controllare che la // nuova password contenga almeno una cifra, lettera maiuscola, // lettera minuscola e/o un carattere non alfanumerico. // $min_password_length = 6; $max_password_length = 0; $include_digit_in_password = 0; $include_uppercase_letter_in_password = 0; $include_lowercase_letter_in_password = 0; $include_nonalphanumeric_in_password = 0; // csp_delimiter // // se il tuo sistema ha nomi utente con qualcosa di diverso da // un segno "@" che separa la parte utente e dominio, // specifica quel carattere qui // //$csp_delimiter = '|'; $csp_delimiter = '@'; // modalità debug // $csp_debug = 0; ?> |
Ora dobbiamo andare nella configurazione di SquirrelMail e dire a SquirrelMail che utilizziamo Courier come nostro server POP3 e IMAP (se non lo fai, molto probabilmente vedrai errori come
ERROR: Impossibile completare la richiesta.
Query: CREATE "Sent"
Motivo fornito: Nome della casella di posta non valido.quando accedi a SquirrelMail) e abilitare il plugin Change SQL Password e disabilitare gli altri plugin per la password:
/var/www/squirrelmail/conf/conf.plVedrai il seguente menu. Digita D per cambiare il server IMAP/POP3:
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Preferenze Organizzazione
2. Impostazioni Server
3. Impostazioni Cartella
4. Opzioni Generali
5. Temi
6. Rubriche
7. Messaggio del Giorno (MOTD)
8. Plugin
9. Database
10. LingueD. Imposta impostazioni predefinite per server IMAP specificiC Disattiva colore
S Salva dati
Q EsciComando >> <– D
SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
Mentre stavamo costruendo SquirrelMail, abbiamo scoperto alcune
preferenze che funzionano meglio con alcuni server che non funzionano così
bene con altri. Se selezioni il tuo server IMAP, questa opzione imposterà
alcune impostazioni predefinite per quel server.Si prega di notare che dovrai comunque controllare e assicurarti
che tutto sia corretto. Questo non cambia tutto. Ci sono
solo alcune impostazioni che questo cambierà.Si prega di selezionare il proprio server IMAP:
bincimap = Server IMAP Binc
courier = Server IMAP Courier
cyrus = Server IMAP Cyrus
dovecot = Server IMAP Sicuro Dovecot
exchange = Server IMAP Microsoft Exchange
hmailserver = hMailServer
macosx = Server di posta Mac OS X
mercury32 = Mercury/32
uw = Server IMAP dell'Università di Washingtonesci = Non cambiare nulla
Comando >> <– courier
imap_server_type = courier
default_folder_prefix = INBOX.
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = .
delete_folder = true
Premi un tasto qualsiasi per continuare… <– premi un tasto qualsiasi
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Preferenze Organizzazione
2. Impostazioni Server
3. Impostazioni Cartella
4. Opzioni Generali
5. Temi
6. Rubriche
7. Messaggio del Giorno (MOTD)
8. Plugin
9. Database
10. LingueD. Imposta impostazioni predefinite per server IMAP specificiC Disattiva colore
S Salva dati
Q EsciComando >> <– 8
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Plugin
Plugin Installati
1. delete_move_next
2. squirrelspell
3. newmail
4. filters
5. address_add
6. change_pass
7. quota_usage
8. change_ldappass
9. avelsieve
10. windows
11. folder_sizes
12. archive_mail
13. empty_foldersPlugin Disponibili:
14. abook_import_export
15. administrator
16. block_sender
17. bookmarks
18. bug_report
19. calendar
20. change_sqlpass
21. compatibility
22. demo
23. fortune
24. info
25. junkfolder
26. ldifimport
27. listcommands
28. login_image
29. mail_fetch
30. message_details
31. rewrap
32. secure_login
33. select_range
34. sent_subfolders
35. spam_buttons
36. spamassassin
37. spamcop
38. test
39. translate
40. usernameR Torna al Menu Principale
C Disattiva colore
S Salva dati
Q EsciComando >> <– 21 (o qualsiasi numero abbia il plugin di compatibilità - è necessario per il plugin change_sqlpass)
SquirrelMail Configuration : Read: config.php (1.4.0)
Plugin
Plugin Installati
- delete_move_next
- squirrelspell
- newmail
- filters
- address_add
- change_pass
- quota_usage
- change_ldappass
- avelsieve
- windows
- folder_sizes
- archive_mail
- empty_folders
- compatibilityPlugin Disponibili:
- abook_import_export
- administrator
- block_sender
- bookmarks
- bug_report
- calendar
- change_sqlpass
- demo
- fortune
- info
- junkfolder
- ldifimport
- listcommands
- login_image
- mail_fetch
- message_details
- rewrap
- secure_login
- select_range
- sent_subfolders
- spam_buttons
- spamassassin
- spamcop
- test
- translate
- usernameR Torna al Menu Principale
C Disattiva colore
S Salva dati
Q EsciComando >> <-- 21 (il numero del plugin change_sqlpass) SquirrelMail Configuration : Read: config.php (1.4.0) --------------------------------------------------------- Plugin Plugin Installati 1. delete_move_next 2. squirrelspell 3. newmail 4. filters 5. address_add 6. quota_usage 7. change_ldappass 8. avelsieve 9. windows 10. folder_sizes 11. archive_mail 12. empty_folders 13. compatibility 14. change_sqlpass
Plugin Disponibili:
15. abook_import_export
16. administrator
17. block_sender
18. bookmarks
19. bug_report
20. calendar
21. change_pass
22. demo
23. fortune
24. info
25. junkfolder
26. ldifimport
27. listcommands
28. login_image
29. mail_fetch
30. message_details
31. rewrap
32. secure_login
33. select_range
34. sent_subfolders
35. spam_buttons
36. spamassassin
37. spamcop
38. test
39. translate
40. usernameR Torna al Menu Principale
C Disattiva colore
S Salva dati
Q EsciComando >> <– 6 (il numero del plugin change_pass)
SquirrelMail Configuration : Read: config.php (1.4.0)
Plugin
Plugin Installati
- delete_move_next
- squirrelspell
- newmail
- filters
- address_add
- quota_usage
- change_ldappass
- avelsieve
- windows
- folder_sizes
- archive_mail
- empty_folders
- compatibility
- change_sqlpassPlugin Disponibili:
- abook_import_export
- administrator
- block_sender
- bookmarks
- bug_report
- calendar
- change_pass
- demo
- fortune
- info
- junkfolder
- ldifimport
- listcommands
- login_image
- mail_fetch
- message_details
- rewrap
- secure_login
- select_range
- sent_subfolders
- spam_buttons
- spamassassin
- spamcop
- test
- translate
- usernameR Torna al Menu Principale
C Disattiva colore
S Salva dati
Q EsciComando >> <-- 7 (il numero del plugin change_ldappass) SquirrelMail Configuration : Read: config.php (1.4.0) --------------------------------------------------------- Plugin Plugin Installati 1. delete_move_next 2. squirrelspell 3. newmail 4. filters 5. address_add 6. quota_usage 7. avelsieve 8. windows 9. folder_sizes 10. archive_mail 11. empty_folders 12. compatibility 13. change_sqlpass
Plugin Disponibili:
14. abook_import_export
15. administrator
16. block_sender
17. bookmarks
18. bug_report
19. calendar
20. change_ldappass
21. change_pass
22. demo
23. fortune
24. info
25. junkfolder
26. ldifimport
27. listcommands
28. login_image
29. mail_fetch
30. message_details
31. rewrap
32. secure_login
33. select_range
34. sent_subfolders
35. spam_buttons
36. spamassassin
37. spamcop
38. test
39. translate
40. usernameR Torna al Menu Principale
C Disattiva colore
S Salva dati
Q EsciComando >> <– S
Dati salvati in config.php
Premi invio per continuare… <– INVIO
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Plugin
Plugin Installati
1. delete_move_next
2. squirrelspell
3. newmail
4. filters
5. address_add
6. quota_usage
7. change_ldappass
8. avelsieve
9. windows
10. folder_sizes
11. archive_mail
12. empty_folders
13. compatibility
14. change_sqlpassPlugin Disponibili:
15. abook_import_export
16. administrator
17. block_sender
18. bookmarks
19. bug_report
20. calendar
21. change_ldappass
22. change_pass
23. demo
24. fortune
25. info
26. junkfolder
27. ldifimport
28. listcommands
29. login_image
30. mail_fetch
31. message_details
32. rewrap
33. secure_login
34. select_range
35. sent_subfolders
36. spam_buttons
37. spamassassin
38. spamcop
39. test
40. usernameR Torna al Menu Principale
C Disattiva colore
S Salva dati
Q EsciComando >> <– Q
Ora puoi digitare http://server1.example.com/squirrelmail o http://192.168.0.100/squirrelmail nel tuo browser per accedere a SquirrelMail.
Accedi con il tuo indirizzo email (es. [email protected]) e la tua password:

Dovresti trovare l’email di benvenuto nella tua casella di posta:


Per cambiare la tua password, vai su Opzioni e poi seleziona Cambia Password:

Digita la tua password attuale e poi la tua nuova password due volte:

SquirrelMail ti dirà se la password è stata cambiata con successo:

16 Riferimenti
Tutorial: Servizio Email in stile ISP con Debian-Sarge e Postfix 2.1: http://workaround.org/articles/ispmail-sarge/
Postfix + Quota: http://vhcs.net/new/modules/newbb/viewtopic.php?topic_id=3496&forum=17
Password Email Crittografate utilizzando saslauthd: http://www.syscp.de/docs/public/contrib/cryptedmailpws
17 Link
- Postfix MTA: http://www.postfix.org/
- Patch Quota di Postfix: http://vda.sourceforge.net/
- phpMyAdmin: http://www.phpmyadmin.net/
- SquirrelMail: http://www.squirrelmail.org/
- Mandriva: http://www.mandriva.com/
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.