GNU/Linux >> Znalost Linux >  >> Cent OS

Část 3:PostfixAdmin – Vytváření virtuálních poštovních schránek na poštovním serveru CentOS 8/RHEL 8

V předchozích článcích jsme diskutovali o tom, jak nastavit vlastní poštovní server na CentOS 8/RHEL 8 od nuly. V části 1 a části 2 této série výukových programů jsme se naučili, jak nastavit Server Postfix SMTP a server IMAP Dovecot , ale zatím můžeme mít e-mailové adresy pouze pro uživatele s místním unixovým účtem. Tento tutoriál vám ukáže, jak vytvořit virtuální poštovní schránky na poštovním serveru CentOS 8/RHEL 8 pomocí PostfixAdmin , což je webové rozhraní s otevřeným zdrojovým kódem pro konfiguraci a správu e-mailového serveru založeného na Postfixu pro mnoho domén a uživatelů.

S virtuálními poštovními schránkami , nemusíme pro každou e-mailovou adresu vytvářet místní unixový účet. Pokud se chystáte nastavit poštovní server pro společnost nebo organizaci, je vždy lepší mít snadný způsob vytváření virtuálních poštovních schránek ve webovém rozhraní, které také umožňuje uživatelům měnit svá hesla. Zde přichází na řadu PostfixAdmin.

Funkce PostfixAdmin

  • správa poštovních schránek, virtuálních domén a aliasů
  • zprávy o dovolené/nepřítomnosti (Osobně si myslím, že tuto funkci je lepší provést v Roundcube Webmail.)
  • aliasové domény (přesměrování jedné domény do druhé s ověřením příjemce)
  • uživatelé mohou spravovat svou vlastní poštovní schránku (změnit alias, heslo a zprávu o dovolené)
  • podpora kvót pro jednotlivé poštovní schránky a celková kvóta domény
  • Integrace fetchmail:Můžete načítat e-maily ze své původní e-mailové adresy na novou e-mailovou adresu.
  • klient příkazového řádku postfixadmin-cli pro ty, kteří nechtějí klikat ve webovém rozhraní 😉

Poznámka :Jakmile dokončíte část 3, již nebudete moci používat místní unixové účty jako e-mailové adresy. E-mailové adresy musíte vytvořit z webového rozhraní PostfixAdmin.

Předpoklady

Předpokládám, že jste sledovali část 1 a část 2 této série tutoriálů. Pokud jste sledovali výukové programy pro poštovní servery na jiných webových stránkách, doporučuji vyčistit své konfigurace a začít znovu s mou sérií výukových programů, abyste nebyli zmateni různými procesy nastavení.

Jakmile jsou výše uvedené požadavky splněny, pojďme nainstalovat a nakonfigurovat PostfixAdmin.

Krok 1:Instalace databázového serveru MariaDB na CentOS 8/RHEL 8

PostfixAdmin je napsán v PHP a vyžaduje databázi (MySQL/MariaDB, PostgreSQL nebo SQLite). Tento článek bude používat MariaDB, což je náhrada za MySQL. Je vyvinut bývalými členy týmu MySQL, kteří se obávají, že by Oracle mohl změnit MySQL na uzavřený produkt. Chcete-li nainstalovat MariaDB na CentOS 8/RHEL 8, zadejte následující příkaz.

sudo dnf install mariadb-server mariadb -y

Po instalaci jej musíme spustit.

sudo systemctl start mariadb

Povolit automatické spouštění při spouštění systému.

sudo systemctl povolit mariadb

Zkontrolujte stav:

systemctl status mariadb

výstup:

● mariadb.service – databázový server MariaDB 10.3 Načteno:načteno (/usr/lib/systemd/system/mariadb.service; povoleno; přednastaveno dodavatelem:zakázáno) Aktivní:aktivní (běží) od So 2019-10-12 09:02:53 UTC; Před 33 s Dokumenty:man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Hlavní PID:18608 (mysqld) Stav:„Teď se berou vaše požadavky SQL...“ Úkoly:30 (limit :5092) Paměť:77,0M CGroup:/system.slice/mariadb.service └─18608 /usr/libexec/mysqld --basedir=/usr

Povoleno ” označuje, že je povoleno automatické spouštění při spouštění a vidíme, že server MariaDB běží. Nyní musíme spustit bezpečnostní skript.

sudo mysql_secure_installation

Až budete požádáni o zadání rootovského hesla MariaDB, stiskněte klávesu Enter, protože heslo root ještě není nastaveno. Poté zadejte y pro nastavení hesla uživatele root pro server MariaDB.

Dále můžete stisknout Enter pro zodpovězení všech zbývajících otázek, což odstraní anonymního uživatele, zakáže vzdálené přihlášení root a odstraní testovací databázi. Tento krok je základním požadavkem pro zabezpečení databáze MariaDB. (Všimněte si, že písmeno Y je velká, což znamená, že se jedná o výchozí odpověď.)

Krok 2:Stáhněte si PostfixAdmin na CentOS 8/RHEL 8 Server

Přihlaste se ke svému poštovnímu serveru a poté stáhněte instalační soubor PostfixAdmin na váš server. Přejděte na stránku PostfixAdmin Gitbub a stáhněte si nejnovější verzi. Můžete použít wget nástroj ke stažení z příkazového řádku. Odkaz ke stažení je vždy k dispozici v níže uvedeném formátu. Pokud vyjde nová verze, jednoduše nahraďte 3.3.8 novým číslem verze.

instalace sudo dnf wgetwget https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.3.8.tar.gz

Po stažení archiv rozbalte.

Pokud používáte Apache, rozbalte jej do /var/www/ adresář a přejmenujte jej na postfixadmin .

sudo dnf nainstalovat tarsudo tar xvf postfixadmin-3.3.8.tar.gz -C /var/www/sudo mv /var/www/postfixadmin-postfixadmin-3.3.8 /var/www/postfixadmin

Pokud používáte Nginx, rozbalte jej do /usr/share/nginx/ adresář a přejmenujte jej na postfixadmin .

instalace sudo dnf tarsudo tar xvf postfixadmin-3.3.8.tar.gz -C /usr/share/nginx/sudo mv /usr/share/nginx/postfixadmin-postfixadmin-3.3.8 /usr/share/nginx/ postfixadmin

Krok 3:Nastavení oprávnění

PostfixAdmin vyžaduje templates_c a webový server potřebuje přístup pro čtení a zápis do tohoto adresáře. Musíme také změnit kontext SELinuxu, aby bylo možné do něj zapisovat. Spusťte tedy následující příkazy.

Apache

sudo mkdir /var/www/postfixadmin/templates_csudo setfacl -R -m u:apache:rwx /var/www/postfixadmin/templates_c/sudo chcon -t httpd_sys_rw_content_t /var/www/postfixadmin/templates_c/ -R

Nginx

sudo mkdir /usr/share/nginx/postfixadmin/templates_csudo setfacl -R -m u:nginx:rwx /usr/share/nginx/postfixadmin/templates_c/sudo chcon -t httpd_sys_rw_content_t/usr/postemad/usr/postemad / -R

Ve výchozím nastavení SELinux zakazuje Apache/Nginx odesílat síťové požadavky na jiné servery, ale později si Apache/Nginx musí vyžádat stav certifikátu TLS ze serveru Let's Encrypt CA pro sešívání OCSP, takže musíme SELinuxu říci, aby povolil Apache/Nginx s následujícím příkaz.

sudo setsebool -P httpd_can_network_connect 1

Pokud používáte Nginx, musíte také spustit následující příkaz, abyste uživateli nginx poskytli oprávnění ke čtení a zápisu do 3 adresářů.

sudo setfacl -R -m u:nginx:rwx /var/lib/php/opcache/ /var/lib/php/session/ /var/lib/php/wsdlcache/

Restartujte Apache/Nginx.

sudo systemctl restart httpdsudo systemctl restart nginx

Počínaje verzí Dovecot 2.3.11 potřebuje uživatel webového serveru oprávnění ke čtení certifikátu Let’s Encrypt TLS, aby mohl provést hašování hesla. Spuštěním následujících dvou příkazů udělte oprávnění.

Apache

sudo setfacl -R -m u:apache:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/

Nginx

sudo setfacl -R -m u:nginx:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/

Krok 4:Vytvořte databázi a uživatele pro PostfixAdmin

Přihlaste se do prostředí MySQL/MariaDB jako root pomocí následujícího příkazu. Budete muset zadat heslo root MySQL/MariaDB.

mysql -u root -p

Jakmile jste přihlášeni, vytvořte databázi pro PostfixAdmin pomocí následujícího příkazu. Pojmenoval jsem to postfixadmin , ale můžete použít jakýkoli název, který chcete. (Nevynechávejte středník.)

vytvořit databázi postfixadmin;

Poté zadejte níže uvedený příkaz a vytvořte uživatele databáze pro PostfixAdmin. Tento příkaz také uděluje uživateli všechna oprávnění databáze postfixadmin. Nahraďte postfixadmin_password s vaším preferovaným heslem. Pamatujte, že heslo by nemělo obsahovat # znak, nebo se možná nebudete moci přihlásit později.

udělte všechna oprávnění na postfixadmin.* uživateli 'postfixadmin'@'localhost' identifikovanému pomocí 'postfixadmin_password';

Vypláchněte tabulku oprávnění, aby se změny projevily, a poté opusťte prostředí MariaDB.

vyprázdnit oprávnění;exit;

Krok 5:Konfigurace PostfixAdmin

Výchozí konfigurační soubor PostfixAdmin je config.inc.php . Musíme vytvořit config.local.php soubor a přidejte vlastní konfigurace.

Apache

sudo nano /var/www/postfixadmin/config.local.php

Nginx

sudo nano /usr/share/nginx/postfixadmin/config.local.php

Přidejte do souboru následující řádky, aby se PostfixAdmin mohl připojit k databázi MySQL/MariaDB. Nahraďte postfixadmin_password se skutečným heslem PostfixAdmin vytvořeným v kroku 4.

 

Uložte a zavřete soubor. Všimněte si, že budeme používat schéma hesla BLF-CRYPT.

Krok 6:Vytvoření virtuálního hostitele Apache nebo konfiguračního souboru Nginx pro PostfixAdmin

Apache

Pokud používáte webový server Apache, vytvořte virtuálního hostitele pro PostfixAdmin.

sudo nano /etc/httpd/conf.d/postfixadmin.conf

Do souboru vložte následující text. Nahraďte postfixadmin.example.com se svým skutečným názvem domény a nezapomeňte pro něj nastavit záznam DNS A.

 ServerName postfixadmin.example.com DocumentRoot /var/www/postfixadmin/public/ ErrorLog /var/log/httpd/postfixadmin_error.log CustomLog /var/log/httpd/postfixadmin_access.log kombinovaný  Možnosti FollowSymLinks AllowOverride All   Možnosti FollowSymLinks MultiViews AllowOverride All Objednávka povolit, zakázat povolit ze všech 

Uložte a zavřete soubor. Znovu načtěte Apache, aby se změny projevily.

sudo systemctl reload httpd

Nyní byste měli být schopni vidět webového průvodce instalací PostfixAdmin na http://postfixadmin.example.com/setup.php .

Nginx

Pokud používáte webový server Nginx, vytvořte virtuálního hostitele pro PostfixAdmin.

sudo nano /etc/nginx/conf.d/postfixadmin.conf

Do souboru vložte následující text. Nahraďte postfixadmin.example.com se svým skutečným názvem domény a nezapomeňte pro něj nastavit záznam DNS A.

server { poslouchat 80; poslouchej [::]:80; název_serveru postfixadmin.example.com; root /usr/share/nginx/postfixadmin/public/; index index.php index.html; access_log /var/log/nginx/postfixadmin_access.log; error_log /var/log/nginx/postfixadmin_error.log; umístění / { try_files $uri $uri/ /index.php; } umístění ~ ^/(.+\.php)$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; zahrnout /etc/nginx/fastcgi_params; }}

Uložte a zavřete soubor. Poté otestujte konfiguraci Nginx.

sudo nginx -t

Pokud je test úspěšný, znovu načtěte Nginx, aby se změny projevily.

sudo systemctl reload nginx

Nyní byste měli být schopni vidět webového průvodce instalací PostfixAdmin na http://postfixadmin.example.com/setup.php .

Krok 7:Nainstalujte požadované a doporučené moduly PHP

PostfixAdmin vyžaduje php-imap modul pro vytváření podsložek v poštovních schránkách, ale php-imap není součástí výchozího repozitáře CentOS 8/RHEL 8, takže k instalaci tohoto modulu PHP musíme použít úložiště Remi.

Nainstalujte Remi Repo.

instalace sudo dnf -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Poté resetujte streamy modulů PHP.

reset modulu sudo dnf php

Povolte php:remi-7.4 stream modulu.

modul sudo dnf povolí php:remi-7.4 -y

Poté můžete spustit následující příkaz a nainstalovat PHP moduly požadované nebo doporučené PostfixAdminem.

instalace sudo dnf -y php-fpm php-imap php-mbstring php-mysqlnd php-gd php-opcache php-json php-curl php-zip php-xml php-bz2 php-intl php-gmp

Musíme spustit následující příkaz, abychom řekli SELinuxu, aby povolil Apache ke spuštění kódu PHP prostřednictvím PHP-FPM.

sudo setsebool -P httpd_execmem 1

Pokud používáte Nginx , upravte konfigurační soubor PHP-FPM:

nano /etc/php-fpm.d/www.conf

Ve výchozím nastavení běží PHP-FPM jako apache uživatel. Protože používáte webový server Nginx, musíme jej změnit. Najděte následující dva řádky.

user =apachegroup =apache

Změňte je na

user =nginxgroup =nginx

Uložte a zavřete soubor. Poté spusťte PHP-FPM.

sudo systemctl start php-fpm

Povolit automatické spouštění při spouštění systému.

sudo systemctl povolit php-fpm

Restartujte Apache nebo Nginx.

sudo systemctl restart httpdsudo systemctl restart nginx

Krok 8:Povolení HTTPS

Pro šifrování HTTP provozu můžeme povolit HTTPS instalací bezplatného certifikátu TLS vydaného od Let’s Encrypt.

Pokud používáte Apache, spusťte tento příkaz pro získání a instalaci certifikátu TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [e-mail chráněný] -d postfixadmin.example.com

Pokud používáte Nginx,  spusťte následující příkaz k získání a instalaci certifikátu TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [e-mail chráněný] -d postfixadmin.example.com

Kde:

  • --apache :Použijte plugin Apache.
  • --nginx :Použijte plugin nginx.
  • --agree-tos :Souhlas se smluvními podmínkami.
  • --redirect :Vynutit HTTPS přesměrováním 301.
  • --hsts :Ke každé odpovědi HTTP přidejte záhlaví Strict-Transport-Security. Vynucení prohlížeče, aby pro doménu vždy používal TLS. Chrání před odstraněním SSL/TLS.
  • --staple-ocsp : Povoluje sešívání OCSP. Platná odpověď OCSP je přišita k certifikátu, který server nabízí během TLS.
  • --email :E-mail používaný pro registraci a kontakt pro obnovení.
  • -d za příznakem následuje seznam názvů domén oddělených čárkou. Můžete přidat až 100 názvů domén.

Certifikát by nyní měl být získán a automaticky nainstalován, což je indikováno níže uvedenými zprávami.

Krok 9:Vytvořte vlastní zásady SELinux pro webový server

Během instalace potřebuje PostfixAdmin přečíst konfigurační soubory Dovecot, aby vytvořil heslo. Ve výchozím nastavení SELinux neumožňuje webovému serveru číst konfigurační soubory Dovecot. Potřebujeme vytvořit vlastní SELinux politiku, která tuto akci umožní.

Nainstalujte požadované balíčky.

sudo dnf install binutils rpm-build setools-console policycoreutils-python3 policycoreutils-devel

Vygenerujte vlastní zásady pro httpd. (Pokud používáte Nginx, nahraďte httpd pomocí nginx .)

generování sudo sepolicy --init /usr/sbin/httpd

Upravte soubor pro vynucení typu.

sudo nano httpd.te

Přidejte následující řádek na konec tohoto souboru, aby Apache/Nginx mohl číst konfigurační soubory Dovecot.

dovecot_read_config(httpd_t)

Uložte a zavřete soubor. Poté nainstalujte nové zásady SELinux.

sudo ./httpd.sh

Nyní by měl být Apache/Nginx schopen číst konfigurační soubory Dovecot.

Pokud nevíte, co přidat do httpd.te Pokud dojde k odmítnutí SELinuxu, spusťte následující příkaz.

sudo ausearch -m AVC -ts poslední | audit2allow -R

audit2allow navrhne změny.

Krok 10:Povolte statistiky v Dovecot

PostfixAdmin potřebuje číst statistiky Dovecot. Upravte konfigurační soubor Dovecot.

sudo nano /etc/dovecot/conf.d/10-master.conf

Přidejte následující řádky na konec tohoto souboru. Pokud používáte Nginx, změňte apache na nginx .

service stats { unix_listener stats-reader { user =apache group =apache mode =0660}unix_listener stats-writer { user =apache group =apache mode =0660 }}

Uložte a zavřete soubor. Poté přidejte webový server do dovecot skupina.

Apache

sudo gpasswd -a apache dovecot

NGinx

sudo gpasswd -a nginx dovecot

Restartujte Dovecot.

sudo systemctl restart dovecot

Krok 11:Dokončete instalaci ve webovém prohlížeči

Přejděte na postfixadmin.example.com/setup.php ke spuštění webového průvodce nastavením. Nejprve musíte vytvořit heslo pro nastavení pro PostfixAdmin.

Po vytvoření hash hesla zobrazí PostfixAdmin řádek jako níže.

$CONF['setup_password'] ='db1b019982a6ba878bdc6bd923bef03e:4e29fdd341b570364064a5ad69652f3d8bee0bb4';

Musíte otevřít config.local.php soubor.

Apache

sudo nano /var/www/postfixadmin/config.local.php

Nginx

sudo nano /usr/share/nginx/postfixadmin/config.local.php

Přidejte zobrazení řádků na stránce nastavení PostfixAdmin na konec souboru, jak je uvedeno níže.

Po uložení souboru musíte obnovit stránku nastavení PostfixAdmin a znovu zadat heslo pro nastavení a poté vytvořit účet správce. Pro účet správce prosím nepoužívejte e-mailovou adresu Gmail, Yahoo Mail nebo Microsoft, jinak se možná nebudete moci přihlásit později. Použijte e-mailovou adresu na vlastní doméně. E-mailovou adresu můžete vytvořit později v PostfixAdmin.

Po vytvoření účtu superadmin se můžete přihlásit do PostfixAdmin na postfixadmin.example.com/login.php .

Pokud se při pokusu o vytvoření účtu superadmin zobrazí následující chyba,

Nelze zašifrovat heslo pomocí dovecotpw, podrobnosti naleznete v protokolu chyb

Je to proto, že uživatel webového serveru nemá oprávnění číst certifikát Let's Encrypt TLS. Chcete-li to opravit, spusťte následující dva příkazy k udělení oprávnění.

Apache

sudo setfacl -R -m u:apache:rx /etc/letsencrypt/live/sudo setfacl -R -m u:apache:rx /etc/letsencrypt/archive/

Nginx

sudo setfacl -R -m u:nginx:rx /etc/letsencrypt/live/sudo setfacl -R -m u:nginx:rx /etc/letsencrypt/archive/

Pokud se zobrazí následující chyba,

Neplatný dotaz:Zadaný klíč byl příliš dlouhý; maximální délka klíče je 1000 bajtů

Poté se musíte přihlásit k databázovému serveru MySQL/MariaDB jako root z příkazového řádku,

mysql -u root -p

a změňte výchozí řazení z utf8mb4_general_ci na utf8_general_ci .

MariaDB [(none)]> alter databáze postfixadmin collate ='utf8_general_ci';

Ukončete konzolu MySQL/MariaDB a znovu načtěte stránku setup.php.

Krok 12:Konfigurace Postfixu pro použití databáze MySQL/MariaDB

Ve výchozím nastavení Postfix doručuje e-maily pouze uživatelům s místním unixovým účtem. Aby bylo možné doručovat e-maily virtuálním uživatelům, jejichž informace jsou uloženy v databázi, musíme Postfix nakonfigurovat tak, aby používal domény virtuálních poštovních schránek.

Nejprve musíme přidat podporu MySQL map pro Postfix instalací postfix-mysql balíček.

instalace sudo dnf postfix-mysql

Poté upravte hlavní konfigurační soubor Postfixu.

sudo nano /etc/postfix/main.cf

Přidejte následující řádky na konec tohoto souboru. (V textovém editoru Nano můžete stisknout Ctrl+W a poté Ctrl+V pro skok na konec souboru.)

virtual_mailbox_domains =proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cfvirtual_mailbox_maps =proxy:mysql:/etc/postfix/sql/mysql_virtual_virtual_mailbox_maps/scvirtual_maps_maps.clsali/asql_virtual_mailbox_maps.clsali.assali proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/aldocat_mainsqali. 

Kde:

  • virtual_mailbox_domains ukazuje na soubor, který Postfixu řekne, jak vyhledat informace o doméně z databáze.
  • virtual_mailbox_maps ukazuje na soubory, které Postfixu řeknou, jak vyhledat e-mailové adresy v databázi.
  • virtual_alias_maps ukazuje na soubory, které Postfixu řeknou, jak vyhledávat aliasy v databázi.

Chceme používat dovecot k doručování příchozích e-mailů do úložiště zpráv virtuálních uživatelů, proto také přidejte následující řádek na konec tohoto souboru.

virtuální_transport =lmtp:unix:private/dovecot-lmtp

Uložte a zavřete soubor. Dále musíme vytvořit .cf soubory jeden po druhém. Vytvořte adresář sql.

sudo mkdir /etc/postfix/sql/

Vytvořte mysql_virtual_domains_maps.cf soubor.

sudo nano /etc/postfix/sql/mysql_virtual_domains_maps.cf

Přidejte následující obsah. Nahraďte postfixadmin_password s heslem postfixadmin, které jste nastavili v kroku 4.

user =postfixadminpassword =postfixadmin_passwordhosts =localhostdbname =postfixadminquery =VYBRAT doménu Z domény WHERE domain='%s' AND active ='1'#query =VYBRAT doménu FROM domény WHERE domain='%s'#volitelný dotaz, který se má použít, když předávání pro zálohování MX#query =VYBRAT doménu Z domény WHERE domain='%s' AND backupmx ='0' AND active ='1'#expansion_limit =100

Vytvořte soubor mysql_virtual_mailbox_maps.cf soubor.

sudo nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf

Přidejte následující obsah.

user =postfixadminpassword =postfixadmin_passwordhosts =localhostdbname =postfixadminquery =SELECT maildir FROM mailbox WHERE username='%s' AND active ='1'#expansion_limit =100

Vytvořte mysql_virtual_alias_domain_mailbox_maps.cf soubor.

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

Přidejte následující obsah.

user =postfixadminpassword =postfixadmin_passwordhosts =localhostdbname =postfixadminquery =SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain ='%d' a mailbox.username =CONCAT('%u', '@', alias_domain) .active =1 AND alias_domain.active='1'

Vytvořte soubor mysql_virtual_alias_maps.cf soubor.

sudo nano /etc/postfix/sql/mysql_virtual_alias_maps.cf

Přidejte následující obsah.

user =postfixadminpassword =postfixadmin_passwordhosts =localhostdbname =postfixadminquery =SELECT goto FROM alias WHERE address='%s' AND active ='1'#expansion_limit =100

Vytvořte mysql_virtual_alias_domain_maps.cf soubor.

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf

Přidejte následující obsah.

user =postfixadminpassword =postfixadmin_passwordhosts =localhostdbname =postfixadminquery =SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain ='%d' a alias.address =CONCAT('%u', '@sget_main. alias_alias .active =1 AND alias_domain.active='1'

Vytvořte mysql_virtual_alias_domain_catchall_maps soubor.

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

Přidejte následující obsah.

# zpracovává univerzální nastavení cílové-domainuser =postfixadminpassword =postfixadmin_passwordhosts =localhostdbname =postfixadminquery =SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain ='%d' a alias.address =CONCAT._domain target_domain) AND alias.active =1 AND alias_domain.active='1'

Protože databázová hesla jsou uložena v prostém textu, měla by být čitelná pouze pro uživatele Postfix a root, což se provádí provedením následujících dvou příkazů.

sudo chmod 0640 /etc/postfix/sql/*sudo setfacl -R -m u:postfix:rx /etc/postfix/sql/

Dále musíme změnit hodnotu mydestination parametr v Postfixu. Zobrazení aktuální hodnoty:

postconf mydestination

Ukázkový výstup:

mydestination =linuxbabe.com, $myhostname, localhost.$mydomain, localhost

mydestination obsahuje seznam názvů domén, které budou přijímat e-maily doručované na místní unixové účty. V části 1 jsme přidali název vrcholové domény (jako linuxbabe.com) do mydestination . Vzhledem k tomu, že budeme používat virtuální poštovní schránku, musíme odstranit název vrcholové domény ze seznamu zadáním následujícího příkazu.

sudo postconf -e "mydestination =\$myhostname, localhost.\$mydomain, localhost"

Nyní znovu otevřete hlavní konfigurační soubor Postfixu.

sudo nano /etc/postfix/main.cf

Přidejte následující řádky na konec tohoto souboru.

virtual_mailbox_base =/var/vmailvirtual_minimum_uid =2000virtual_uid_maps =static:2000virtual_gid_maps =static:2000

První řádek definuje základní umístění souborů pošty. Zbývající 3 řádky definují, které ID uživatele a ID skupiny bude Postfix používat při doručování příchozích e-mailů do poštovní schránky. Používáme ID uživatele 2000 a ID skupiny 2000.

Uložte a zavřete soubor. Restartujte Postfix, aby se změny projevily.

sudo systemctl restart postfix

Dále musíme vytvořit uživatele s názvem vmail s ID 2000 a skupinou s ID 2000.

sudo adduser vmail --system --uid 2000 --user-group --no-create-home

Vytvořte základní umístění pošty.

sudo mkdir /var/vmail/

Vytvořte vmail jako vlastník.

sudo chown vmail:vmail /var/vmail/ -R

Potřebujeme také změnit kontext SELinuxu, aby do něj bylo možné zapisovat.

sudo chcon -t mail_spool_t /var/vmail/ -R

Krok 13:Nakonfigurujte Dovecot pro použití databáze MySQL/MariaDB

Potřebujeme také nakonfigurovat server Dovecot IMAP tak, aby se dotazoval na informace o uživatelích z databáze. Nejprve spusťte následující příkaz pro přidání podpory MySQL pro Dovecot.

instalace sudo dnf dovecot-mysql

Poté upravte 10-mail.conf soubor.

sudo nano /etc/dovecot/conf.d/10-mail.conf

V části 2 jsme použili následující mail_location . E-mailové zprávy jsou uloženy pod Maildir adresář v domovském adresáři každého uživatele.

umístění_mailu =maildir:~/Maildir

Protože nyní používáme doménu virtuální poštovní schránky, musíme povolit mail_home pro virtuální uživatele přidáním následujícího řádku do souboru, protože virtuální uživatelé nemají ve výchozím nastavení domovské adresáře.

mail_home =/var/vmail/%d/%n

Uložte a zavřete soubor. Poté upravte soubor 10-auth.conf soubor.

sudo nano /etc/dovecot/conf.d/10-auth.conf

V části 2 jsme použili následující hodnotu pro auth_username_format .

auth_username_format =%n

%n Pokud by byla daná, doména by odpadla. Protože v části 2 jsme pro uživatelské jméno každé e-mailové adresy používali místní unixový účet, musíme použít %n zahodit doménu, aby se uživatelé mohli přihlásit pomocí celé e-mailové adresy.

Nyní používáme domény virtuálních poštovních schránek, což znamená, že uživatelské jméno každé e-mailové adresy obsahuje doménovou část, takže musíme změnit auth_username_format jak následuje. %u nezruší doménu. To umožňuje uživatelům přihlásit se pomocí celé e-mailové adresy.

auth_username_format =%u

Odkomentujte následující řádek na konci souboru, aby Dovecot mohl vyhledávat informace o uživatelích z databáze.

!include auth-sql.conf.ext

Nyní pravděpodobně nechcete, aby místní uživatelé Unixu posílali e-maily bez registrace e-mailových adres v PostfixAdmin, poté zakomentujte následující řádek přidáním znaku # na začátek, takže Dovecot nebude dotazovat místní /etc/passwd nebo /etc/shadow soubor.

#!include auth-system.conf.ext

K odladění problémů s přihlášením může být užitečné přidat do tohoto souboru následující dva řádky. Chyby přihlášení by byly zaznamenány do /var/log/maillog soubor. (Jakmile se uživatelé bez problémů přihlásí, můžete zakomentovat následující dva řádky.)

auth_debug =yesauth_debug_passwords =yes

Uložte a zavřete soubor.

Vytvořte dovecot-sql.conf.ext soubor.

sudo nano /etc/dovecot/dovecot-sql.conf.ext

Zde je obsah, který byste měli mít. Nahraďte postfixadmin_password s heslem postfixadmin, které jste nastavili v kroku 4.

driver =mysqlconnect =host=localhost dbname=postfixadmin user=postfixadmin password=postfixadmin_passworddefault_pass_scheme =BLF-CRYPTpassword_query =VYBERTE uživatelské jméno JAKO uživatele, heslo Z poštovní schránky WHERE uživatelské jméno ='%u' AND active='1'SELECT mail_queirry, =2000 AS uid, 2000 AS gid FROM mailbox WHERE username ='%u' AND active='1'iterate_query =SELECT username AS user FROM mailbox

Uložte a zavřete soubor. A restartujte Dovecot.

sudo systemctl restart dovecot

Když se uživatel pokusí přihlásit, Dovecot vygeneruje hash BLF-CRYPT z hesla zadaného uživatelem a poté jej porovná s heslem uloženým v databázi.

Krok 14:Přidejte doménu a poštovní schránky v PostfixAdmin

Přihlaste se do webového rozhraní PostfixAdmin jako správce. Klikněte na Domain List a vyberte New Domain přidat doménu. Můžete si vybrat, kolik aliasů a poštovních schránek je povoleno pro tuto doménu.

Poté klikněte na Virtual List a vyberte Add Mailbox pro přidání nové e-mailové adresy pro vaši doménu.

Nyní spusťte svého desktopového e-mailového klienta, jako je Mozilla Thunderbird, a přidejte poštovní účet. Pokud Thunderbird našel konfiguraci vašeho poštovního serveru jako níže, jednoduše klikněte na Hotovo a budete moci číst a odesílat e-maily.

Pokud Thunderbird nenašel konfiguraci vašeho poštovního serveru, klikněte na Ruční konfigurace tlačítko pro zadání údajů o vašem poštovním serveru.

  • V části server příchozí pošty vyberte protokol IMAP, zadejte mail.your-domain.com jako název serveru zvolte port 143 a STARTTLS. Zvolte normal password jako metoda ověřování.
  • V odchozí části vyberte protokol SMTP, zadejte mail.your-domain.com jako název serveru zvolte port 587 a STARTTLS. Zvolte normal password jako metoda ověřování.

Nápověda :Můžete také použít port 993 se šifrováním SSL/TLS pro IMAP a port 465 se šifrováním SSL/TLS pro SMTP. Neměli byste ne použijte port 25 jako port SMTP v poštovních klientech pro odesílání odchozích e-mailů.

Nyní byste měli být schopni se připojit ke svému vlastnímu e-mailovému serveru a také odesílat a přijímat e-maily pomocí vašeho e-mailového klienta pro počítače!

Tipy pro odstraňování problémů

Obecně byste měli vždy zkontrolovat protokol pošty (/var/log/maillog ) na vašem poštovním serveru, když dojde k chybě. Následuje seznam konkrétních chyb a tipů pro odstraňování problémů.

Nelze se přihlásit z poštovních klientů

Pokud se nemůžete přihlásit k poštovnímu serveru ze stolního poštovního klienta, prohledejte svůj poštovní server a zjistěte, zda jsou porty otevřené. Všimněte si, že byste měli spustit následující příkaz z jiného počítače nebo serveru se systémem Linux. Pokud jej spustíte na svém poštovním serveru, budou porty vždy vypadat jako otevřené.

sudo nmap mail.vase-domena.com

A zkontrolujte, zda Dovecot běží.

systemctl status dovecot

Můžete také zkontrolovat protokol pošty (/var/log/maillog ), což vám může napovědět. Pokud se Dovecot nespustí, chyba nemusí být zaznamenána do /var/log/maillog soubor, můžete spustit následující příkaz a zjistit, co je špatně.

sudo journalctl -eu dovecot

Pokud v protokolu pošty uvidíte následující chybu, je pravděpodobné, že jste v .cf nenastavili správné heslo soubory pod /etc/postfix/sql/ adresář.

postfix/trivial-rewrite[28494]:varování:virtual_alias_domains:proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf:problém s vyhledáváním v tabulcepostfix/trivial-rewrite[28494]:warning:virtual_alias_domain 

Pokud v protokolu pošty vidíte následující chybu, je to proto, že jste zapomněli přidat mail_location = maildir:~/Maildir v /etc/dovecot/conf.d/10-mail.conf soubor.

open(/var/mail/[email protected]) se nezdařilo:Oprávnění odepřeno (euid=2000(vmail) egid=2000(vmail) chybí +w perm:/var/mail, nejsme ve skupině 8( mail), adresář vlastněný 0:8 mode=0775

Cloudflare DNS

As I said in part 1, if you use Cloudflare DNS service, you should not enable the CDN (proxy) feature when creating DNS A record and AAAA record for the hostname of your mail server. Cloudflare doesn’t support SMTP or IMAP proxy.

Relay Access Denied

If you see the “relay access denied ” error when trying to send emails from a mail client, it’s most likely that you use port 25 as the SMTP port in your mail client. As I said a while ago, you should use port 587 or 465 as the SMTP port in mail clients (Mozilla Thunberbird, Microsoft Outlook, etc) to submit outgoing emails. Port 25 should be used for SMTP server to SMTP server communications.

iOS Mail App

If you use the iOS Mail app to log into your mail server and encounter the following error.

You can try to fix it by enforcing SSL encryption, for both SMTP and IMAP.

Fun fact :It seems the iOS Mail app has difficulty in supporting STARTTLS on IMAP port 143, but it supports STARTTLS on the submission port 587.

Temporary Lookup Failure

If your mail server was working fine for some time, but suddenly you find the following error in the mail log,

Aug 25 20:25:24 mx postfix/trivial-rewrite[3313]:warning:virtual_alias_domains:proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf:table lookup problemAug 25 20:25:24 mx postfix/trivial-rewrite[3313]:warning:virtual_alias_domains lookup failureAug 25 20:25:24 mx postfix/submission/smtpd[3464]:NOQUEUE:reject:451 4.3.0 <[email protected]>:Temporary lookup failure; proto=ESMTPAug 25 20:25:24 mx postfix/submission/smtpd[3464]:Temporary lookup failure

It’s likely that your MariaDB/MySQL database stopped somehow. You can use the following command to check when your database server stopped.

sudo journalctl -eu mariadb

nebo

sudo journalctl -eu mysql

A common cause for this situation is that your server is out-of-memory. Check if your server has enough memory.

htop

nebo

free -m

Change User Password in PostfixAdmin

Users can log into PostfixAdmin at https://postfixadmin.example.com/users/login.php , then change their passwords.

Automatically Clean the Junk Folder and Trash Folder

To delete emails in Junk folder for all users, you can run

sudo doveadm expunge -u *@example.com mailbox Junk all

To delete emails in Trash folder for all users, run

sudo doveadm expunge -u *@example.com mailbox Trash all

I think it’s better to clean emails that have been in the Junk or Trash folder for more than 2 weeks, instead of cleaning all emails.

sudo doveadm expunge -u *@example.com mailbox Junk savedbefore 2w

Then add a cron job to automate the job.

sudo crontab -e

Add the following line to clean Junk and Trash folder every day

@daily doveadm expunge -u *@example.com mailbox Junk savedbefore 2w;doveadm expunge -u *@example.com mailbox Trash savedbefore 2w

Restricting Access to Sendmail

By default, any local user can use the sendmail binary to submit outgoing emails. Now that your mail server is using virtual mailboxes, you might want to restrict access to the sendmail binary to trusted local users only, so a malicious user can’t use it to send a large volume of emails to damage your mail server’s reputation. Upravte hlavní konfigurační soubor Postfixu.

sudo nano /etc/postfix/main.cf

Add the following line to the end of this file, so only the root and www-data user can submit emails via sendmail. You can also add other usernames.

authorized_submit_users =root,www-data

Uložte a zavřete soubor. Poté restartujte Postfix.

sudo systemctl restart postfix

Další krok

I hope this tutorial helped you install and use PostfixAdmin on CentOS 8/RHEL 8 to create virtual mailboxes. In part 4, I will show you how to set up SPF and DKIM with Postfix to improve email deliverability and in a future tutorial, I’m going to show you how to host multiple domains with PostfixAdmin.

If you want to access emails from a web browser, then I recommend Roundcube, which is a very popular and featured-rich open-source webmail client. As always, if you found this post useful,  subscribe to our free newsletter to get more tips and tricks. Opatruj se 🙂


Cent OS
  1. Nastavte poštovní server pomocí PostfixAdmin a MariaDB na CentOS 7

  2. Jak nastavit poštovní server pomocí PostfixAdmin na CentOS 7

  3. Jak vytvořit banner SSH na serveru CentOS/RHEL

  1. Jak nastavit virtuálního hostitele Nginx (bloky serveru) na CentOS 7

  2. Nainstalujte webový server Apache CentOS 6 / RHEL 6

  3. Jak nainstalovat Puppet na RHEL 8/CentOS 8

  1. Jak nainstalovat poštovní server Postfix na RHEL 8 / CentOS 8

  2. Jak nainstalovat iRedMail (mailový server) na CentOS 7 / RHEL 7

  3. Jak nainstalovat OpenLiteSpeed ​​Web Server na CentOS 8/RHEL 8