GNU/Linux >> Znalost Linux >  >> Ubuntu

Část 3:PostfixAdmin – Vytváření virtuálních poštovních schránek na poštovním serveru Ubuntu 20.04

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

U virtuálních poštovních schránek 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 je lepší to udělat ve webové poště Roundcube)
  • 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.
  • příkazový klient 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

Než budete pokračovat ve čtení tohoto článku, musíte se řídit částí 1 a částí 2 této série tutoriálů. Pokud jste postupovali podle výukových programů pro poštovní servery na jiných webech, doporučuji vyčistit vaše konfigurace (sudo apt purge postfix dovecot-core ) a začněte 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

PostfixAdmin je napsán v PHP a vyžaduje databázi (MySQL/MariaDB, PostgreSQL nebo SQLite). Tento článek bude používat databázi MariaDB, která je náhradou 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. Zadejte následující příkaz pro instalaci MariaDB na Ubuntu 20.04.

sudo apt install mariadb-server mariadb-client

Po instalaci by se měl server MariaDB automaticky spustit. Použijte systemctl zkontrolovat jeho stav.

systemctl status mariadb

Výstup:

● mariadb.service – databázový server MariaDB 10.3.22 Načteno:načteno (/lib/systemd/system/mariadb.service; povoleno; přednastaveno dodavatele:povoleno) Aktivní:aktivní (běží) od pá 2020-04-10 14:19:16 UTC; Před 18s Dokumenty:man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Hlavní PID:9161 (mysqld) Stav:„Teď se berou vaše požadavky SQL...“ Úkoly:31 (limit :9451) Paměť:64,7M CGroup:/system.slice/mariadb.service └─9161 /usr/sbin/mysqld

Pokud neběží, spusťte jej tímto příkazem:

sudo systemctl start mariadb

Chcete-li povolit automatické spouštění MariaDB při spouštění, spusťte

sudo systemctl povolit mariadb

Nyní spusťte poinstalační 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 Y je velké, což znamená, že se jedná o výchozí odpověď. )

Krok 2:Nainstalujte PostfixAdmin na server Ubuntu 20.04

Přihlaste se na svůj poštovní server. Protože někteří čtenáři používají server MariaDB, zatímco jiní používají MySQL, což vše komplikuje, proto před instalací PostfixAdmin nainstalujeme dbconfig-no-thanks balíček, který zabrání postfixadmin balíček od spuštění průvodce konfigurací databáze.

sudo apt install dbconfig-no-thanks

Poté nainstalujte PostfixAdmin z výchozího úložiště softwaru Ubuntu.

sudo apt install postfixadmin

Poznámka :Pokud jste již dříve nainstalovali mysql-server na Ubuntu instalace PostfixAdmin pravděpodobně odstraní mysql-server balíček z vašeho systému. Můžete jej znovu nainstalovat spuštěním následujícího příkazu.

sudo apt install mysql-server

Nyní musíme odstranit dbconfig-no-thanks balíček.

sudo apt odstranit dbconfig-no-thanks

Poté spusťte průvodce konfigurací databáze pro PostfixAdmin.

sudo dpkg-reconfigure postfixadmin

Během instalace budete dotázáni, zda chcete přeinstalovat databázi pro PostfixAdmin. To jednoduše znamená vytvoření databáze s názvem postfixadmin , neodstraní vaše stávající databáze. Stisknutím klávesy Tab vyberte Ano .

Poté vyberte výchozí typ databáze:mysql , pokud používáte MySQL nebo MariaDB.

Dále zvolte výchozí metodu připojení:Unix socket .

Poté vyberte výchozí ověřovací plugin pro MySQL/MariaDB.

Stisknutím klávesy Enter vyberte výchozí název databáze pro PostfixAdmin.

Stisknutím klávesy Enter vyberte výchozí uživatelské jméno databáze pro PostfixAdmin.

Poté musíte tomuto uživateli nastavit heslo. Pamatujte, že heslo by nemělo obsahovat # znak, nebo se možná nebudete moci přihlásit později.


Nakonec vyberte výchozího správce databáze.

Po instalaci PostfixAdmin se můžete přihlásit ke konzoli MySQL/MariaDB pomocí následujícího příkazu. Budete muset zadat heslo pro postfixadmin uživatel.

mysql -u postfixadmin -p

A můžete zkontrolovat, k jakým databázím má uživatel oprávnění k přístupu pomocí následujícího příkazu.

ZOBRAZIT DATABÁZE;

Výstup:

+---------------------+| Databáze |+---------------------+| informační_schéma || postfixadmin |+--------------------+2 řádky v sadě (0,002 s)

Ve výchozím nastavení postfixadmin databáze neobsahuje žádné tabulky. Z konzole MySQL/MariaDB se můžete odhlásit pomocí následujícího příkazu.

KONEC;

Instalace také vytvoří dva konfigurační soubory:/etc/dbconfig-common/postfixadmin.conf a /etc/postfixadmin/dbconfig.inc.php , oba obsahují nastavení přístupu k databázi, včetně uživatelského jména a hesla k databázi. Potřebujeme změnit typ databáze z mysql na mysqli v obou souborech.

sudo nano /etc/dbconfig-common/postfixadmin.conf

Změnit

dbc_dbtype='mysql'

do

dbc_dbtype='mysqli'

Poté upravte druhý soubor.

sudo nano /etc/postfixadmin/dbconfig.inc.php

Změnit

$dbtype='mysql';

do

$dbtype='mysqli';

Webové soubory se instalují pod /usr/share/postfixadmin/ adresář, který vlastní root. PostfixAdmin vyžaduje templates_c adresář, tak jej vytvořte.

sudo mkdir /usr/share/postfixadmin/templates_c

Musíme zadat www-data uživatelská oprávnění ke čtení, zápisu a spouštění v tomto adresáři pomocí následujícího příkazu.

sudo setfacl -R -m u:www-data:rwx /usr/share/postfixadmin/templates_c/

Pokud váš systém nemůže najít setfacl musíte nainstalovat acl balíček.

sudo apt install acl

Krok 3: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/apache2/sites-available/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 /usr/share/postfixadmin/public ErrorLog ${APACHE_LOG_DIR}/postfixadmin_error.log CustomLog ${APACHE_LOG_DIR}/postfixadmin_acverrectory.log combinations   Možnosti FollowSymLinks MultiViews AllowOverride All Order povolit, zakázat povolit ze všech 

Uložte a zavřete soubor. Poté povolte tohoto virtuálního hostitele pomocí:

sudo a2ensite postfixadmin.conf

Znovu načtěte Apache, aby se změny projevily.

sudo systemctl reload apache2

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/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/php7.4-fpm.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 4:Nainstalujte požadované a doporučené moduly PHP

Spuštěním následujícího příkazu nainstalujte moduly PHP požadované nebo doporučené PostfixAdminem.

instalace sudo apt php7.4-fpm php7.4-imap php7.4-mbstring php7.4-mysql php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4- bz2 php7.4-intl php7.4-gmp

Poté restartujte Apache. (Pokud používáte Nginx, nemusíte Nginx restartovat.)

sudo systemctl restart apache2

Krok 5:Povolení HTTPS

Pro šifrování HTTP provozu můžeme povolit HTTPS instalací bezplatného TLS certifikátu vydaného od Let’s Encrypt. Spuštěním následujícího příkazu nainstalujte klienta Let’s Encrypt (certbot) na server Ubuntu 20.04.

sudo apt install certbot

Pokud používáte Apache, nainstalujte si plugin Certbot Apache.

sudo apt install python3-certbot-apache

A spusťte tento příkaz, abyste získali a nainstalovali certifikát 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, musíte si také nainstalovat plugin Certbot Nginx.

sudo apt install python3-certbot-nginx

Dále spusťte následující příkaz pro 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

  • --nginx :Použijte plugin nginx.
  • --apache :Použijte plugin Apache.
  • --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.

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

Krok 6:Použijte schéma silného hesla v PostfixAdmin a Dovecot

PostfixAdmin a Dovecot standardně používají MD5-CRYPT, což je slabé heslo. Dostupná schémata hesel v Dovecot můžete vypsat pomocí následujícího příkazu.

sudo doveadm pw -l

Ukázkový výstup:

SHA1 SSHA512 BLF-CRYPT PLAIN HMAC-MD5 OTP SHA512 SHA RPA DES-CRYPT CRYPT SSHA MD5-CRYPT SKEY PLAIN-MD4 PLAIN-MD5 SCRAM-SHA-1 LANMAN SHA512-CRYPT CLEAR CLEARGON2TEXT CLEAR CLEARGON2TEXT> SSHA256 NTLM MD5 PBKDF2 SHA256 CRAM-MD5 PLAIN-TRUNC SHA256-CRYPT SMD5 DIGEST-MD5 LDAP-MD5

Argon2 je poměrně silné heslo. Abychom jej mohli používat, musíme upravit konfigurační soubor PostfixAdmin, který je ve výchozím nastavení /usr/share/postfixadmin/config.inc.php , ale můžeme vytvořit samostatný soubor (config.local.php ), abychom uložili naše úpravy, takže nebudou přepsány, když bude v budoucnu nainstalována nová verze PostfixAdmin.

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

Chcete-li použít schéma hesla Argon2, přidejte do souboru následující řádky.

 

Uložte a zavřete soubor. Můžeme také vytvořit symbolický odkaz v /etc/postfixadmin/ adresář, pro případ, že PostfixAdmin nemůže soubor najít.

sudo ln -s /usr/share/postfixadmin/config.local.php /etc/postfixadmin/config.local.php

Schéma hesla pro Dovecot nakonfigurujeme v kroku 11.

Krok 7: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.

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

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

sudo gpasswd -a www-data dovecot

Restartujte Dovecot.

sudo systemctl restart dovecot

Krok 8: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 zkontroluje, zda jsou nainstalovány všechny závislosti a vytvoří databázové tabulky.

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,

sudo mysql -u root

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. Jakmile jsou všechny požadavky splněny, můžete vytvořit heslo pro nastavení pro PostfixAdmin.

Po vytvoření hash hesla musíte otevřít /usr/share/postfixadmin/config.local.php a přidejte hash hesla pro nastavení na konec souboru, jak je uvedeno níže. Samozřejmě musíte použít vlastní hash hesla.

Dále vytvořte úč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.

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 www-data uživatel nemá oprávnění ke čtení certifikátu Let’s Encrypt TLS. Chcete-li to opravit, spusťte následující příkaz k udělení oprávnění.

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

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

Krok 9:Kontrola tabulek v databázi

Proces nastavení PostfixAdmin naplní postfixadmin databáze s některými výchozími tabulkami. Je pro nás užitečné znát názvy a strukturu tabulek. Přihlaste se do konzole MySQL/MariaDB.

sudo mysql -u root

Vyberte postfixadmin databáze.

POUŽÍVEJTE postfixadmin;

Seznam všech tabulek v této databázi.

ZOBRAZIT TABULKY;

Výstup:

+------------------------+| Tables_in_postfixadmin |+------------------------+| admin || alias || alias_doména || konfigurace || doména || doména_admins || fetchmail || log || poštovní schránka || kvóta || kvóta2 || dovolená || holiday_notification |+------------------------+13 řádků v sadě (0,001 s)

3 nejdůležitější tabulky jsou:

  • domain :obsahuje informace o doménách, které používají váš poštovní server k odesílání a přijímání e-mailů.
  • mailbox :obsahuje informace o každé e-mailové adrese, včetně hashovaného hesla a umístění souborů pošty.
  • alias :obsahuje alias každé e-mailové adresy.

V případě zájmu si můžete zkontrolovat, jaké sloupce jednotlivé tabulky obsahují. Například následující příkaz nám ukáže sloupce v domain tabulka.

DESCRIBE doména;

Výstup:

+-------------+-------------+------+-----+---- -----------------+-------+| Pole | Typ | Null | Klíč | Výchozí | Extra |+-------------+--------------+------+-----+----- -----------------+-------+| doména | varchar(255) | NE | PRI | NULL | || popis | varchar(255) | NE | | NULL | || aliasy | int(10) | NE | | 0 | || poštovní schránky | int(10) | NE | | 0 | || maxkvóta | bigint(20) | NE | | 0 | || kvóta | bigint(20) | NE | | 0 | || doprava | varchar(255) | NE | | NULL | || backupmx | tinyint(1) | NE | | 0 | || vytvořeno | datum a čas | NE | | 2000-01-01 00:00:00 | || upraveno | datum a čas | NE | | 2000-01-01 00:00:00 | || aktivní | tinyint(1) | NE | | 1 | |+-------------+--------------+------+-----+------ ----------------+-------+

Odhlaste se z konzoly MySQL/MariaDB.

KONEC;

Krok 10: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.

sudo apt install 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.

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 password s heslem postfixadmin, které jste nastavili v kroku 2.

user =postfixadminpassword =passwordhosts =localhostdbname =postfixadminquery =VYBRAT doménu Z domény WHERE doména='%s' AND active ='1'#query =VYBRAT doménu Z domény WHERE doména='%s'#volitelný dotaz, který se má použít, když předávání pro zálohování MX#query =VYBERTE doménu FROM domain 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 =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 =passwordhosts =localhostdbname =postfixadminquery =SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain ='%d' a mailbox.username =CONCAT('%u', '@', alias_domain) mailbox.target_ .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 =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 =passwordhosts =localhostdbname =postfixadminquery =SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain ='%d' a alias.address =CONCAT('%u', '@', alias_domain) AND targetlia .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í uživatele cílové-domény =postfixadminpassword =passwordhosts =localhostdbname =postfixadminquery =SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain ='%d' a alias.address =CONCAT('@', alias_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 =$myhostname, linuxbabe.com, 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 --group --uid 2000 --disabled-login --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

Krok 11: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.

sudo apt install 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 by zahodila doménu, pokud by byla zadána. 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 zrušit 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 tohoto souboru, aby Dovecot mohl vyhledávat informace o uživatelích z databáze MySQL/MariaDB.

!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 přihlášeny do /var/log/mail.log 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.

Upravte dovecot-sql.conf.ext soubor.

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

Zde je obsah, který byste měli mít v tomto souboru. Ve výchozím nastavení jsou všechny řádky v tomto souboru zakomentovány, takže je můžete jednoduše zkopírovat a vložit na konec. Nahraďte password s heslem postfixadmin, které jste nastavili v kroku 2.

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

Restartujte Dovecot.

sudo systemctl restart dovecot

Když se uživatel pokusí přihlásit, Dovecot použije algoritmus Argon2 k vygenerování hash hesla z hesla zadaného uživatelem a poté ho porovná s heslem uloženým v databázi.

Krok 12: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.

Dále můžete otevřít svého desktopového e-mailového klienta, jako je Mozilla Thunderbird, a přidat poštovní účet.

  • 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 stolní počítače! Všimněte si, že k přihlášení nyní nemůžete použít místní unixové účty. Musíte se přihlásit pomocí virtuálního uživatele vytvořeného z webového rozhraní PostfixAdmin.

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

Obecně platí, že byste měli vždy zkontrolovat protokol pošty (/var/log/mail.log ) 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/mail.log ), což vám může napovědět. Pokud se Dovecot nespustí, chyba nemusí být zaznamenána do /var/log/mail.log 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

Jak jsem řekl v části 1, pokud používáte službu Cloudflare DNS, neměli byste povolit funkci CDN (proxy) při vytváření záznamu DNS A a záznamu AAAA pro název hostitele vašeho poštovního serveru. Cloudflare nepodporuje SMTP ani IMAP proxy.

Přístup k přenosu odepřen

Pokud vidíte „relay access denied ” při pokusu o odeslání e-mailů z poštovního klienta, je velmi pravděpodobné, že jako port SMTP ve svém poštovním klientovi používáte port 25. Jak jsem před chvílí řekl, měli byste použít port 587 nebo 465 jako port SMTP v poštovních klientech (Mozilla Thunberbird, Microsoft Outlook atd.) pro odesílání odchozích e-mailů. Port 25 by měl být použit pro komunikaci mezi serverem SMTP.

aplikace Mail pro iOS

Pokud používáte aplikaci iOS Mail k přihlášení k poštovnímu serveru a narazíte na následující chybu.

Můžete to zkusit opravit vynucením šifrování SSL pro SMTP i IMAP.

Zábavný fakt :Zdá se, že aplikace iOS Mail má potíže s podporou STARTTLS na portu IMAP 143, ale podporuje STARTTLS na portu pro odesílání 587.

Dočasné selhání vyhledávání

Pokud váš poštovní server nějakou dobu fungoval správně, ale najednou najdete v protokolu pošty následující chybu,

Aug 25 20:25:24 mx postfix/trivial-rewrite[3313]:varování:virtual_alias_domains:proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf:problém s vyhledáváním v tabulce 25. srpna:post 240:2 /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

Automatically Clean the Junk Folder and Trash Folder

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

sudo doveadm expunge -A mailbox Junk all

To delete emails in Trash folder, run

sudo doveadm expunge -A 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 -A 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 -A mailbox Junk savedbefore 2w;doveadm expunge -A mailbox Trash savedbefore 2w

To receive report when a Cron job produces an error, you can add the following line above all Cron jobs.

MAILTO="[email protected]"

Uložte a zavřete soubor. A máte hotovo.

Change User Password in PostfixAdmin

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

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 Ubuntu 20.04 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 🙂


Ubuntu
  1. Jak nainstalovat DKIM na server Ubuntu

  2. Nainstalujte webový server Apache na Ubuntu 12.10

  3. Jak nainstalovat poštovní server s PostfixAdmin na Ubuntu 20.04

  1. Jak nastavit Zimbra Mail Server na Ubuntu 16

  2. Základní Ubuntu FTP server?

  3. Nastavte poštovní server pomocí PostfixAdmin a MariaDB na CentOS 7

  1. Jak vytvořit server úložiště Ubuntu

  2. Nastavte poštovní server pomocí PostfixAdmin

  3. Jak vytvořit virtuální prostředí Python na Ubuntu 18.04