Questa procedura descriverà come impostare e configurare l'hosting della posta virtuale con un backend LDAP.
Il software che utilizzeremo in questo howto: Postfix (MTA), Dovecot (IMAP / POP3), Gnarwl (vacanze), OpenLDAP (LDAP) e vMailpanel come interfaccia di gestione.
Opzionali sono Proftpd FTP, Roundcube (webmail) e MariaDB (backend SQL per Roundcube).
Questo ha funzionato per me, ma non posso garantire che questa configurazione funzionerà per te, quindi questo howto viene fornito senza alcuna garanzia.
Ipotesi
Questa procedura presuppone le seguenti configurazioni, se la tua installazione differisce da questa, quindi sostituisci le voci seguenti con la tua configurazione effettiva.
Percorso di consegna della posta (cassette postali):
/home/vmail/
Utente vmail:
UID:1000, GID:1000
Postfix dell'utente:
UID: 108, GID:108
Nome di base OpenLDAP:
dc=example,dc=tld
Account amministratore OpenLDAP:
cn=admin,dc=example,dc=tld
vRicerca nel pannello di posta dn:
o=hosting,dc=example,dc=tld
Un account di sola lettura per l'albero o=hosting,dc=example,dc=tld:
cn=vmail,o=hosting,dc=example,dc=tld
Stai usando root come utente durante questa guida.
Se vuoi ad esempio o=maildomains o ou=domains, assicurati di sostituire o=hosting con quello che vuoi, specialmente in acl.ldif. Questo file acl è rigoroso, phamm non funzionerà correttamente se non è esattamente come dovrebbe essere. Se desideri un utente di sola lettura diverso da phamm, sostituisci cn=phamm con cn=wat-you ovunque in questo tutorial.
Questa guida presuppone anche che tu abbia installato e configurato il tuo server Ubuntu in base alle tue esigenze, ci sono molte buone guide su Howtoforge ad esempio:
Il server perfetto - Ubuntu 18.04 (Bionic Beaver) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3.1
Puoi fermarti dopo l'installazione e la configurazione di Apache2.
Passaggio 1:scarica vMailpanel
Scarica il pacchetto vMailpanel:
cd /usr/share
Ottieni l'ultima versione di vMailpanel:
git clone https://git.com/wolmfan68/vMailpanel
OK, ora possiamo iniziare.
Passaggio 2:installa e configura OpenLDAP
Installa OpenLDAP e ldap-utils:
apt -y install slapd ldap-utils php-ldap
Riconfigura slapd per assicurarti che rifletta la configurazione desiderata
dpkg-reconfigure slapd
Dovrai rispondere ad alcune domande:
Omit OpenLDAP server configuration? No
DNS domain name: example.tld ==>put your domain name here
Organization name: example.tld ==> put your organization here
Administrator password: secret ==> put your password
Confirm password: secret
Database backend to use: MDB
Do you want the database to be removed when slapd is purged? Yes
Move old database? Yes
Passa alla directory /etc/ldap/schema:
cd /etc/ldap/schema
Copia phamm.schema e perversia.net.schema dal pacchetto phamm nella directory dello schema:
cp /usr/share/vMailbox/schema/* /etc/ldap/schema.
Ora aggiungiamo gli schemi a openldap.
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/phamm.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ISPEnv2.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/amavis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/pureftpd.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/perversia.net.ldif
Ora creiamo la voce o=hosting e l'account vmail.
Modifica il testo sottostante in base alle tue esigenze e desideri e genera una password per l'account vmail. L'hash attualmente in questo file imposta la password su sola lettura
Per creare l'hash per l'account vmail emetti il seguente comando:
slappasswd -h {MD5}
Digita due volte la password desiderata e copia il risultato nel testo sottostante.
nano base.ldif
Contenuto di base.ldif
dn: o=hosting,dc=example,dc=tld
objectClass: organization
objectClass: top
o: hosting description: Hosting Organization
# Read only account
dn: cn=vmail,o=hosting,dc=example,dc=tld
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: vmail
userPassword: {MD5}M267sheb6qc0Ck8WIPOvQA==
description: Read only account
Carica il dn di base nel database con il seguente comando:
ldapmodify -a -D cn=admin,dc=example,dc=tld -W -f base.ldif
Ora dobbiamo modificare gli acl in modo che venga fornito l'accesso corretto a ciascun tipo di utente.
ldapmodify -Y EXTERNAL -H ldapi:/// -f acl-remove.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f acl-new.ldif
Puoi controllare i nuovi acl con il seguente comando:
slapcat -n 0
Questo conclude la configurazione di OpenLDAP.
Fase 3:installa e configura Postfix
Prima di questo, dobbiamo avere l'utente vmail e la sua home directory.
Crea l'utente e il gruppo vmail:
useradd vmail
Per impostazione predefinita, viene creato anche il gruppo vmail .
Controlla /etc/passwd per l'uid effettivo e il numero del gruppo.
Quindi, crea la directory vmail e imposta la proprietà sull'utente e sul gruppo vmail.
mkdir /home/vmail
mkdir /home/vmail/domains
chown -R vmail:vmail /home/vmail
Esegui il comando seguente per installare Postfix e altre applicazioni richieste:
apt install postfix postfix-ldap
Ti verranno poste due domande. Rispondi come segue:
Tipo generale di configurazione della posta: <--Stand alone
Nome della posta di sistema: <-- mail.example.tld
Non installiamo sasl poiché utilizzeremo Dovecot LDA e consegneremo.
Ora creiamo i certificati per TLS:
mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
Nota:puoi copiare tutti i file in examples/postfix nella tua directory etc/postfix e apportare le modifiche di conseguenza. Per ragioni di completezza fornirò di seguito la configurazione completa.
Ora configureremo postfix:
cd /etc/postfix
mv /etc/postfix/main.cf /etc/postfix/main.cf.bck
nano /etc/postfix/main.cf
E incolla quanto segue al suo interno. Si prega di notare che questa configurazione consente l'invio (inoltro) di e-mail da parte di utenti autenticati, e anche l'invio di e-mail locali (come ad esempio root, postmaster, ...) ai rispettivi alias se sono configurati.
smtpd_banner =$myhostname ESMTP $mail_name
biff =no
# l'aggiunta di .domain è il lavoro del MUA.
append_dot_mydomain =no
# Decommenta il prossimo riga per generare avvisi di "posta ritardata"
delay_warning_time =4h
# parametri TLS
smtpd_tls_cert_file =/etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file =/etc /postfix/ssl/smtpd.key
smtpd_use_tls =yes
smtpd_tls_session_cache_database =btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database =btree:${queue_directory}/smtp_scache
myhostname =mail.example.tld
alias_maps =hash:/etc/aliases,
alias_database =hash:/etc/aliases
myorigin =localhost
relayhost =
mynetworks =127.0.0.0/8
dovecot_destination_recipient_limit =1
mailbox_command =/usr/lib/deliver
mailbox_size_limit =0
recipient_delimiter =+
inet_interfaces =all
inet_protocols =all
#smtp_bind_address =il tuo indirizzo IP (opzionale) ==>deseleziona e modifica l'indirizzo IP per la tua configurazione.
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable =yes
smtpd_sasl_security_options =noanonymous
smtpd_sasl_type =dovecot
smtpd_sasl_path =private/auth
broken_sasl_auth_clients =sì
smtpd_tls_auth_only =no
smtp_use_tls =sì
smtp_tls_note_starttls_offer =sì
smtpd_tls_CAfile =/etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel =1
smtpd_tls_received_header =yes
smtpd_tls_session_cache_timeout =3600s
tls_random_source =dev:/dev/urandom
home_mailbox =Maildir/
smtpd_recipient_restrictions =
permit_mynetworks permit_sasl_authenticated
reject_invalid_hostname reject_non_fqdn_hostname
reject_non_fqdn_sender reject_non_fqdn_recipient
reject_unauth_destination reject_unauth_pipelining
reject_invalid_hostname reject_unknown_sender_domain
rifiuta_ rbl_client list.dsbl.org
reject_rbl_client cbl.abuseat.org
reject_rhsbl_sender dsn.fc-ignorant.org
smtpd_data_restrictions =
reject_unauth_pipelining,
reject_multi_recipient_bounce,
permesso
smtpd_helo_required =yes
# transport_maps
maildrop_destination_concurrency_limit =2
maildrop_destination_recipient_limit =1
gnarwl_destination_concurrency_limit =1
gnarwl_destination_recipient_limit =1
transport_maps =hash:/etc/postfix/transport, ldap:/etc/postfix/ldap-transport.cf
mydestination =$transport_maps, localhost, localhost.localdomain, $myhostname, localhost .$miodominio, $miodominio
virtual_alias_maps =
ldap:/etc/postfix/ldap-aliases.cf,
ldap:/etc/postfix/ldap-virtualforward.cf,
ldap:/etc/postfix/ldap-accountsmap.cf
# account virtuali per la consegna
virtual_mailbox_base =/home/vmail
virtual_mailbox_maps =
ldap :/etc/postfix/ldap-accounts.cf
virtual_minimum_uid =1000 ==> Modificalo con l'uid effettivo dell'utente vmail
virtual_uid_maps =static:1000 ==> Modificalo con l'uid effettivo di l'utente vmail
virtual_gid_maps =static:1000 ==> Cambia questo nell'uid effettivo dell'utente vmail
local_recipient_maps =$alias_maps
recipient_bcc_maps =ldap:/ etc/postfix/ldap-vacation.cf
nano /etc/postfix/master.cf
E incolla quanto segue (aggiungi la fine):
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient} gnarwl unix - n n - - pipe flags=F user=vmail argv=/usr/bin/gnarwl -a ${user}@${nexthop} -s ${sender}
Ora dobbiamo scrivere i diversi file ldap-xxx.cf
nano ldap-accounts.cf
E incolla quanto segue:
server_host =localhost
server_port =389
versione =3
bind =sì
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =readmonly
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(objectClass=VirtualMailAccount)(mail =%s))(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
result_attribute =casella di posta
nano ldap-accounstmap.cf
E incolla quanto segue:
server_host =localhost
server_port =389
versione =3
bind =sì
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =readonly
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(objectClass=VirtualMailAccount)(mail =%s))(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
result_attribute =mail
nano ldap-aliases.cf
E incolla quanto segue:
server_host =localhost
server_port =389
versione =3
bind =sì
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =readonly
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(objectClass=VirtualMailAlias)(mail =%s))(accountActive=TRUE))
result_attribute =maildrop
nano ldap-transport.cf
E incolla quanto segue:
server_host =localhost
server_port =389
versione =3
bind =sì
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =readonly
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(vd=%s)( objectClass=VirtualDomain))(accountActive=TRUE)(delete=FALSE))
result_attribute =postfixTransport
nano ldap-vacanze.cf
E incolla quanto segue:
server_host =localhost
server_port =389
versione =3
bind =sì
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =readonly
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(objectClass=VirtualMailAccount)(mail =%s))(vacationActive=TRUE)(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
result_attribute =mailAutoreply
nano ldap-virtualforward.cf
E incolla quanto segue:
server_host =localhost
server_port =389
versione =3
bind =sì
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =readonly
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(objectClass=VirtualMailAccount)(mail =%s))(vacationActive=FALSE)(forwardActive=TRUE)(accountActive=TRUE)(delete=FALSE))
result_attribute =maildrop
Questo conclude la configurazione del suffisso.
Fase 4:installa e configura Dovecot
apt install dovecot-imapd dovecot-pop3d dovecot-ldap
Questo installerà dovecot e tutti i file necessari e creerà anche i certificati SSL standard per IMAP e POP3.
Per prima cosa, passiamo alla directory dovecot.
Nota:puoi copiare tutti i file in examples/dovecot nella tua directory etc/dovecot e apportare le modifiche di conseguenza. Per ragioni di completezza fornirò di seguito la configurazione completa.
cd /etc/dovecot
Ora configuriamo i diversi file di configurazione di dovecot.
nano dovecot-ldap.conf.ext
E apporta le seguenti modifiche:
hosts =localhost:389
ldap_version =3
auth_bind =yes
dn =cn=vmail,o=hosting,dc=example,dc=tld
dnpass =sola lettura
base =o=hosting,dc=hosting,dc=tld
ambito =sottostruttura
deref =mai
user_attrs =quota=quota=maildir:storage
user_attrs =quota=quota=maildir:storage=%$B
user_filter =(&(objectClass=VirtualMailAccount)(accountActive=TRUE)(mail=%u))
pass_attrs =mail,userPassword
pass_filter =(&(objectClass=VirtualMailAccount)(accountActive=TRUE)(mail=%u))
default_pass_scheme =MD5
cd conf.d
vi 10-auth.conf
E cambia la sezione Password e database utente in questo:
#!include auth-deny.conf.ext
#!include auth-master.conf.ext
#!include auth-system.conf.ext
#!include auth -sql.conf.ext
!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext
vi 10-mail.conf
E apporta le seguenti modifiche:
mail_location =maildir:/home/vmail/%d/%u
mail_uid =1000 ==> cambia al valore effettivo di vmail uid
mail_gid =1000 ==> cambialo nel valore effettivo di vmail gid
first_valid_uid =1000 ==> cambia al valore effettivo di vmail uid
first_valid_gid =1000 ==> cambialo nel valore effettivo di vmail gid
vi 10-master.conf
E apporta le seguenti modifiche:
unix_listener auth-userdb {
mode =0666
user =vmail
group =vmail
}
# Postfix smtp-auth
unix_listener / var/spool/postfix/private/auth {
mode =0666
}
vi 15-lda.conf
E apporta le seguenti modifiche:
indirizzo_postmaster = [email protetta]
lda_mailbox_autocreate =si
Questo conclude la configurazione di Dovecot.
Passaggio 5:installa e configura gnarwl
Installiamo gnarwl:
apt install gnarwl
Ora configuriamo gnarwl.
Innanzitutto, eseguiremo il backup del file di configurazione originale e lo sostituiremo con uno nuovo.
mv /etc/gnarwl.conf /etc/gnarwl.conf.bck
Ora creiamo il nuovo file conf:
vi /etc/gnarwl.conf
E inserisci quanto segue:
map_sender $sender map_receiver $recepient map_subject $subject map_field $begin vacationStart map_field $end vacationEnd map_field $fullname cn map_field $deputy vacationForward map_field $reply mail server localhost port 389 scope sub login cn=vmail,o=hosting,dc=example,dc=tld password readonly protocol 0 base dc=example,dc=tld queryfilter (&(mailAutoreply=$recepient)(vacationActive=TRUE)) result vacationInfo blockfiles /var/lib/gnarwl/block/ umask 0644 blockexpire 48 mta /usr/sbin/sendmail -F $recepient -t $sender maxreceivers 64 maxheader 512 charset ISO8859-1 badheaders /var/lib/gnarwl/badheaders.db blacklist /var/lib/gnarwl/blacklist.db forceheader /var/lib/gnarwl/header.txt forcefooter /var/lib/gnarwl/footer.txt recvheader To Cc loglevel 3
Rendi la directory gnarwl leggibile per l'utente vmail
chown -R vmail:vmail /var/lib/gnarwl/
Successivamente, dobbiamo aggiungere il trasporto gnarwl a postfix
vi /etc/postfix/transport
Inserisci quanto segue:
.autoreply gnarwl:
Ora dobbiamo creare il transport.db
postmap /etc/postfix/transport
Questo conclude la configurazione gnarwl.
Fase 6:installa e configura vMailpanel
Poiché abbiamo già scaricato vMailpanel, possiamo iniziare direttamente con la configurazione dell'interfaccia vMailpanel.
chown -R www-data:www-data /usr/share/phamm
cd /usr/share/vMailpanel
Ora configureremo phamm per l'uso effettivo.
cp config.inc.example.php config.inc.php
nano config.inc.php
Modifica i parametri di connessione ldap per adattarli alla tua configurazione attuale.
// *============================* // *=== LDAP Server Settings ===* // *============================* // The server address (IP or FQDN) define ('LDAP_HOST_NAME','127.0.0.1'); // The protocol version [2,3] define ('LDAP_PROTOCOL_VERSION','3'); // The server port define ('LDAP_PORT','389'); // The container define ('SUFFIX','dc=example,dc=tld'); // The admin bind dn (could be rootdn) define ('BINDDN','cn=admin,dc=example,dc=tld'); // The Phamm container define ('LDAP_BASE','o=hosting,dc=example,dc=tld');
e cambia
// Welcome message define ('SEND_WELCOME',1); $welcome_msg = '../welcome_message.txt'; $welcome_subject = 'Welcome!'; # $welcome_sender = '[email protected]'; $welcome_bcc = '[email protected]';
Questo invierà un messaggio di benvenuto e un bcc al tuo account postmaster.
Abilita il plugin fpt e person rimuovendo // nella sezione plugin. Se lo desideri puoi anche abilitare i plugin davical eo jabber, lo schema necessario per questi plugin è installato.
In config.inc.php troverai:
define ('DELETE_ACCOUNT_IMMEDIATELY', false);
Se lo imposti su true, l'eliminazione dell'account o del dominio ha effetto immediato. Tuttavia, la casella di posta fisica non viene eliminata (o la directory di dominio). Per eliminare la casella di posta fisica, dovremmo utilizzare lo script cleaner.sh. Questo è descritto di seguito.
Puoi modificare plugins/mail.xml per modificare le impostazioni predefinite per SMTP e quota, modificandole in base alle tue esigenze. L'impostazione predefinita è una quota di 1 GB.
Puoi modificare plugins/ftp.xml per modificare le impostazioni predefinite per la directory e la quota ftp (base) predefinite, modificarle in base alle tue esigenze.
Non dimenticare di creare gli alias e/o le caselle di posta per postmaster, webmaster poiché questi vengono utilizzati da funzionari e ISP per inviare posta in caso di ... Non avere questi indirizzi potrebbe comportare l'inserimento nella lista nera.
Per impostazione predefinita vengono creati gli alias [email protetta] e [email protetta] che per impostazione predefinita sono [email protetta].
Ora lo script più pulito:
cp tools/cleaner.sh /home/vmail/cleaner.sh
Modifica quanto segue in cleaner.sh
BINDDN="cn=admin,dc=example,dc=tld"
BINDPW="password"
LDAP_BASE="o=hosting,dc=example,dc=tld"
Per riflettere la tua installazione
nano /home/vmail/cleaner.sh
crontab -e
Inserisci quanto segue:
*/10 * * * * /home/vmail/cleaner.sh
Questo eseguirà lo script di pulizia ogni 10 minuti. Sentiti libero di cambiare i tempi.
Ora aggiungeremo vMailpanel ad Apache
nano /etc/apache2/conf-enabled/000-default.conf
E aggiungi tra le voci
Alias /vmailpanel /usr/share/vMailpanel/public
Questo conclude la configurazione di vMailpanel.
Passaggio 7:installa e configura Roundcube webmail
Innanzitutto, creiamo un database chiamato roundcube:
mysqladmin -u root -p create roundcube
Successivamente, andiamo alla shell MySQL:
mysql -u root -p
Sulla shell MySQL, creiamo l'utente roundcube con la password roundcube_password (sostituirla con una password a scelta) che ha i privilegi SELECT,INSERT,UPDATE,DELETE sul database roundcube. Questo utente verrà utilizzato da Postfix e Courier per connettersi al database roundcube:
GRANT SELECT, INSERT, UPDATE, DELETE ON roundcube.* TO 'roundcube'@'localhost' IDENTIFIED BY 'roundcube_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON roundcube.* TO 'roundcube'@'localhost.localdomain' IDENTIFIED BY 'roundcube_password';
FLUSH PRIVILEGES;
Ora scarichiamo e installiamo Roundcube:
cd/usr/src
wget https://github.com/roundcube/roundcubemail/releases/download/1.3.6/roundcubemail-1.3.6.tar.gz
tar xvzf roundcubemail-1.3.6.tar.gz
mv roundcubemail-1.3.6 /var/www/roundcube
chown -R www-data:www-data /var/www/roundcube
cd /var/www/roundcube
Controlla sempre l'ultima versione di Roundcube e scarica quella e modifica i comandi sopra alla versione di Roundcube che hai scaricato.
https://roundcube.net/download/
Ora carichiamo le tabelle sql nel database che abbiamo creato prima:
mysql -u roundcube -p roundcube < SQL/mysql.initial.sql
Ora modifichiamo la configurazione di Roundcube:
cp config/config.inc.php.sample config/config.inc.php
Imposta la configurazione del database:
nano config/config.inc.php
Modificare la seguente riga nella configurazione del database:
$rcmail_config['db_dsnw'] = 'mysql://roundcube:[email protected]/roundcube';
E cambia quanto segue
Da:
// List of active plugins (in plugins/ directory) $config['plugins'] = array(
'archive',
'zipdownload',
A:
// List of active plugins (in plugins/ directory) $config['plugins'] = array(
'archive',
'zipdownload',
'password',
'vacation',
Modifica:
chars.$rcmail_config['des_key'] = 'rcmail-!24ByteDESkey*Str';
A:
chars.$rcmail_config['des_key'] = 'your-own-24-digitkeystring';
Modifica:
$rcmail_config['default_host'] = '';
A:
$rcmail_config['default_host'] = 'localhost';
Modifica:
$rcmail_config['smtp_server'] = '';
A
$rcmail_config['smtp_server'] = 'localhost';
La configurazione per il plug-in password:
cp plugins/password/config.inc.php.dist plugins/password/config.inc.php
Modifica la configurazione:
nano plugins/password/config.inc.php
Modifica le seguenti voci
Da:
$rcmail_config['password_driver'] = 'sql';
A:
$rcmail_config['password_driver'] = 'ldap';
Da:
// LDAP Driver options // ------------------- // LDAP server name to connect to. // You can provide one or several hosts in an array in which case the hosts are tried from left to right. // Exemple: array('ldap1.exemple.com', 'ldap2.exemple.com'); // Default: 'localhost' $rcmail_config['password_ldap_host'] = 'localhost'; // LDAP server port to connect to // Default: '389' $rcmail_config['password_ldap_port'] = '389'; // TLS is started after connecting // Using TLS for password modification is recommanded. // Default: false $rcmail_config['password_ldap_starttls'] = false; // LDAP version // Default: '3' $rcmail_config['password_ldap_version'] = '3'; // LDAP base name (root directory) // Exemple: 'dc=exemple,dc=com' $rcmail_config['password_ldap_basedn'] = 'dc=exemple,dc=com'; // LDAP connection method // There is two connection method for changing a user's LDAP password. // 'user': use user credential (recommanded, require password_confirm_current=true) // 'admin': use admin credential (this mode require password_ldap_adminDN and password_ldap_adminPW) // Default: 'user' $rcmail_config['password_ldap_method'] = 'user'; // LDAP Admin DN // Used only in admin connection mode // Default: null $rcmail_config['password_ldap_adminDN'] = null; // LDAP Admin Password // Used only in admin connection mode // Default: null $rcmail_config['password_ldap_adminPW'] = null; // LDAP user DN mask // The user's DN is mandatory and as we only have his login, // we need to re-create his DN using a mask // '%login' will be replaced by the current roundcube user's login // '%name' will be replaced by the current roundcube user's name part // '%domain' will be replaced by the current roundcube user's domain part // Exemple: 'uid=%login,ou=people,dc=exemple,dc=com' $rcmail_config['password_ldap_userDN_mask'] = 'uid=%login,ou=people,dc=exemple,dc=com'; // LDAP password hash type // Standard LDAP encryption type which must be one of: crypt, // ext_des, md5crypt, blowfish, md5, sha, smd5, ssha, or clear. // Please note that most encodage types require external libraries // to be included in your PHP installation, see function hashPassword in drivers/ldap.php for more info. // Default: 'crypt' $rcmail_config['password_ldap_encodage'] = 'crypt'; // LDAP password attribute // Name of the ldap's attribute used for storing user password // Default: 'userPassword' $rcmail_config['password_ldap_pwattr'] = 'userPassword'; // LDAP password force replace // Force LDAP replace in cases where ACL allows only replace not read // See http://pear.php.net/package/Net_LDAP2/docs/latest/Net_LDAP2/Net_LDAP2_Entry.html#methodreplace // Default: true $rcmail_config['password_ldap_force_replace'] = true;
A:
$rcmail_config['password_ldap_host'] = 'localhost'; $rcmail_config['password_ldap_port'] = '389'; $rcmail_config['password_ldap_starttls'] = false; $rcmail_config['password_ldap_version'] = '3'; $rcmail_config['password_ldap_basedn'] = 'o=hosting,dc=example,dc=tld'; $rcmail_config['password_ldap_method'] = 'user'; $rcmail_config['password_ldap_adminDN'] = null; $rcmail_config['password_ldap_adminPW'] = null; $rcmail_config['password_ldap_userDN_mask'] = 'mail=%login,vd=%domain,o=hosting,dc=example,dc=tld'; $rcmail_config['password_ldap_encodage'] = 'md5'; $rcmail_config['password_ldap_pwattr'] = 'userPassword'; $rcmail_config['password_ldap_force_replace'] = true;
Ora scarichiamo e installiamo il plugin per le vacanze:
cd /usr/src
wget https://github.com/bhuisgen/rc-vacation/archive/master.zip
unzip rc-vacation-master.zip
mv rc-vacation /var/www/roundcube/plugins/vacation
cd /var/www/roundcube/plugins/vacation
Ora modifichiamo la configurazione e cambiamo:
nano plugins/vacation/config.inc.php
Modifica:
$rcmail_config['vacation_gui_vacationsubject'] = TRUE;
A:
$rcmail_config['vacation_gui_vacationsubject'] = FALSE;
Modifica:
$rcmail_config['vacation_driver'] = 'sql';
A:
$rcmail_config['vacation_driver'] = 'ldap';
Modifica:
// Base DN $rcmail_config['vacation_ldap_base'] = 'dc=ldap,dc=my,dc=domain'; // Bind DN $rcmail_config['vacation_ldap_binddn'] = 'cn=user,dc=ldap,dc=my,dc=domain'; // Bind password $rcmail_config['vacation_ldap_bindpw'] = 'pa$$w0rd';
A:
// Base DN $rcmail_config['vacation_ldap_base'] = 'o=hosting,dc=example,dc=tld'; // Bind DN $rcmail_config['vacation_ldap_binddn'] = 'cn=admin,dc=example,dc=tld'; // Bind password $rcmail_config['vacation_ldap_bindpw'] = 'yourpassword';
Modifica:
// Search filter to read data $rcmail_config['vacation_ldap_search_filter'] = '(objectClass=mailAccount)'; // Search attributes to read data $rcmail_config['vacation_ldap_search_attrs'] = array ('vacationActive', 'vacationInfo'); // array of DN to use for modify operations required to write data. $rcmail_config['vacation_ldap_modify_dns'] = array ( 'cn=%email_local,ou=Mailboxes,dc=%email_domain,ou=MailServer,dc=ldap,dc=my,dc=domain' );
A:
// Search base to read data $rcmail_config['vacation_ldap_search_base'] = 'mail=%username,vd=%email_domain,o=hosting,dc=example,dc=tld'; // Search filter to read data $rcmail_config['vacation_ldap_search_filter'] = '(objectClass=VirtualMailAccount)'; // Search attributes to read data $rcmail_config['vacation_ldap_search_attrs'] = array ('vacationActive', 'vacationInfo'); // array of DN to use for modify operations required to write data. $rcmail_config['vacation_ldap_modify_dns'] = array ( 'mail=%username,vd=%email_domain,o=hosting,dc=example,dc=tld' );
Dobbiamo modificare la radice del documento nella configurazione del server Apche2 in modo che sia possibile accedere a Roundcube.
nano /etc/apache2/sites-enabled/000-default.conf
E cambia da:
DocumentRoot /var/www/html
A:
DocumentRoot /var/www/
Questo conclude la configurazione per Roundcube.
Fase 8:installa e configura proftpd
Per prima cosa, installeremo proftpd e i suoi requisiti:
apt install proftpd proftpd-mod-ldap
A seconda del tuo carico puoi decidere tra stand alone e inet.d.
Nota:puoi copiare i file di configurazione da examples/proftpd a /etc/proftpd ma per chiarezza, illustrerò tutti i passaggi di configurazione.
Modifica /etc/proftpd/proftpd.conf:
nano /etc/proftpd/proftpd.conf
E cambia da:
# Use this to jail all users in their homes # DefaultRoot ~
A:
# Use this to jail all users in their homes DefaultRoot
E cambia da:
#RequireValidShell off
A:
RequireValidShell off
And change:
# Alternative authentication frameworks
#
# Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf
To:
# Alternative authentication frameworks
#
Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf
~
Now edit /etc/proftpd/modules.conf:
nano /etc/proftpd/modules.conf
And change from:
# Install proftpd-mod-ldap to use this #LoadModule mod_ldap.c
To:
# Install proftpd-mod-ldap to use this LoadModule mod_ldap.c
And from:
# Install proftpd-mod-ldap to use this # LoadModule mod_quotatab_ldap.c
To:
# Install proftpd-mod-ldap to use this LoadModule mod_quotatab_ldap.c
No edit /etc/proftpd/ldap.conf and set the following:
<IfModule mod_ldap.c>
#
#LDAPServer ldap://ldap.example.com
#LDAPBindDN "cn=admin,dc=example,dc=com" "admin_password"
#LDAPUsers dc=users,dc=example,dc=com (uid=%u) (uidNumber=%u)
#LDAPUseTLS on
#
#
#LDAPServer ldaps://ldap.example.com
#LDAPBindDN "cn=admin,dc=example,dc=com" "admin_password"
#LDAPUsers dc=users,dc=example,dc=com (uid=%u) (uidNumber=%u)
#
LDAPServer ldap://127.0.0.1/??sub
LDAPBindDN "cn=vmail,o=hosting,dc=example,dc=tld "readonly"
LDAPUsers "o=hosting,dc=example,dc=tld" "(&(uid=%v)(objectclass=posixAccount))"
LDAPDefaultGID 33
LDAPDefaultUID 33
LDAPForceDefaultGID True
LDAPForceDefaultUID True
</IfModule>
The following commands set the default user to www-data which suits me, you can change these values to suit your setup or leave them out to use the login uid / gid.
LDAPDefaultGID 33
LDAPDefaultUID 33
LDAPForceDefaultGID True
LDAPForceDefaultUID True
33 Is the uid/gid of my testing setup, it can be different on your setup.
This concludes the proftpd installation.
Step 9:Bringing it all together
Issue the following commands to restart all of the services:
service slapd restart
service postfix restart
service dovecot restart
service proftpd restart
service apache2 restart
Now you can go to phamm and start adding mail domains and users.
Enjoy.
Note:notify me of any errors or problems with this how to so I can improve and amend this how to.
Use this thread in the forum:
https://www.howtoforge.com/community/threads/postfix-virtual-hosting-with-ldap-backend-and-with-dovecot-as-imap-pop3-server-on-ubuntu-bionic-beav.79408/
I am subscribed to this thread so I will get notifications of new posts in this thread.