Tento návod popisuje, jak nastavit a nakonfigurovat hostování virtuální pošty s backendem LDAP.
Software, který v tomto návodu použijeme: Postfix (MTA), Dovecot (IMAP / POP3), Gnarwl (dovolená), OpenLDAP (LDAP) a vMailpanel jako rozhraní pro správu.
Volitelné jsou Proftpd FTP, Roundcube (webmail) a MariaDB (základní server SQL pro Roundcube).
To fungovalo pro mě, ale nemohu zaručit, že toto nastavení bude fungovat pro vás, takže tento návod přichází bez jakékoli záruky.
Předpoklady
Tento návod předpokládá následující konfigurace, pokud se vaše instalace od této liší, nahraďte položky níže svou skutečnou konfigurací.
Cesta doručování pošty (poštovní schránky):
/home/vmail/
Uživatel vmail:
UID:1000, GID:1000
Uživatelský postfix:
UID: 108, GID:108
OpenLDAP base dn:
dc=example,dc=tld
Účet správce OpenLDAP:
cn=admin,dc=example,dc=tld
vMailpanel search dn:
o=hosting,dc=example,dc=tld
Účet pouze pro čtení pro strom o=hosting,dc=example,dc=tld:
cn=vmail,o=hosting,dc=example,dc=tld
V této příručce používáte uživatele root.
Pokud chcete například o=maildomains nebo ou=domains, nezapomeňte nahradit o=hosting tím, co chcete, zejména v acl.ldif. Tento soubor acl je přísný, phamm nebude fungovat správně, pokud nebude přesně tak, jak má být. Pokud chcete jiného uživatele pouze pro čtení než phamm, nahraďte cn=phamm za cn=wat-you všude v tomto návodu.
Tato příručka také předpokládá, že jste si nainstalovali a nakonfigurovali server Ubuntu podle svých potřeb, například na Howtoforge je spousta dobrých průvodců:
The Perfect Server – Ubuntu 18.04 (Bionic Beaver) s Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot a ISPConfig 3.1
Po instalaci a konfiguraci Apache2 můžete přestat.
Krok 1:Stáhnout vMailpanel
Stáhněte si balíček vMailpanel:
cd /usr/share
Získejte nejnovější verzi vMailpanel:
git clone https://git.com/wolmfan68/vMailpanel
OK, teď můžeme začít.
Krok 2:Instalace a konfigurace OpenLDAP
Nainstalujte OpenLDAP a ldap-utils:
apt -y install slapd ldap-utils php-ldap
Překonfigurujte slapd, abyste se ujistili, že odpovídá požadovanému nastavení
dpkg-reconfigure slapd
Budete muset odpovědět na několik otázek:
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
Přejděte do adresáře /etc/ldap/schema:
cd /etc/ldap/schema
Zkopírujte soubory phamm.schema a perversia.net.schema z balíčku phamm do adresáře schématu:
cp /usr/share/vMailbox/schema/* /etc/ldap/schema.
Nyní přidáme schémata do 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
Nyní vytvoříme položku o=hosting a účet vmail.
Upravte níže uvedený text podle svých potřeb a přání a vygenerujte heslo pro účet vmail. Hash aktuálně v tomto souboru nastavuje heslo pouze pro čtení
Chcete-li vytvořit hash pro účet vmail, zadejte následující příkaz:
slappasswd -h {MD5}
Zadejte dvakrát požadované heslo a zkopírujte výsledek do textu níže.
nano base.ldif
Obsah 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
Načtěte základní dn do databáze pomocí následujícího příkazu:
ldapmodify -a -D cn=admin,dc=example,dc=tld -W -f base.ldif
Nyní musíme upravit ACL tak, aby byl každému typu uživatele udělen správný přístup.
ldapmodify -Y EXTERNAL -H ldapi:/// -f acl-remove.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f acl-new.ldif
Nové acl můžete zkontrolovat pomocí následujícího příkazu:
slapcat -n 0
Tím je konfigurace OpenLDAP ukončena.
Krok 3:Instalace a konfigurace Postfix
Před tím potřebujeme mít uživatele vmail a jeho domovský adresář.
Vytvořte uživatele a skupinu vmail:
useradd vmail
Ve výchozím nastavení je také vytvořen skupinový vmail.
Skutečné uid a číslo skupiny naleznete v /etc/passwd.
Dále vytvořte adresář vmail a nastavte vlastnictví uživatele a skupiny vmail.
mkdir /home/vmail
mkdir /home/vmail/domains
chown -R vmail:vmail /home/vmail
Spusťte následující příkaz k instalaci Postfixu a dalších požadovaných aplikací:
apt install postfix postfix-ldap
Budou vám položeny dvě otázky. Odpovězte následovně:
Obecný typ konfigurace pošty: <--Stand alone
Název systémové pošty: <-- mail.example.tld
Sasl neinstalujeme, protože použijeme Dovecot LDA a doručíme.
Nyní vytvoříme certifikáty pro 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
Poznámka:Můžete zkopírovat všechny soubory z příkladů/postfixu do vašeho adresáře etc/postfix a podle toho provést změny. Pro úplnost uvedu kompletní nastavení níže.
Nyní nakonfigurujeme postfix:
cd /etc/postfix
mv /etc/postfix/main.cf /etc/postfix/main.cf.bck
nano /etc/postfix/main.cf
A vložte do něj následující. Upozorňujeme, že tato konfigurace umožňuje odesílání (předávání) e-mailů ověřeným uživatelům a také odesílání místních e-mailů (jako například root, postmaster, ...) na příslušné aliasy, pokud jsou nakonfigurovány.
smtpd_banner =$myhostname ESMTP $mail_name
biff =ne
# připojení .domain je úkolem MUA.
append_dot_mydomain =no
# Odkomentovat další řádek pro generování varování o „zpožděné poště“
delay_warning_time =4 h
# parametry TLS
smtpd_tls_cert_file =/etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file =/etc /postfix/ssl/smtpd.key
smtpd_use_tls =ano
smtpd_tls_session_cache_database =btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache:quetbase =_directsion_cache:quetbase>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 =vše
#smtp_bind_address =vaše ip adresa (volitelné) ==>zrušte označení a změňte IP adresu pro své nastavení.
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable =ano
smtpd_sasl_security_options =noanonymous
smtpd_sasl_type =dovecosl_path =doveco/sasl_path =pd/sasl_path>broken_sasl_auth_clients =ano
smtpd_tls_auth_only =ne
smtp_use_tls =ano
smtp_tls_note_starttls_offer =ano
smtpd_tls_/pfix/smtp
/etstm_file =/etstm_offer =1
smtpd_tls_received_header =yes
smtpd_tls_session_cache_timeout =3600 s
tls_random_source =dev:/dev/urandom
home_mailbox =Maildir_br>strictionsd>
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
odmítnout_ rbl_client list.dsbl.org
odmítnutí_rbl_client cbl.abuseat.org
odmítnutí_rhsbl_sender dsn.fc-ignorant.org
smtpd_data_restrictions =
odmítnutí_bounauth, i_piient
povolení
smtpd_helo_required =yes
# transport_maps
maildrop_destination_concurrency_limit =2
maildrop_destination_recipient_limit =1
gnarwl_destination_limit =1concurrency >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 .$mydomain, $mydomain
virtual_alias_maps =
ldap:/etc/postfix/ldap-aliases.cf,
ldap:/etc/postfix/ldap-virtualforward.cf,
ldap:/etc/postfix/ldap-accountsmap.cf
# virtuální účty pro doručování
virtual_mailbox_base =/home/vmail
virtual_mailbox_maps =
ldap :/etc/postfix/ldap-accounts.cf
virtual_minimum_uid =1000 ==> Změňte toto na skutečné uid uživatele vmail
virtual_uid_maps =static:1000 ==> Změňte toto na skutečné uid uživatel vmail
virtual_gid_maps =static:1000 ==> Změňte toto na skutečné uid uživatele vmail
local_recipient_maps =$alias_maps
recipient_bcc_maps =ldap:/ etc/postfix/ldap-vacation.cf
nano /etc/postfix/master.cf
A vložte do něj následující (přidejte konec):
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}
Nyní musíme napsat různé soubory ldap-xxx.cf
nano ldap-accounts.cf
A vložte do něj následující:
server_host =localhost
server_port =389
verze =3
bind =yes
start_tls =ne
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 =mailbox
nano ldap-accounstmap.cf
A vložte do něj následující:
server_host =localhost
server_port =389
verze =3
bind =yes
start_tls =ne
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =pouze pro čtení
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
A vložte do něj následující:
server_host =localhost
server_port =389
verze =3
bind =yes
start_tls =ne
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =pouze pro čtení
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
A vložte do něj následující:
server_host =localhost
server_port =389
verze =3
bind =yes
start_tls =ne
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =pouze pro čtení
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-vacation.cf
A vložte do něj následující:
server_host =localhost
server_port =389
verze =3
bind =yes
start_tls =ne
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =pouze pro čtení
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(objectClass=VirtualMailAccount)(mail =%s))(vacationActive=TRUE)(forwardActive=FALSE)(accountActive=PRAVDA)(delete=FALSE))
result_attribute =mailAutoreply
nano ldap-virtualforward.cf
A vložte do něj následující:
server_host =localhost
server_port =389
verze =3
bind =yes
start_tls =ne
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =pouze pro čtení
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(objectClass=VirtualMailAccount)(mail =%s))(vacationActive=FALSE)(forwardActive=PRAVDA)(accountActive=PRAVDA)(delete=FALSE))
result_attribute =maildrop
Tím je nastavení postfixu ukončeno.
Krok 4:Instalace a konfigurace Dovecot
apt install dovecot-imapd dovecot-pop3d dovecot-ldap
Tím se nainstaluje dovecot a všechny potřebné soubory a také se vytvoří standardní SSL certifikáty pro IMAP a POP3.
Nejprve se přepneme do adresáře dovecot.
Poznámka:Všechny soubory z příkladů/dovecot můžete zkopírovat do svého adresáře etc/dovecot a provést odpovídající změny. Pro úplnost uvedu kompletní nastavení níže.
cd /etc/dovecot
Nyní nakonfigurujeme různé konfigurační soubory dovecotu.
nano dovecot-ldap.conf.ext
A proveďte následující změny:
hostitelé =localhost:389
ldap_version =3
auth_bind =ano
dn =cn=vmail,o=hosting,dc=example,dc /d=tld >základní =o=hosting,dc=hosting,dc=tld
rozsah =podstrom
deref =nikdy
user_attrs =kvóta=kvóta=maildir:storage
=kvóta=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
A změňte sekci Heslo a databáze uživatelů na toto:
#!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
A proveďte následující změny:
mail_location =maildir:/home/vmail/%d/%u
mail_uid =1000 ==> změnit na skutečnou hodnotu uid vmail
mail_gid =1000 ==> změňte toto na skutečnou hodnotu gid vmailu
first_valid_uid =1000 ==> změna na skutečnou hodnotu uid vmail
first_valid_gid =1000 ==> změnit toto na skutečnou hodnotu gid vmailu
vi 10-master.conf
A proveďte následující změny:
unix_listener auth-userdb {
režim =0666
user =vmail
skupina =vmail
}
# Postfix smtp-auth
unix_listener / var/spool/postfix/private/auth {
režim =0666
}
vi 15-lda.conf
A proveďte následující změny:
postmaster_address = [e-mail chráněn]
lda_mailbox_autocreate =ano
Tím je konfigurace Dovecot ukončena.
Krok 5:Instalace a konfigurace gnarwl
Pojďme nainstalovat gnarwl:
apt install gnarwl
Nyní nakonfigurujeme gnarwl.
Nejprve si zazálohujeme původní konfigurační soubor a nahradíme jej novým.
mv /etc/gnarwl.conf /etc/gnarwl.conf.bck
Nyní vytvoříme nový soubor conf:
vi /etc/gnarwl.conf
A vložte následující:
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
Udělejte adresář gnarwl čitelný pro uživatele vmail
chown -R vmail:vmail /var/lib/gnarwl/
Dále musíme přidat transport gnarwl do postfixu
vi /etc/postfix/transport
Vložte následující:
.autoreply gnarwl:
Nyní musíme vytvořit transport.db
postmap /etc/postfix/transport
Tím je konfigurace gnarwl uzavřena.
Krok 6:Instalace a konfigurace vMailpanel
Protože jsme si vMailpanel stáhli již dříve, můžeme začít přímo s konfigurací rozhraní vMailpanel.
chown -R www-data:www-data /usr/share/phamm
cd /usr/share/vMailpanel
Nyní nakonfigurujeme phamm pro skutečné použití.
cp config.inc.example.php config.inc.php
nano config.inc.php
Změňte parametry připojení ldap tak, aby odpovídaly vaší skutečné konfiguraci.
// *============================* // *=== 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');
a změnit
// Welcome message define ('SEND_WELCOME',1); $welcome_msg = '../welcome_message.txt'; $welcome_subject = 'Welcome!'; # $welcome_sender = '[email protected]'; $welcome_bcc = '[email protected]';
To odešle uvítací zprávu a skrytou kopii na váš účet správce pošty.
Povolte plugin fpt and person odstraněním // v sekci plugins. Pokud chcete, můžete také povolit davical a nebo jabber pluginy, schéma potřebné pro tyto pluginy je nainstalováno.
V souboru config.inc.php najdete:
define ('DELETE_ACCOUNT_IMMEDIATELY', false);
Pokud toto nastavíte na hodnotu true, smazání účtu nebo domény se projeví okamžitě. Fyzická poštovní schránka však není odstraněna (ani doménový adresář). Abychom smazali fyzickou schránku, měli bychom použít skript cleaner.sh. To je popsáno níže.
Můžete upravit plugins/mail.xml a změnit výchozí hodnoty pro SMTP a kvótu, upravit je podle svých potřeb. Výchozí je kvóta 1 GB.
Můžete upravit plugins/ftp.xml a změnit výchozí hodnoty výchozího ftp (základního) adresáře a kvóty, upravit je podle svých potřeb.
Nezapomeňte vytvořit aliasy nebo poštovní schránky pro poštmistra, webmastera, protože je používají úředníci a poskytovatelé internetových služeb k odesílání pošty v případě... Neexistence těchto adres může vést k zařazení na černou listinu.
Ve výchozím nastavení jsou vytvořeny aliasy [chráněno e-mailem] a [chráněno e-mailem], které mají výchozí hodnotu [chráněno e-mailem].
Nyní čistší skript:
cp tools/cleaner.sh /home/vmail/cleaner.sh
Změňte následující v cleaner.sh
BINDDN="cn=admin,dc=example,dc=tld"
BINDPW="password"
LDAP_BASE="o=hosting,dc=example,dc=tld"
Odrážet vaši instalaci
nano /home/vmail/cleaner.sh
crontab -e
Vložte následující:
*/10 * * * * /home/vmail/cleaner.sh
To spustí skript čističe každých 10 minut. Neváhejte změnit načasování.
Nyní přidáme vMailpanel do Apache
nano /etc/apache2/conf-enabled/000-default.conf
A mezi položky
Alias /vmailpanel /usr/share/vMailpanel/public
Tím je konfigurace vMailpanelu uzavřena.
Krok 7:Instalace a konfigurace webové pošty Roundcube
Nejprve vytvoříme databázi s názvem roundcube:
mysqladmin -u root -p create roundcube
Dále přejdeme do prostředí MySQL:
mysql -u root -p
V prostředí MySQL vytvoříme uživatele roundcube s heslem roundcube_password (nahraďte ho heslem dle vašeho výběru), který má oprávnění SELECT,INSERT,UPDATE,DELETE v databázi roundcube . Tohoto uživatele použijí Postfix a Courier k připojení k databázi 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;
Nyní stáhneme a nainstalujeme 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
Vždy zkontrolujte nejnovější verzi Roundcube a stáhněte si ji a upravte výše uvedené příkazy na verzi Roundcube, kterou jste si stáhli.
https://roundcube.net/download/
Nyní načteme sql tabulky do databáze, kterou jsme vytvořili dříve:
mysql -u roundcube -p roundcube < SQL/mysql.initial.sql
Nyní upravíme konfiguraci Roundcube:
cp config/config.inc.php.sample config/config.inc.php
Nastavte konfiguraci databáze:
nano config/config.inc.php
Změňte následující řádek na konfiguraci databáze:
$rcmail_config['db_dsnw'] = 'mysql://roundcube:[email protected]/roundcube';
A změňte následující
Od:
// List of active plugins (in plugins/ directory) $config['plugins'] = array(
'archive',
'zipdownload',
Komu:
// List of active plugins (in plugins/ directory) $config['plugins'] = array(
'archive',
'zipdownload',
'password',
'vacation',
Změna:
chars.$rcmail_config['des_key'] = 'rcmail-!24ByteDESkey*Str';
Komu:
chars.$rcmail_config['des_key'] = 'your-own-24-digitkeystring';
Změna:
$rcmail_config['default_host'] = '';
Komu:
$rcmail_config['default_host'] = 'localhost';
Změna:
$rcmail_config['smtp_server'] = '';
Komu
$rcmail_config['smtp_server'] = 'localhost';
Konfigurace zásuvného modulu pro hesla:
cp plugins/password/config.inc.php.dist plugins/password/config.inc.php
Upravte konfiguraci:
nano plugins/password/config.inc.php
Změňte následující položky
Od:
$rcmail_config['password_driver'] = 'sql';
Komu:
$rcmail_config['password_driver'] = 'ldap';
Od:
// 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;
Komu:
$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;
Nyní si stáhneme a nainstalujeme plugin pro dovolenou:
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
Nyní upravíme konfiguraci a změníme:
nano plugins/vacation/config.inc.php
Změna:
$rcmail_config['vacation_gui_vacationsubject'] = TRUE;
Komu:
$rcmail_config['vacation_gui_vacationsubject'] = FALSE;
Změna:
$rcmail_config['vacation_driver'] = 'sql';
Komu:
$rcmail_config['vacation_driver'] = 'ldap';
Změna:
// 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';
Komu:
// 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';
Změna:
// 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' );
Komu:
// 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' );
Musíme změnit kořen dokumentu v konfiguraci serveru Apche2, aby byl přístup k Roundcube.
nano /etc/apache2/sites-enabled/000-default.conf
A změnit z:
DocumentRoot /var/www/html
Komu:
DocumentRoot /var/www/
Tím je konfigurace pro Roundcube ukončena.
Krok 8:Instalace a konfigurace proftpd
Nejprve nainstalujeme proftpd a jeho požadavky:
apt install proftpd proftpd-mod-ldap
V závislosti na vaší zátěži se můžete rozhodnout mezi stand alone a inet.d.
Poznámka:Konfigurační soubory můžete zkopírovat z example/proftpd do /etc/proftpd, ale pro přehlednost nastíním všechny kroky konfigurace.
Upravte /etc/proftpd/proftpd.conf:
nano /etc/proftpd/proftpd.conf
A změnit z:
# Use this to jail all users in their homes # DefaultRoot ~
Komu:
# Use this to jail all users in their homes DefaultRoot
A změnit z:
#RequireValidShell off
Komu:
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.