Last Updated on 20/08/2024 by administrator
Proxmox – Konfigurace Postfix email pro zasílání přes Gmail App
Proxmox – Konfigurace Postfix email pro zasílání přes Gmail App
Motivace:
Tento článek popisuje jak nakonfigurovat službu Postfix, což využívá Proxmox k odesílání emailu. Postfix je Mail Transfer Agent (MTA), který slouží k přenosu a doručování e-mailových zpráv. Postfix je oblíbený pro svou snadnou konfigurovatelnost, vysokou výkonnost a bezpečnost. Součástí toho bude nastavení dvoufaktorovou autentizaci přes Gmail a vytvoření jedinečného heslo v App Passwords.
Pozn. Tento článek byl vytvořen, jelikož jsem měl u Proxmox verze 8.1.5 problém se zasíláním email a objevila se hláška níže, za použítí postqueue -p příkaz:
45A28C0F11 2529 Mon Apr 15 03:31:47 root@pve.lan (host mx2.seznam.cz[77.75.77.42] said: 451 4.7.27 mail from does not accept emails (in reply to MAIL FROM command)) prijemce@seznam.cz
OS:
Implementace byla prakticky prováděna na open-source platformě Proxmox verze 8.1.5 (jedoucí nad Debian 12.2).
Implementace[1,2]:
1. Google – nastavení dvoufaktorové autentizace:
Postup k nastavení dvoufaktorové autentizace lze vidět v tomto článku, kde je nutné následně vygenerovat jedinečné heslo v App Passwords pro Postfix.
2. Konfigurace Postfix:
Níže uvedený příkaz nainstaluje Postfix, což je MTA (Mail Transfer Agent), který slouží k odesílání a přijímání e-mailů. Balíček libsasl2-2 obsahuje knihovnu pro Simple Authentication and Security Layer (SASL), která může být použita pro zabezpečení komunikace včetně autentizace. Balíček ca-certificates obsahující certifikáty certifikačních autorit. Je důležitý pro zajištění bezpečné komunikace přes SSL/TLS. Balíček libsasl2-modules obsahuje další moduly pro SASL.
Pozn. Všechny uvedené balíčky kromě libsasl2-modules by již měly být nainstalované na Proxmox defaultně.
apt install postfix libsasl2-2 ca-certificates libsasl2-modules
Provést zálohu souboru main.cf:
cp /etc/postfix/main.cf /etc/postfix/main.cf.zaloha
Otevřít konfigurační soubor main.cf pro Postfix:
vi /etc/postfix/main.cf
v main.cf zakomentovat řádky níže:
#mydestination = $myhostname, localhost.$mydomain, localhost #relayhost =
a zkopírovat do main.cf tyto řádky níže, současně ověřit že tyto řádky v konfiguraci main.cf neexistují:
relayhost = [smtp.gmail.com]:587 smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_security_options = noanonymous smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
vi /etc/postfix/sasl_passwd
a zkopírovat řádek níže, kde používaný emailový účet pro odesílání emailu je vaslogin@gmail.com a qcsn sxsk xmte mcas je heslo vygenerované přes App Passwords. Emailová adresa a heslo jsou oddělené dvojtečkou:
[smtp.gmail.com]:587 vaslogin@gmail.com:qcsn sxsk xmte mcas
Pro soubor sasl_passwd přidat oprávnění čtení a zápis:
chmod 600 /etc/postfix/sasl_passwd
Příkaz vytvoří ze souboru sasl_passwd databázi sasl_passwd.db (případně příkaz provede refresh DB souboru):
postmap /etc/postfix/sasl_passwd
Zkontrolování konfigurace Postfix:
postfix check
Výstup příkazu postfix check muže vypadat takto:
postfix: Postfix is using backwards-compatible default settings postfix: See http://www.postfix.org/COMPATIBILITY_README.html for details postfix: To disable backwards compatibility use "postconf compatibility_level=3.6" and "postfix reload"
Provést restart služby Postfix:
service postfix restart
Kontrola, zda služba Postfix běží:
service postfix status
Výstup příkazu service postfix status ukazuje, že služba Postfix je aktivní:
● postfix.service - Postfix Mail Transport Agent Loaded: loaded (/lib/systemd/system/postfix.service; enabled; preset: enabled) Active: active (exited) since Tue 2024-04-16 22:25:13 CEST; 4min 5s ago Docs: man:postfix(1) Process: 2018599 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 2018599 (code=exited, status=0/SUCCESS) CPU: 1ms Apr 16 22:25:13 pve systemd[1]: Starting postfix.service - Postfix Mail Transport Agent... Apr 16 22:25:13 pve systemd[1]: Finished postfix.service - Postfix Mail Transport Agent.
Zaslání testovacího emailu:
Pro zaslání odeslání jednoduchého testovacího e-mailu lze využít příkaz níže, kde řetězec echo definuje obsah zprávy a mail -s zase předmět emailové zprávy:
echo "Test mail from postfix" | mail -s "Test Postfix" prijemce@seznam.cz
V případě problému se zasláním emailu, je možné kouknout do obsahu fronty odesílaných e-mailů, které jsou momentálně uloženy na serveru a čekají na doručení:
postqueue -p
Ukázka přijetí emailové zprávy:
Příkazem echo „Test mail from postfix“ | mail -s „Test Postfix“ prijemce@seznam.cz se zašle email z nastavené emailové adresy v /etc/postfix/sasl_passwd, což byla vaslogin@gmail.com.
Nicméně samotný Proxmox zasílá email z nastaveného řetežce root@$hostname, což je v tomto případě root@pve.lan. V tomto případě se emailovému serveru na seznam.cz nelíbí, že přichází emailová zpráva od odesílatele root@pve.lan:
Proto je nutné dokonfigurovat odesílatele a v tomto případě využijeme vaslogin@gmail.com která byla nastavena v /etc/postfix/sasl_passwd
Pro nastavené odesílatele emailové adresy přejít do Datacenter > Options > Email from address:
Logy:
Při řešení troubleshootingu lze využít logovací příkaz:
journalctl -xe | grep postfix
Částečný výstup příkazu ukazuje, že testovací email byl správně odeslán:
Apr 16 23:48:33 pve postfix/pickup[2018600]: DA580C0EC7: uid=0 from=<vaslogin@gmail.com>
Apr 16 23:48:33 pve postfix/cleanup[2106854]: DA580C0EC7: message-id=<20240416214833.DA580C0EC7@pve.lan>
Apr 16 23:48:33 pve postfix/qmgr[2018601]: DA580C0EC7: from=<vaslogin@gmail.com>, size=4191, nrcpt=1 (queue active)
Apr 16 23:48:35 pve postfix/smtp[2105643]: DA580C0EC7: to=<prijemce@seznam.cz>, relay=smtp.gmail.com[108.177.127.108]:587, delay=1.5, delays=0.02/0/0.48/0.99, dsn=2.0.0, status=sent (250 2.0.0 OK 1713304115 js7-20020a17090797c700b00a51db8c559csm7333788ejc.178 - gsmtp)
Apr 16 23:48:35 pve postfix/qmgr[2018601]: DA580C0EC7: removed
Zdroj:
[1] https://easyengine.io/tutorials/linux/ubuntu-postfix-gmail-smtp/
[2] https://kifarunix.com/configure-postfix-to-use-gmail-app-passwords