Poštovní server

Nenáročná náhrada Postfix

Pokud potřebujeme poslat pouze jednou za čas pár logů, nemusíme nastavovat Postfix, ale stačí využít sendEmail.

sendemail

Předpoklady

  • nastavený DNS server podle návodu na hybridní DNS server.
  • emaily virtuálních uživatelů se budou ukládat do /var/mail/virtual/<doména>/<jméno_uživatele>

Použitý SW

Postfix - SMTP

Dovecot - POP3 / IMAP

Vytvářené soubory

  • /etc/postfix/main.cf
  • /etc/postfix/vmailbox
  • /etc/postfix/virtual
  • /etc/dovecot/dovecot.conf
  • /etc/dovecot/passwd

Nastavení SMTP serveru - Postfix

Soubor s nastavením programu Postfix najdeme v /etc/postfix/main.cf. Pro základní použití jej upravíme následovně.

# Úplné jméno našeho serveru
myhostname = mail.mydomain.com
# Doména, ze které bude přicházet lokální pošta, pokud nebyla specifikována adresa odesílatele. Generujese se automaticky z myhostname
myorigin = $mydomain
biff = no
delay_warning_time = 4h
# Definice síťových zařízení (nemusí být)
inet_interfaces = all
# Specifikace naší sítě
mynetworks = 127.0.0.0/8, 192.168.1.0/24, [::1]/128
# mynetworks_style = class
# mynetworks_style = subnet
# mynetworks = $config_directory/mynetworks
# mynetworks = hash:/etc/postfix/mynetworks
smtpd_client_restrictions =
  permit_mynetworks,
#  check_sender_access hash:/etc/postfix/access,
  permit
smtpd_sender_restrictions =
  permit_mynetworks,
  reject_non_fqdn_sender,
  reject_unknown_sender_domain,
#  check_sender_access hash:/etc/postfix/access,
  permit
smtpd_recipient_restrictions =
  permit_mynetworks,
  reject_non_fqdn_recipient,
  reject_unknown_recipient_domain,
#  check_recipient_access hash:/etc/postfix/access,
  reject_unauth_destination,
  permit
smtpd_error_sleep_time = 30
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
smtpd_helo_required = yes
disable_vrfy_command = yes
# Domeny pro ktere bude Postfix dorucovat (dalsi jsou oddeleny mezerou)
virtual_mailbox_domains = mydomain.com
# Umisteni uloziste schranek virtualnich uzivatelu
virtual_mailbox_base = /var/mail/virtual
# Umisteni tabulky schranek a aliasu
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_alias_maps = hash:/etc/postfix/virtual
# Definice uživatele
# minimum_uid nemusí být, když je definováno uid a gid
virtual_minimum_uid = 132
virtual_uid_maps = static:132
virtual_gid_maps = static:140

poznámka:

V posledních třech řádkách musí být správně nastavený uživatel. Nesmí být totožný s uživatelem, pod kterým běží Postfix (typicky postfix).

Po každé změně konfiguračních souborů je potřeba vynutit nové načtení těchto souborů. Záleží na konkrétní distribuci, obvykle se to provádí přes /etc/init.d/postfix reload, případně obecně postfix reload. U některých změn (jmenovitě třeba nastavení síťových rozhraní, kde má Postfix naslouchat) to ale nestačí a celý Postfix se musí restartovat (např. /etc/init.d/postfix restart nebo postfix stop && postfix start).

Zakomentované řádky s hash:/etc/postfix/access jsou BLACK/WHITE listy. Více se o nich dozvíte v článku Lukáše Jelínka.

Po změně /etc/postfix/access (a aktualizace jeho hash souboru postmap /etc/postfix/access) není třeba Postfix restartovat, ani reloadovat!

Vytvoření potřebného uživatele

V souboru /etc/postfix/main.cf jsme uvedli, že přístup ke sbírání emailů bude mít uživatel s definovaným UID a GID. Tato čísla získáme z výpisu programu adduser při jeho vytváření. Uživatele nazveme například vmail a vytvoříme jej příkazem:

$ sudo adduser --system --group --no-create-home vmail
Přidávám systémového uživatele 'vmail' (UID 132) ...
Přidávám novou skupinu 'vmail' (GID 140) ...
Přidávám nového uživatele 'vmail' (UID 132) se skupinou 'vmail' ...
Nevytvářím domovský adresář '/home/vmail'.

vysvětlení:

--system vytvoří systémového uživatele

--group vytvoří k uživateli stejnojmennou skupinu a přiřadí jej do ní

--no-create-home nebude vytvářet domovský adresář, jelikož jej nepotřebujeme

vmail je název vytvářeného uživatele

Nastavení práv a skupiny pro složku pošty

V souboru /etc/postfix/main.cf jsme zadali složku pro poštu virtuálních uživatelů. Té (kromě toho, že ji vytvoříme) musíme nastavit i správná práva a vlastnictví. Vlastnit ji bude nově vytvořený uživatel vmail a skupina vmail a práva k ní bude mít také jen on.

$ sudo mkdir /var/mail/virtual
$ sudo chown vmail:vmail virtual/
$ sudo chmod 700 virtual/

Nastavení virtuálních uživatelů

Virtuální uživatelé nemají účet přímo na serveru v systému.

Soubor emailových schránek s jejich umístěním na disku serveru je v souboru /etc/postfix/vmailbox.

poznámka:

Důležité je, aby cesta končila lomítkem, protože to signalizuje, že jde o schránku typu Maildir. Pokud by se nepoužilo, Postfix by to chápal jako mbox.

Cesty jsou relativní vzhledem k proměnné virtual_mailbox_base ze souboru /etc/dovecot/dovecot.conf, tedy pod umístěním /var/mail/virtual.

Dalším souborem bude /etc/postfix/virtual, tedy tabulka aliasů. Vypadá podobně jako tabulka schránek, jen místo cesty je cílová adresa.

Tvar souboru je tedy:

alias                     skutečná adresa

A náš obsah:

poznámka:

Jeden alias může směřovat na jiný alias a takhle až 1000x, nebo podle hodnoty v proměnné virtual_alias_recursion_limit.

Dále musí být, podle RFC 2821 a draftu RFC 5321, definována adresa uživatele postmaster, jako standardní způsob jak kontaktovat správce serveru.

RFC 2142 definuje také adresu abuse, určenou k oznamování zneužití služby – měla by být definována pro nejvyšší doménu využívanou určitým subjektem (v praxi typicky doména 2. úrovně), ale v praxi se adresa skutečně využívá zřídka. V různých RFC najdete i další speciální adresy spjaté s jinými službami.

Oba textové soubory je nyní nutné převést na hash tabulky příkazem postmap <soubor>.

Nastavení POP3 / IMAP serveru - Dovecot

Do souboru /etc/inetd.conf přidat řádek ?????

pop3 stream top nowait root /usr/sbin/tcpd /usr/sbin/popa3d

Nastavení hesel

Hesla budeme ukládat do souboru /etc/dovecot/passwd v otevřeném formátu, takže musíme dbát na správná přístupová práva k souboru s nimi!

K souboru s hesly smí mít přístup jen uživatel, pod nímž poběží program provádějící autentizaci. Tímto uživatelem nesmí být root, uživatel dovecot ani uživatel určený pro přístup ke zprávám (např. vmail). Vhodným řešením je založit speciálního uživatele, například dovecot-auth, a toho oprávnit k přístupu k datům. Tento uživatel se pak nastaví v konfiguračním souboru.

Postup k vytvoření uživatele dovecot-auth je obdobný jako uživatele vmail. Jen jej již nepotřebujeme přidávat do skupiny.

$ sudo adduser --system --no-create-home dovecot-auth

Cesta ke schránce se bude tvořit automaticky z uživatelského jména včetně domény (uživatelé se budou přihlašovat celou emailovou adresou), ta se rozloží na své složky a použije v cestě.

Nyní už zbývá jen vytvořit soubor s uživatelskými jmény a hesly. Detailní popis formátu souboru najdeme například na wiki programu Dovecot.

meridius@mydomain.com:{plain}heslo:132:140:::
vbox-winxp-u1@mydomain.com:{plain}heslo:132:140:::
vbox-winxp-u2@mydomain.com:{plain}heslo:132:140:::
vbox-ubuntu@mydomain.com:{plain}heslo:132:140:::

Přístup k tomuto souboru povolíme jen uživateli dovecot-auth.

$ sudo chown dovecot-auth /etc/dovecot/passwd
$ sudo chmod 700 /etc/dovecot/passwd

Konfigurační soubor programu

Nachází se v /etc/dovecot/dovecot.conf a obsahuje

protocols = imap pop3
ssl = no
disable_plaintext_auth = no
#typ a umisteni uloziste zprav uzivatele
mail_location = maildir:/var/mail/virtual/%d/%n
# Nastaveni uzivatele a skupiny s opravnenim pracovat s ...
first_valid_uid = 132
last_valid_uid = 132
first_valid_gid = 140
last_valid_gid = 140
# Nastaveni obchazeni chyb implementaci protokolu na strane klinetu
# IMAP v MS Outlook
protocol imap {
  imap_client_workarounds = outlook-idle
}
protocol pop3 {
  # Format unikatnich identifikatoru zprav
  pop3_uidl_format = %08Xu%08Xv
  # Dalsi obchazeni chyb nekterych klientu
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
auth default {
  mechanisms = plain login
  passdb passwd-file {
    args = scheme=plain username_format=%u /etc/dovecot/passwd
  }
  userdb passwd-file {
    args = username_format=%u /etc/dovecot/passwd
  }
  user = dovecot-auth
}

Zdroje:

http://www.abclinuxu.cz/clanky/site/soukroma-sit-v

http://deja-vix.sk/sysadmin/postfix.html

http://wiki.dovecot.org/AuthDatabase/PasswdFile