Linux E X P R E S

Facebook

Správa linuxového serveru: Uživatel a poštovní schránka

debain_notext.png

Po zprovoznění poštovního serveru určitě budete chtít mít možnost došlou poštu pohodlně vybírat, stejně jako poštu odesílat. V tomto dílu se dozvíte, jak toho docílit.


Pro odesílání pošty slouží protokol SMTP, ovšem Postfix nastavený podle dosavadních instrukcí, které jste nalezli v tomto seriálu, vám umožní odesílat poštu, pouze jste-li přihlášeni na server (leda byste si do mynetworks přidali všechny externí počítače, ze kterých odesíláte poštu, což by však bylo krajně nepohodlné).

Za tímto účelem by bylo dobré implementovat SMTP autentifikaci, v rámci které se budete moci odkudkoliv k serveru přihlásit a jako přihlášený uživatel odeslat poštu. Jelikož posílat jméno a heslo přes internet v textové podobě je z bezpečnostního hlediska velkou chybou, měli byste také implementovat TLS.

Výběr pošty lze zrealizovat dvěma způsoby: prostřednictvím protokolů POP3 nebo IMAP4. Serverů zajišťujících POP3 a IMAP4 přístup k poštovním schránkám je více, já se zaměřím na Dovecot.

Webová rozhraní

Kromě výše uvedených metod ještě přicházejí v úvahu webová rozhraní. Přímo v distribuci Debianu naleznete jednodušší Squirrelmail a komplexnější a „hezčí“ Roundcube. Ta budou představena a zprovozněna v některém z dalších dílů.

Odesílání pošty, SMTP AUTH a TLS

Autentifikaci neprovádí samotný Postfix, nýbrž démon saslauthd. Ten nainstalujete tímto způsobem:

aptitude install sasl2-bin

Následně upravte soubor s výchozími parametry démona saslauthd:

vim /etc/default/saslauthd

Řekněte startovacím skriptům, aby při startu systému rozběhli i saslauthd (ve výchozím stavu po instalaci saslauthd nenajede):

START=yes

Jelikož Postfix sám běží v chrootu, je nutné přemístit pojmenovanou rouru, přes kterou se Postfix a saslauthd propojují, což provedete úpravou proměnné OPTIONS na konci konfiguračního souboru:

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

Zbývá nastavit Postfix jako takový. Ve výchozím stavu by TLS měl již podporovat, pokud ne, doplňte do main.cf následující řádky:

smtpd_tls_cert_file=/cesta/k/ssl/certifikatu.pem
smtpd_tls_key_file=/cesta/k/soukromemu/klici.key
smtpd_use_tls=yes 
smtpd_tls_auth_only = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache 
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache 

K šifrovanému spojení je pochopitelně třeba certifikát. Výchozí automaticky vygenerovaný certifikát je podepsaný sám sebou, což nemusí být z hlediska bezpečnosti úplně nejvhodnější (vaši uživatelé nemají jak si ověřit, zda je daný certifikát skutečně váš a ne podstrčený nějakou třetí osobou v rámci man-in-the-middle útoku). Máte-li certifikát k doméně poštovního serveru podepsaný nějakou známou certifikační autoritou, bývá dobré jej použít místo něj (v takovém případě upravte smtpd_tls_cert_file a smtpd_tls_key_file). Připomínám, že existují certifikační autority, kde můžete získat certifikát zdarma (např. CACert, StartSSL).

TLS jako takové zapíná volba smtpd_use_tls, přičemž vynucení autentifikace pouze přes TLS řídí volba smtpd_tls_auth_only.

Kromě řádků výše je třeba zprovoznit i SASL autentifikaci. Přidejte tedy do main.cf následující řádky:

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = no
smtpd_sasl_authenticated_header = yes

Autentifikace pomocí SASL se zapíná proměnnou smtpd_sasl_auth_enable. Bývá dobré vypnout anonymní autentifikaci, tedy nastavit proměnnou smtpd_sasl_security_options na hodnotu noanonymous. Ne všichni klienti podporují aktuální verzi příkazu AUTH, jako např. MS Outlook Express 4 či Exchange 5. Chcete-li zajistit kompatibilitu vašeho serveru i s takovými klienty, nastavte broken_sasl_auth_clients na hodnotu yes. A konečně poslední proměnná (smtpd_sasl_authenticated_header) řídí, zda v hlavičkách e-mailu bude zanesena informace o tom, který autentifikovaný uživatel danou zprávu zaslal. Pro lepší názornost uvádím příklad takové hlavičky se znázorněním příslušného řádku:

Received: from localhost.localdomain (unknown [1.2.3.4])
        (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits))
        (No client certificate requested)
        (Authenticated sender: michal)
        by server.example.net (Postfix) with ESMTPSA id 2A0D62970025
        for <michal@server_example_net>; Thu, 31 May 2012 22:43:24 +0200 (CEST)

Výše uvedené nastavení řeklo Postfixu, aby podporoval TLS a SASL autentifikaci. Vy ale chcete uživatelům autentifikovaným přes SASL umožnit odesílat poštu. Za tímto účelem je ještě třeba upravit proměnnou smtpd_recipient_restrictions (viz minulý díl seriálu, kde byla tato problematika podrobně popsána). Na správné místo je třeba přidat permit_sasl_authenticated, obvykle za permit_mynetworks:

smtpd_recipient_restrictions =
   reject_unauth_pipelining,
   reject_non_fqdn_recipient,
   reject_unknown_recipient_domain,
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_invalid_hostname,
   reject_unauth_destination,
   permit

Dodám, že výše uvedené nastavení smtpd_recipient_restrictions může být pro některé použití až příliš restriktivní, berte jej tedy pouze jako příklad a ne jako vzor, který je třeba následovat.

Zbývají dva poslední kroky. Nejprve je třeba vytvořit soubor /etc/postfix/sasl/smtpd.conf a zapsat do něj následující řádek:

pwcheck_method: saslauthd

Druhým krokem je přidání uživatele „postfix“ do skupiny „sasl“, čímž umožníte Postfixu komunikovat se saslauthd:

gpasswd -a postfix sasl

Poté restartujte saslauthd a Postfix:

service saslauthd restart
service postfix restart

Nyní můžete vyzkoušet nakonfigurovat poštovního klienta k odesílání pošty přes váš server. Nezapomeňte v jeho nastavení povolit TLS a SMTP autentifikaci.

Čtení pošty, POP3, IMAP4 a Dovecot

Dovecot podporuje obě varianty obou protokolů pro přístup k poště, tedy POP3 a jeho SSL variantu POP3S, dále IMAP4 a jeho SSL variantu IMAPS. Umí samozřejmě podporovat i TLS, tedy šifrování na transportní vrstvě. Záleží jen na vás, které varianty zvolíte. Chcete-li zvolit všechny, upravte konfigurační soubor /etc/dovecot/dovecot.conf a upravte řádku s protokoly, takto:

protocols = imap imaps pop3 pop3s

Používáte-li SSL varianty protokolů nebo chcete-li použít TLS, je třeba opět provést patřičné nastavení:

ssl = yes
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
disable_plaintext_auth = yes 
ssl = required

Většina voleb je zde asi jasná. disable_plaintext_auth zakáže plaintextovou autentifikaci a ssl = required zajistí, že bude SSL/TLS vyžadováno i pro neplaintextovou autentifikaci.

Aby Dovecot mohl přistupovat k vaší poště, je třeba mu říci, kde ji má hledat. k tomu slouží proměnná mail_location, která má poměrně komplexní syntax a která je dobře popsána přímo v konfiguračním souboru. Používáte-li výchozí nastavení, tj. schránky typu MBOX ve /var/mail/uzivatel, nastavte mail_location takto:

mail_location = mbox:~/mail:INBOX=/var/mail/%u

Pro to nejzákladnější nastavení by tyto volby měly stačit. Restartujte Dovecot a můžete začít testovat pomocí poštovního klienta:

service dovecot restart

Pro jednotlivé protokoly lze specifikovat, na kterých IP adresách a portech má démon naslouchat, viz následující příklad:

protocol imap {
   listen = 127.0.0.1:143
   ssl_listen = *:993
}

Hvězdička značí všechna rozhraní. Tento příklad by zajistil, že nešifrovaný IMAP je přístupný pouze lokálně, zatímco IMAPS je dostupný na všech síťových rozhraních serveru. Toto je samozřejmě pouze ilustrační příklad, pro zakázání nešifrované autentifikace tento postup není třeba – vhodnější je zakázat plaintextovou autentifikaci (viz výše).

Podobným způsobem je také možné každé službě přiřadit jiný SSL certifikát – stačí použít příslušné volby (ssl_cert_file a ssl_key_file) taktéž uvnitř sekce protocol. Možnosti konfigurace Dovecotu jsou velmi bohaté, proto doporučuji se podívat do manuálových stránek nebo na wiki Dovecotu.

Diskuze (0) Nahoru