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
.
meridius@mydomain.com
mydomain.com/meridius/
vbox-winxp-u1@mydomain.com
mydomain.com/vbox-winxp-u1/
vbox-winxp-u2@mydomain.com
mydomain.com/vbox-winxp-u2/
vbox-ubuntu@mydomain.com
mydomain.com/vbox-ubuntu/
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:
postmaster@mydomain.com
meridius@mydomain.com
root@mydomain.com
meridius@mydomain.com
abuse@mydomain.com
meridius@mydomain.com
vwu1@mydomain.com
vbox-winxp-u1@mydomain.com
vwu2@mydomain.com
vbox-winxp-u2@mydomain.com
vlu1@mydomain.com
vbox-ubuntu@mydomain.com
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