GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Hosting virtuale Postfix con backend LDAP e Dovecot come server IMAP/POP3 su Ubuntu Bionic Beaver 18.04 LTS

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 quanto segue:

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.


Ubuntu
  1. Hosting virtuale con Proftpd e MySQL (quota inclusa) su Ubuntu 14.04LTS

  2. Utenti e domini virtuali con Postfix, Courier, MySQL e SquirrelMail (Ubuntu 13.10)

  3. Il server perfetto - Ubuntu 18.04 (Bionic Beaver) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3.1

  4. Come installare Spamassassin con Postfix e Dovecot su Ubuntu/Debian Server

  5. Come configurare un server di posta POP3/IMAP con Dovecot su Ubuntu 18.04

Utenti e domini virtuali con Postfix, Courier, MySQL e SquirrelMail (Ubuntu 12.04 LTS)

Hosting virtuale con vsftpd e MySQL su Ubuntu 12.04

Utenti e domini virtuali con Postfix, Courier, MySQL e SquirrelMail (Ubuntu 12.10)

Hosting virtuale con vsftpd e MySQL su Ubuntu 12.10

Hosting virtuale con Proftpd e MySQL (quota inclusa) su Ubuntu 12.10

Monitoraggio del server con Munin e Monit su Ubuntu 14.04 LTS