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.phpSché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.confPř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 dovecotRestartujte Dovecot.
sudo systemctl restart dovecotKrok 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 roota změňte výchozí řazení z
utf8mb4_general_ci
nautf8_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 chybJe 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 rootVyberte
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. Zvoltenormal 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. Zvoltenormal 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_domainPokud 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=0775Cloudflare 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 failureIt’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 mariadbnebo
sudo journalctl -eu mysqlA common cause for this situation is that your server is out-of-memory. Check if your server has enough memory.
htopnebo
free -mAutomatically 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 allTo delete emails in Trash folder, run
sudo doveadm expunge -A mailbox Trash allI 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 2wThen add a cron job to automate the job.
sudo crontab -eAdd 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 2wTo 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 thesendmail
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.cfAdd 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-dataUložte a zavřete soubor. Poté restartujte Postfix.
sudo systemctl restart postfixDalší 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 🙂
Oprava chyby „nepodařilo se získat zámek /var/lib/dpkg/lock“ jednou provždy (Ubuntu) Jak nainstalovat LAMP Stack na Ubuntu 20.04 Server/DesktopUbuntu