Postfix je bezplatný e-mailový server původně vyvinutý jako alternativa, jednodušší a bezpečnější odesílání pošty. Tento tutoriál vám ukáže, jak nastavit postfixový poštovní server na vašem serveru Ubuntu 18.04. Postfix vám umožňuje spravovat virtuální uživatele a za tím účelem vytváříme virtuální skupinu. Budeme snadno spravovat náš poštovní server pomocí postfixadmin pro virtuální uživatele a dovecot pro příchozí e-maily.
Co musíte pochopit
Předpokladem pro příjem pošty je mít pevnou IP, DNS server běžící buď na vašem vlastním serveru nebo na poskytovateli hostingu, na kterém můžete upravovat nahrávky. Pojďme definovat některé zkratky, které budou použity v této konfiguraci:
- Postfix je Mail Transfer Agent (MTA ) slouží k odesílání a přijímání e-mailů
- Holubník je místním doručovacím agentem (LDA ), které používají server Internet Messaging Application Protocol (IMAP) a Post Office Protocol (POP3).
- SASL definováno Simple Authentication a Secure Layer, přidává autentizaci mezi uživatelem a serverem pro zabezpečení výměn.
- Postfixadmin webové rozhraní, které vám umožňuje spravovat poštovní schránky, virtuální domény a aliasy
- LEMP: webový server s Nginx a PHP pro přístup k postfixadmin a snadnou správu virtuálních uživatelů a domén, MySQL pro uložení všech informací.
V Postfixu jsou dva typy domén:
- Místní domény používá se k doručování e-mailů uživatelům systému, kteří jsou uvedeni v
/etc/passwd
soubor. - Virtuální domény které nepotřebují systémový účet v
/etc/passwd
soubor. Poskytuje způsob, jak velmi snadno spravovat tisíce poštovních účtů v systému poštovního serveru pomocí MySQL, PostgreSQL nebo LDAP pro správu uživatelských účtů.
Krok 1) Nainstalujte a nakonfigurujte Postfixadmin
Postfixadmin je webový modul, který vám umožňuje snadno manipulovat s virtuálními doménami a uživateli v databázi.
a) Stáhněte si postfixadmin
Nejprve nainstalujeme požadované balíčky
# apt install php-imap php-mbstring php7.2-imap php7.2-mbstring
Reading package lists... Done
Building dependency tree
Reading state information... Done
...
...
Normálně je postfixadmin přítomen na výchozích úložištích Ubuntu 18.04, ale pokusí se nainstalovat Apache a PostgreSQL místo Nginx a MySql. Abychom zachovali naši konfiguraci, stáhneme si aktuální nejnovější verzi 3.2 ze zdroje na projektu webu Github a uložte jej do /opt
složka
# wget -P /opt https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.2.tar.gz
--2018-06-11 21:53:14-- https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.2.tar.gz
Resolving github.com (github.com)... 192.30.255.113, 192.30.255.112
Connecting to github.com (github.com)|192.30.255.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Nyní přejděte do této složky a rozbalte ji.
# cd /opt && tar xvf postfixadmin-3.2.tar.gz
Nyní bychom jej měli přejmenovat
# mv postfixadmin-postfixadmin-3.2/ postfixadmin
Postfixadmin používá skript nazvaný setup.php
které použijeme prostřednictvím webového serveru při instalaci. V předchozí verzi postfixu (3.1 a nejstarší) je tento skript přímo v kořenové složce Postfixadmin, ale ve skutečné verzi (3.2) je obsažen v podadresáři public
složky postfixadmin. Normálně bychom měli přesunout postfixadmin do kořenové složky našeho webového serveru Nginx, ale s touto novou verzí vytvoříme pouze symbolický odkaz na veřejnou složku, která obsahuje skript, a poté jej přejmenujeme pro určité zabezpečení
# ln -s /opt/postfixadmin/public/ /var/www/html/pfa
root@li1002-235:~# ls -l /var/www/html/
total 4
-rw-r--r-- 1 root root 612 Jun 10 04:51 index.nginx-debian.html
lrwxrwxrwx 1 root root 25 Jun 12 04:01 pfa -> /opt/postfixadmin/public/
b) Vytvořte databázi postfixů
Nyní bychom se měli připojit k databázi mysql pro některé konfigurace
# mysql -u root -p
Enter password:
Poté vytvořte databázi a uživatele
mysql> CREATE DATABASE postfix;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'postfix-db-password';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
c) Nakonfigurujte postfixadmin
Nyní, když jsme nakonfigurovali databázi, měli bychom to oznámit postfixadminovi, aby věděl, kde získat informace. Chcete-li to provést, vytvořte /opt/postfixadmin/config.local.php
soubor a přidejte obsah níže
# vim /opt/postfixadmin/config.local.php
<?php
$CONF['database_type'] = 'mysqli';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfix-db-password';
$CONF['database_name'] = 'postfix';
$CONF['configured'] = true;
?>
postfixadmin vyžaduje oprávnění k podsložce s názvem templates_c
to neexistuje. Aby se předešlo některým chybám během instalace, jako je uvedeno níže,
Měli bychom jej vytvořit ručně a zadat www-data
vlastnictví pomocí příkazu chown.
# mkdir /opt/postfixadmin/templates_c && chmod 755 -R /opt/postfixadmin/templates_c
# chown -R www-data:www-data /opt/postfixadmin/templates_c
Pak to zkuste znovu, uvidíte, že to nyní funguje a zkontroluje veškerou konfiguraci, zobrazí verzi vašeho php a Ubuntu
Nyní bychom měli vytvořit heslo pro nastavení a vygenerovat jeho hash
Nyní vám umožní vytvořit účet superadmin a budete používat heslo pro nastavení které jste vytvořili. K tomu však musíte upravit /opt/postfixadmin/config.local.php
soubor za účelem přidání hodnoty vygenerovaného hashe hesla. Poté pokračujte k vytvoření účtu superadmin
Nyní uvidíte, že účet byl přidán.
Nyní, jak vidíte, můžete se přihlásit do postfixadmin pomocí účtu pomocí odkazu http://vaše-ip-nebo-doména/pfa
Pokud se tato stránka nemůže zobrazit, zkontrolujte prosím soubor protokolu chyb nginx
# tail -n 20 -f /var/log/nginx/error.log
A ujistěte se, že máte správná oprávnění na /opt/postfixadmin/templates_c
složka. Popis každého menu můžete vidět, když se přihlásíte.
d) Vytvořte virtuální domény, uživatele a alias
Nyní vytvoříme virtuální domény a poté uživatele. Doména je název domény, například mytuto.com . E-maily můžete mít ve své doméně pomocí stejného serveru. Když spustíte, nemáte žádnou doménu. Chcete-li přidat doménu, přejděte na Seznam domén -> Nová doména .
Poté zadejte informace o doméně. Můžete omezit počet aliasů a poštovních schránek. Nezapomeňte přidat záznam MX. Po dokončení výběru hodnot přidejte doménu.
Nyní, když je naše virtuální doména vytvořena, můžete vidět v seznamu domén
Nyní můžeme vytvářet naše virtuální uživatele. Chcete-li to provést, přejděte na Virtuální seznam -> Přidat poštovní schránku .
Můžeme také vytvářet aliasy. Toto jsou e-mailové adresy, které budou přesměrovávat e-maily na jiný účet. Normálně musí mít každý poštovní server e-mailovou adresu zneužití , abychom mohli například nahlásit spam z domény. Stačí tedy vytvořit zneužití aliasu z vaší domény pro vašeho uživatele, kterého jste právě vytvořili dříve. Chcete-li to provést, přejděte na Virtuální seznam -> Přidat alias .
Všechny tyto virtuální parametry můžete vytvořit na konci, ale pomůže nám to v dalším kroku konfigurace postfixu.
Krok 2) Nainstalujte a nakonfigurujte postfix
a) Nainstalujte postfix
Nyní můžeme nainstalovat balíčky postfixů.
# apt install postfix postfix-mysql sasl2-bin
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
db-util db5.3-util libmysqlclient20 ssl-cert
Suggested packages:
procmail postfix-pgsql postfix-ldap postfix-pcre postfix-lmdb
...
...
Budete muset odpovědět na dvě otázky týkající se typu pošty a názvu vašeho poštovního serveru. Nezapomeňte nahradit název hostitele a doména hodnoty s vašimi
- typ konfigurace pošty:Internetové stránky
- název systémové pošty:hostname.domain.com
Ujistěte se, že sasl běží při spuštění úpravou jeho konfiguračního souboru
# vim /etc/default/saslauthd
# Should saslauthd run automatically on startup? (default: no)
START=yes
Nyní restartujte službu
# systemctl restart saslauthd
Protože konfigurujeme poštovní server s virtuálními uživateli, potřebujeme vlastníka všech poštovních schránek, takže vytvoříme systémového uživatele, kterého budou používat všichni virtuální uživatelé pro přístup k poště na serveru. Nejprve vytvořte vlastníka skupiny a složku, ve které budou uloženy poštovní schránky.
# groupadd -g 5000 vmail && mkdir -p /var/mail/vmail
Nyní vytvořte vlastníka
# useradd -u 5000 vmail -g vmail -s /usr/sbin/nologin -d /var/mail/vmail
Ujistěte se, že jste vlastníkovi dali oprávnění k adresáři pošty, aby mohl ukládat e-maily do příslušných adresářů.
# chown -R vmail:vmail /var/mail/vmail
Pokud to neuděláte, dovecot nebude schopen vytvořit požadované složky pro ukládání e-mailů.
b) Vytvořte konfigurační soubory pro databázi
Nyní vytvořte složku, která bude obsahovat nějaké databázové soubory
# mkdir -p /etc/postfix/sql
Postfix potřebuje 03 databázové soubory, které mu umožní přístup k databázi, kterou jsme vytvořili dříve:
- Domény obsahovat seznam názvů domén hostovaných na serveru. umožní postfixu určit, zda má náš server na starosti doménu (mytuto.com) když obdrží e-mail (user@mytuto.com) na to. Pokud ano, bude to znamenat, že doména je v naší databázi.
# vim /etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfix
password = postfix-db-password
hosts = 127.0.0.1
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
Povolíme konfiguraci a automaticky ji přidáme do /etc/postfix/main.cf
soubor a znovu načtěte konfiguraci postfixu, abyste to nemuseli dělat ručně. Takže soubor bude aktualizován pokaždé, když použijete tento příkaz, o nové hodnoty.
# postconf -e virtual_mailbox_domains=mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
Nyní můžeme zkontrolovat konfiguraci. Spustíme příkaz, který provede dotaz obsažený v souboru za účelem vyhledání domény v naší databázi. Pokud doména není přítomna, musí být vrácen prvek (hledaná doména) nebo nic.
# postmap -q mytuto.com mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
mytuto.com
Jak můžete vidět, postfix je schopen načíst domény uložené v naší databázi
- Poštovní schránka pro uložení všech virtuálních e-mailových adres. Použije se také k ověření, zda poštovní schránky existují
# vim /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix-db-password
hosts = 127.0.0.1
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
Nyní aktualizujme konfigurační soubor
# postconf -e virtual_mailbox_maps=mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
Spuštěním příkazu otestujte dotaz na databázi
# postmap -q alain@mytuto.com mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
mytuto.com/alain/
- Alias obsahovat různé e-mailové aliasy.
# vim /etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfix
password = postfix-db-password
hosts = 127.0.0.1
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Nyní přidejte konfiguraci
# postconf -e virtual_alias_maps=mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf
Nyní spusťte příkaz k otestování dotazu. Je to cílový uživatel (alain@mytuto.com) která by měla být zobrazena, nikoli adresa pro zneužití. Ukazuje, že postfix může provést shodu.
# postmap -q abuse@mytuto.com mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf
alain@mytuto.com
Ujistěte se, že tyto soubory nejsou čitelné pro normální uživatele, protože hesla jsou uložena v režimu Clear.
# ls -l /etc/postfix/sql/
total 12
-rw-r--r-- 1 root root 138 Jun 13 06:53 mysql_virtual_alias_maps.cf
-rw-r--r-- 1 root root 140 Jun 13 05:18 mysql_virtual_domains_maps.cf
-rw-r--r-- 1 root root 144 Jun 13 07:04 mysql_virtual_mailbox_maps.cf
Aby mohl postfix číst tyto soubory, můžeme změnit vlastníka skupiny na postfix
# chgrp postfix /etc/postfix/sql/mysql_*.cf
# ls -l /etc/postfix/sql/
total 12
-rw-r--r-- 1 root postfix 138 Jun 13 06:53 mysql_virtual_alias_maps.cf
-rw-r--r-- 1 root postfix 140 Jun 13 05:18 mysql_virtual_domains_maps.cf
-rw-r--r-- 1 root postfix 144 Jun 13 07:04 mysql_virtual_mailbox_maps.cf
c) Nakonfigurujte postfix
Nyní ručně upravíme hlavní konfigurační soubor postfixu. Před úpravou si tedy vytvořte kopii
# cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
Nyní aktivujeme SASL, abychom vynutili autentizaci pro odesílání e-mailů a předáme ověření společnosti Dovecot. Nezapomeňte přidat řádky níže
# vim /etc/postfix/main.cf
# Allow authenticated users to send email, and use Dovecot to authenticate them. Tells Postfix to use Dovecot for authentication
smtpd_sasl_type = dovecot
## Path to the Postfix auth socket
smtpd_sasl_path = private/auth
## Tells Postfix to let people send email if they've authenticated to the server.
## Otherwise they can only send if they're logged in (SSH)
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
# Enable authentication only for those with a TLS connection.
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
# Tells Postfix who can send email: SASL-authenticated users connecting from a network specified in 'mynetworks'
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
Nyní upravíme /etc/postfix/master.cf
konfigurační soubor. Je to konfigurační soubor procesu. Povolíme zabezpečené porty SMTP přidáním nebo zrušením komentáře k řádkům níže a vytvoříme kopii dříve
# cp /etc/postfix/master.cf /etc/postfix/master.cf.bak
# vim /etc/postfix/master.cf
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
# -o smtpd_tls_auth_only=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
Nyní můžete spustit postconf -n
příkaz ke kontrole některých chyb
# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
...
...
Pokud nemáte žádné varovné zprávy, znamená to, že vaše soubory neobsahují chyby. Nyní můžete restartovat službu postfix
# systemctl restart postfix
# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
Active: active (exited) since Wed 2018-06-13 10:16:02 UTC; 27s ago
Process: 12225 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 12225 (code=exited, status=0/SUCCESS)
Krok 3) Nainstalujte a nakonfigurujte Dovecot
Nyní, když je Postfix nainstalován a nakonfigurován, musíme nainstalovat postfix pro správu protokolů pop a imap, které nám umožňují obnovit naše e-maily.
a) Instalace Dovecot
Balíčky Dovecot jsou přítomny ve výchozích úložištích Ubuntu 18.04. Nainstalujeme jej s podporou mysql. Nainstalujeme síto což je užitečné, protože automaticky umístí e-maily do odpovídajících složek. To znamená, že pro každou doménu vytvoří odpovídající složku obsahující odpovídající složku virtuálního uživatele pro ukládání jeho e-mailových souborů.
# apt install dovecot-imapd dovecot-mysql dovecot-managesieved
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
dovecot-core dovecot-sieve libexttextcat-2.0-0 libexttextcat-data
Suggested packages:
...
...
Pochopte to, pokud nechcete používat síto , pro každou doménu budete pravděpodobně muset ručně vytvořit odpovídající složky, abyste mohli ukládat její e-maily, a to není snadné, pokud máte mnoho domén.
b) Konfigurace holubníku
Konfigurace Dovecot je obsažena ve více souborech v /etc/dovecot/conf.d
. Nejprve zkontrolujte obsah /etc/dovecot/dovecot.conf
aby byly tyto řádky odkomentovány
!include_try /usr/share/dovecot/protocols.d/*.protocol
!include conf.d/*.conf
Nyní přejděte do složky obsahující konfigurační soubory
# cd /etc/dovecot/conf.d
Upravíme:
10-auth.conf
k úpravě mechanismu připojení přidáním nebo zrušením komentáře k řádkům. Dovecot standardně používá systémové uživatele, ale my používáme uživatele Mysql
# cp 10-auth.conf 10-auth.conf.bak
# vim 10-auth.conf
auth_mechanisms = plain login
#!include auth-system.conf.ext
!include auth-sql.conf.ext
auth-sql.conf.ext
soubor pro konfiguraci sql
# cp auth-sql.conf.ext auth-sql.conf.ext.bak
# vim auth-sql.conf.ext
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/vmail/%d/%n
}
- teď upravíme
/etc/dovecot/dovecot-sql.conf.ext
říci dovecotu, jak se připojit k databázi SQL
# cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.bak
# vim /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=postfix-db-password
password_query = SELECT username,domain,password FROM mailbox WHERE username='%u';
default_pass_scheme = MD5-CRYPT
- Nyní upravíme
10-mail.conf
soubor pro konfiguraci adresáře umístění pošty
# cp 10-mail.conf 10-mail.conf.bak
# vim 10-mail.conf
mail_location = maildir:/var/mail/vmail/%d/%n/Maildir
mail_privileged_group = mail
- Nyní upravíme
10-master.conf
soubor pro připojení k soketu.
# cp 10-master.conf 10-master.conf.bak
# vim 10-master.conf
service auth {
unix_listener auth-userdb {
mode = 0600
user = vmail
}
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
user = dovecot
}
- Nyní musíme nakonfigurovat LDA
15-lda.conf
soubor pro označení síta, aby se pošta automaticky organizovala do odpovídající složky
# cp 15-lda.conf 15-lda.conf.bak
# vim 15-lda.conf
protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = $mail_plugins sieve
}
Pokud chceme, aby uživatel vmail mohl spustit dovecot
, měli bychom dát povolení# chgrp vmail /etc/dovecot/dovecot.conf
Nyní můžete restartovat službu dovecot
# systemctl restart dovecot
Můžete zkontrolovat protokol pošty, zda neobsahuje nějakou chybu
# tail -n 20 -f /var/log/mail.log
c) Integrujte dovecot do postfixu
Nyní, když jsme nakonfigurovali dovecot, měli bychom označit postfix, aby pracoval s holubinkou. Upravte hlavní konfigurační soubor postfixu a přidejte řádky níže na konec souboru
# vim /etc/postfix/master.cf
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
Nyní upravte hlavní konfigurační soubor postfixu
# vim /etc/postfix/main.cf
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
Poté restartujte postfix
# systemctl restart postfix
Můžete zkontrolovat protokol pošty, zda neobsahuje nějakou chybu
# tail -n 20 -f /var/log/mail.log
Jun 14 08:10:00 myserver postfix/postfix-script[28361]: starting the Postfix mail system
Jun 14 08:10:00 myserver postfix/master[28363]: daemon started -- version 3.3.0, configuration /etc/postfix
Můžete vidět, že veškerá konfigurace je dobrá. teď musíme udělat nějaký test
Krok 4) Test poštovního serveru
Pro testy v příkazovém řádku musíme před odesláním e-mailu nainstalovat balíček mailutils
# apt install mailutils
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
guile-2.0-libs libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libntlm0 libpython2.7 libpython2.7-minimal libpython2.7-stdlib
mailutils-common
...
...
Nyní musíme odeslat nějaký e-mail a zkontrolovat, zda jsou složky odpovídající doménám a uživatelům efektivně vytvořeny. Za tímto účelem nejprve odešleme e-mail našemu aktuálnímu uživateli vytvořenému v postfixadmin během jeho konfigurace
# echo "Hello Alain" | mail -s "test mail" alain@mytuto.com
Nejprve se podívejme do protokolu pošty
# tail -n 20 -f /var/log/mail.log
Jun 14 08:17:04 myserver postfix/qmgr[28374]: 1715240BF9: from=<root@domain.com>, size=384, nrcpt=1 (queue active)
Jun 14 08:17:04 myserver dovecot: lda(alain@mytuto.com): msgid=<20180614081704.1715240BF9@domain.com>: saved mail to INBOX
Jun 14 08:17:04 myserver postfix/pipe[28406]: 1715240BF9: to=<alain@mytuto.com>, relay=dovecot, delay=0.05, delays=0.02/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)
Jun 14 08:17:04 myserver postfix/qmgr[28374]: 1715240BF9: removed
Vidíme, že pošta byla úspěšně odeslána. Nyní zkontrolujeme, zda byly vytvořeny odpovídající složky
# ls -R /var/mail/vmail/ /var/mail/vmail/: mytuto.com /var/mail/vmail/mytuto.com: alain /var/mail/vmail/mytuto.com/alain: Maildir /var/mail/vmail/mytuto.com/alain/Maildir: cur dovecot.index.cache dovecot.index.log dovecot-uidlist dovecot-uidvalidity dovecot-uidvalidity.5b222480 new tmp /var/mail/vmail/mytuto.com/alain/Maildir/cur: /var/mail/vmail/mytuto.com/alain/Maildir/new: '1528964224.M129536P28407.myserver,S=455,W=467'
/var/mail/vmail/mytuto.com/alain/Maildir/tmp:
Můžete vidět, že složky jsou automaticky přítomné. Pro lepší přehled zkusme se stromem příkazů. Nejprve jej nainstalujte
apt install tree
Nyní se podívejme na složky pošty s lepším náhledem
# tree /var/mail/vmail/
/var/mail/vmail/
└── mytuto.com
└── alain
└── Maildir
├── cur
├── dovecot.index.cache
├── dovecot.index.log
├── dovecot-uidlist
├── dovecot-uidvalidity
├── dovecot-uidvalidity.5b222480
├── new
│ └── 1528964224.M129536P28407.myserver,S=455,W=467
└── tmp
6 directories, 6 files
Nyní můžete dokonale vidět. Můžeme udělat další test vytvořením nové virtuální domény a uživatele na postfixadmin. Vytvořme virtuální doménu example.com
a virtuální uživatel francois@example.com
Nyní pošleme e-mail novému virtuálnímu uživateli
# echo "Hello Francois" | mail -s "test config" francois@example.com
Nyní zkontrolujte protokol pošty
# tail -n 20 -f /var/log/mail.log
Jun 14 08:35:10 myserver postfix/qmgr[28374]: CE43F40C5E: from=<root@domain.com>, size=393, nrcpt=1 (queue active)
Jun 14 08:35:10 myserver dovecot: lda(francois@example.com): msgid=<20180614083510.CE43F40C5E@domain.com>: saved mail to INBOX
Jun 14 08:35:10 myserver postfix/pipe[28481]: CE43F40C5E: to=<francois@example.com>, relay=dovecot, delay=0.06, delays=0.02/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)
Jun 14 08:35:10 myserver postfix/qmgr[28374]: CE43F40C5E: removed
Nyní ověřte strom složek
# tree /var/mail/vmail/
/var/mail/vmail/
├── example.com
│ └── francois
│ └── Maildir
│ ├── cur
│ ├── dovecot.index.cache
│ ├── dovecot.index.log
│ ├── dovecot-uidlist
│ ├── dovecot-uidvalidity
│ ├── dovecot-uidvalidity.5b2228be
│ ├── new
│ │ └── 1528965310.M888145P28482.myserver,S=468,W=480
│ └── tmp
└── mytuto.com
└── alain
└── Maildir
├── cur
├── dovecot.index.cache
├── dovecot.index.log
├── dovecot-uidlist
├── dovecot-uidvalidity
├── dovecot-uidvalidity.5b222480
├── new
│ └── 1528964224.M129536P28407.myserver,S=455,W=467
└── tmp
Můžete vidět, že máme dva podadresáře s doménami mytuto.com a example.com což je soubor pro každého virtuálního uživatele z různých domén. Nyní udělejme poslední test, uživatelé virtuálů si budou vyměňovat e-maily
# echo "Hello Francois, it's Alain" | mail -s "Subject" -aFrom:alain\<alain@mytuto.com\> francois@example.com
Zkontrolujte protokol pošty
# tail -n 20 -f /var/log/mail.log
Jun 14 23:15:01 myserver postfix/pickup[28373]: 8558240BDA: uid=0 from=<alain@mytuto.com>
Jun 14 23:15:01 myserver postfix/cleanup[28595]: 8558240BDA: message-id=<20180614084801.8558240BDA@domain.com>
Jun 14 23:15:01 myserver postfix/qmgr[28374]: 8558240BDA: from=<alain@mytuto.com>, size=398, nrcpt=1 (queue active)
Jun 14 23:15:01 myserver dovecot: lda(francois@example.com): msgid=<20180614084801.8558240BDA@domain.com>: saved mail to INBOX
Jun 14 23:15:01 myserver postfix/pipe[28597]: 8558240BDA: to=<francois@example.com>, relay=dovecot, delay=0.05, delays=0.02/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)
Jun 14 23:15:01 myserver postfix/qmgr[28374]: 8558240BDA: removed
Nyní vidíme složku pošty
# tree /var/mail/vmail/
/var/mail/vmail/
├── example.com
│ └── francois
│ └── Maildir
│ ├── cur
│ ├── dovecot.index.cache
│ ├── dovecot.index.log
│ ├── dovecot-uidlist
│ ├── dovecot-uidvalidity
│ ├── dovecot-uidvalidity.5b2228be
│ ├── new
│ │ ├── 1528965310.M888145P28482.myserver,S=468,W=480
│ │ └── 1528966081.M582572P28598.myserver,S=455,W=467
...
...
můžete vidět, že složka new nyní obsahuje dva soubory. Můžeme otevřít soubor obsahující poštu
# cat /var/mail/vmail/example.com/francois/Maildir/new/1528966081.M582572P28598.hostname\,S\=455\,W\=467
Return-Path: <alain@mytuto.com>
Delivered-To: francois@example.com
Received: by myserver.domain.com (Postfix, from userid 0)
id 8558240BDA; Thu, 14 Jun 2018 23:15:01 +0000 (UTC)
Subject: Subject
From: alain<alain@mytuto.com>
To: <francois@example.com>
X-Mailer: mail (GNU Mailutils 3.4)
Message-Id: <20180614084801.8558240BDA@myserver.domain.com>
Date: Thu, 14 Jun 2018 23:15:01 +0000 (UTC)
Hello Francois, it's Alain
Můžete vidět obsah, který ukazuje, že to také funguje.
Závěr
Víte, jak nakonfigurovat plně funkční poštovní systém s Postfix, Dovecot a Postfixadmin s Nginx. Nejdůležitější je dát správné povolení k tomu, abyste nečelili problémům. Měli byste si všimnout, že místo LDA můžete použít dovecot s jinými protokoly. Příště si ukážeme, jak nainstalovat RoundCube, aby uživatelé virtuálů měli k dispozici webové rozhraní pro snadné čtení jejich e-mailů a integrujeme PhpMyAdmin pro snadnou manipulaci s databází. Neváhejte a pošlete nám své komentáře pro vylepšení tohoto návodu.
Přečtěte si také:
- Jak nastavit poštovní server Postfix na Ubuntu 16.04 (Dovecot - MySQL)
- How to Configure Postfix with Webmail on Ubuntu 18.04
- How to Setup Greylisting Service on Postfix Mail Server
- How to Setup Postfix Mail Server with DKIM
- How to Setup Mail Server Using Postfix, MariaDB, Dovecot and Roundcube