GNU/Linux >> Znalost Linux >  >> Linux

Nastavení poštovního serveru Postfix na Ubuntu 14.04

Úvod

V tomto článku s návody vás provedeme vytvořením kompletního poštovního serveru na Ubuntu 14.04 s Postfixem. Budování linuxového poštovního serveru od základů může být bolestivý proces, pokud to neděláte den za dnem, ale ukážeme vám, jak to udělat tak bezbolestně, jak jen to půjde.

Poštovní server se obvykle skládá z řady různých balíčků, které zpracovávají SMTP, POP3/IMAP, ukládání pošty a úkoly související se spamem, a všechny musí spolu komunikovat. Zde je přehled balíčků a cílů pro tento článek s návody.

Přehled balíčků a kroky konfigurace

1 – Základní příprava serveru
2 – Sestavení webového serveru LAMP
3 – Konfigurace PHP
4 – Konfigurace Apache2
5 – Instalace a konfigurace Memcached
6 – Instalace balíčky poštovního serveru
7 – Vytvoření databáze MySQL pro poštovní server
8.1 – Instalace Postfix Admin
8.2 – Konfigurace Postfix Admin
9 – Přidání uživatelských účtů (schránek) do Postfixu Správce
10 – Vytvořte systémového uživatele pro správu virtuálních poštovních adresářů
11 – Konfigurace Dovecot
12 – Konfigurace spamových a antivirových filtrů
13 – Konfigurace Postfixu
14 – Reverse DNS Lookup
15 – Instalace RoundCube Webmail

Předpoklady

– Plně aktualizovaný server Ubuntu 14.04, pokud nemáte server Ubuntu spuštěný na serveru, jako jsou cloudové servery Atlantic.net Linux.

– Přístup k názvu domény, pro kterou budete nastavovat poštu (budeme používat „example.tld ” v příkladech v tomto článku).
.

1 – Základní příprava serveru

Základní instalace Ubuntu je dodávána s omezenou sadou balíčků, takže první věc, kterou chceme udělat, je nainstalovat nástroje, které budeme používat k dokončení všech úkolů.

Nejprve se ujistěte, že jste přihlášeni jako uživatel root.

sudo su -

Nyní si nainstalujme základní nástroje, abychom mohli snadno stahovat soubory a upravovat konfigurační soubory.

apt-get install wget nano ssl-cert
  • wget :balíček pro načítání souborů pomocí HTTP, HTTPS a FTP, nejrozšířenějších internetových protokolů.
  • nano :textový editor příkazového řádku se snadno použitelnými ovládacími prvky.
  • ssl-cert :balíček, který umožňuje vytvářet certifikáty SSL.

Dále aktualizujeme název hostitele a název domény serveru tak, aby se při odeslání e-mailu shodoval se záznamem DNS zpětného ukazatele, který jsme nastavili u vašeho poskytovatele hostingu. Aktualizujeme také /etc/hostname soubor. Nezapomeňte nahradit příklad svým skutečným názvem hostitele a názvem domény.

název hostitele mail.example.tldecho "mail.example.tld"> /etc/název hostitele

Nyní ručně upravíme /etc/hosts konfigurační soubor tak, aby odpovídal názvu, který jsme právě zadali.

nano /etc/hosts

Upravte první řádek a přidejte svůj FQDN (plně kvalifikovaný název domény) hned za IP adresu 127.0.0.1.

127.0.0.1 mail.example.tld localhost

Nyní se chystáme aktualizovat výchozí certifikát SSL na serveru tak, aby odpovídal našemu novému názvu hostitele. Pokud jste si pro svůj poštovní server zakoupili certifikát SSL, můžete tento krok přeskočit.

make-ssl-cert generation-default-snakeoil --force-overwrite

Tento příkaz říká serveru, aby znovu vygeneroval výchozí systémový certifikát SSL a přinutí jej přepsat původní soubory CRT a KEY.

Nyní jsme dokončili základní přípravu serveru a můžeme přejít k instalaci našich služeb webového serveru.

[Zpět na začátek]

2 – Sestavte webový server LAMP

Během tohoto kroku nainstalujeme balíčky „LAMP“. LAMP je zkratka pro Linux, Apache, MySQL a PHP. Kombinace těchto balíčků umožní vašemu serveru poskytovat dynamické webové služby s připojením MySQL.

Nejprve nainstalujme balíčky. Toto se nazývá instalace balíčku úloh.

apt-get install lamp-server^

Chcete-li zobrazit seznam balíčků, které jsou součástí této skupinové instalace, můžete provést následující:

tasksel --task-packages lamp-server


Jakmile se tyto balíčky instalují, server vás požádá o zadání hesla pro instalaci vaší databáze MySQL. Toto heslo bude nastaveno pro „root ” uživatelský účet databáze MySQL. Ujistěte se, že toto heslo je bezpečné heslo, a ujistěte se, že jste si zdokumentovali použité heslo, protože jej budete znovu potřebovat v tomto článku.

Po instalaci všech balíčků budeme připraveni nainstalovat některé další moduly PHP. Tyto dodatečné moduly umožní vašemu serveru podporovat APC User Cache pro PHP 5, memcached, cURL, XML parser a zpracování obrazu GD.

apt-get install php-apc php5-memcache php5-curl php5-gd php-xml-parser php5-imap

[Zpět na začátek]

3 – Konfigurace PHP

Nyní se chystáme aktualizovat konfiguraci PHP. Výchozí konfigurace je obvykle dostatečná pro většinu systémů; chceme se však ujistit, že PHP nevystaví informace potenciálním útočníkům. Chystáme se upravit soubor /etc/php5/apache2/php.ini .

nano /etc/php5/apache2/php.ini

Vyhledejte proměnnou expose_php a aktualizujte hodnotu z On na Off . S nano můžete vyhledávat stisknutím CTRL-W a poté zadejte hledané slovo.

367;;;;;;;;;;;;;;;;;;;;368; Různé;369;;;;;;;;;;;;;;;;;;370 371; Rozhoduje, zda PHP může odhalit skutečnost, že je nainstalováno na server372; (např. přidáním jeho podpisu do hlavičky webového serveru). Není to žádné zabezpečení373; hrozba jakýmkoliv způsobem, ale umožňuje určit, zda používáte PHP374; na vašem serveru nebo ne.375; http://php.net/expose-php376 expose_php =Vypnuto377

[Zpět na začátek]

4 – Konfigurace Apache2

Nyní jsme připraveni přejít k přizpůsobení konfigurace webových služeb Apache. Konečným výsledkem pro Apache je, že bude obsluhovat jeden web s několika běžícími webovými aplikacemi:Webmail (RoundCube) a Postfix Admin. Veškerý provoz bude směrován na webové služby HTTPS (zabezpečené).

Za prvé, budeme minimalizovat informace, které Apache vystavuje veřejnosti. Pomocí nano upravíme konfigurační soubor /etc/apache2/conf-available/security.conf .

nano /etc/apache2/conf-available/security.conf

Vyhledejte konfigurační proměnnou ServerTokens a nastavte hodnotu z OS do Prod .

# ServerTokens# Tato direktiva konfiguruje to, co vrátíte jako hlavičku Server HTTP response#. Výchozí hodnota je 'Full', která odesílá informace o typu OS# a zkompilované v modulech.# Nastavte na jednu z:Full | OS | Minimální | Menší | major | Prod# kde Full poskytuje nejvíce informací a Prod nejméně.#ServerTokens MinimalServerTokens Prod#ServerTokens Full

Nyní vyhledejte konfigurační proměnnou ServerSignature a nastavte hodnotu z On na Off .

# Volitelně přidejte řádek obsahující verzi serveru a název virtuálního hostitele# na stránky generované serverem (interní chybové dokumenty, výpisy adresářů FTP#, výstup mod_status a mod_info atd., ale ne dokumenty # generované CGI nebo vlastní chybové dokumenty) .# Nastavte na "E-mail", chcete-li také obsahovat odkaz mailto:na ServerAdmin.# Nastavte na jednu z:Zapnuto | Vypnuto | EMailServerSignature Off#ServerSignature On

Nyní můžete uložit a ukončit tento konfigurační soubor.

Nyní povolíme další moduly rewrite a ssl v Apache, abychom mohli přesměrovat výchozí HTTP provoz na HTTPS port a také podporovat SSL certifikáty v Apache.

a2enmod přepište ssla2ensite default-ssl

Nyní přecházíme k přizpůsobení konfigurace webu. Tyto soubory jsou umístěny v adresáři /etc/apache2/sites-available . Chystáme se aktualizovat stávající výchozí konfigurační soubory, aby podporovaly služby SSL.

Nejprve upravte konfigurační soubor 000-default.conf . Stávající konfiguraci můžete nahradit níže uvedenou, stačí nahradit ServerName proměnná s vaším názvem hostitele.

nano /etc/apache2/sites-available/000-default.conf
 # Direktiva ServerName nastavuje schéma požadavku, název hostitele a port, který # server používá k identifikaci. To se používá při vytváření # adres URL přesměrování. V kontextu virtuálních hostitelů určuje ServerName #, jaký název hostitele se musí objevit v hlavičce Host:požadavku, aby # odpovídal tomuto virtuálnímu hostiteli. Pro výchozího virtuálního hostitele (tento soubor) tato hodnota # není rozhodující, protože se bez ohledu na to používá jako hostitel poslední instance. # Pro každého dalšího virtuálního hostitele jej však musíte nastavit explicitně. ServerName mail.example.tld DocumentRoot /var/www/html  Možnosti FollowSymLinks AllowOverride All  # Dostupné úrovně protokolů:trace8, ..., trace1, debug, info, notice, alert, # error, crit, alert, emerg. # Je také možné nakonfigurovat úroveň logování pro jednotlivé # moduly, např. LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # Pro většinu konfiguračních souborů z conf-available/, které jsou # povoleny nebo zakázány na globální úrovni, je možné # zahrnout řádek pouze pro jednoho konkrétního virtuálního hostitele. Například # následující řádek povolí konfiguraci CGI pro tohoto hostitele pouze # poté, co byl globálně zakázán pomocí "a2disconf". #Include conf-available/serve-cgi-bin.conf

Nyní můžete uložit a ukončit tento konfigurační soubor.

Pokud jste si nezakoupili vlastní certifikát SSL, výchozí konfigurační soubor SSL systému default-ssl.conf bude fungovat pro naše potřeby. Pokud jste si však zakoupili vlastní certifikát SSL, budete muset upravit konfigurační soubor a aktualizovat proměnné SSLCertificateFile , SSLCertificateKeyFile a SSLCertificateChainFile přejděte na umístění, kam jste uložili svůj certifikát a soubory klíčů (další pomoc s konfigurací vám poskytne certifikační autorita nebo prodejce).

Nyní vytvoříme .htaccess konfigurační soubor, který přinutí návštěvníky vašeho webového serveru používat protokol HTTPS (SSL).

nano /var/www/html/.htaccess

Zkopírujte a vložte následující proměnné do .htaccess konfigurace.

RewriteEngine OnRewriteCond %{SERVER_PORT} 80RewriteRule ^(.*) https://%{HTTP_HOST}/$1 [L]

Tyto konfigurační proměnné říkají Apache, aby povolil modul mod_rewrite a poté přesměroval návštěvníky na HTTP (port 80) na HTTPS (port 443) URL.

[Zpět na začátek]

5 – Instalace a konfigurace Memcached

Memcached je vysoce výkonný systém pro ukládání objektů do mezipaměti s distribuovanou pamětí. Tento balíček pomůže urychlit dynamické webové aplikace, jako je RoundCube a Postfix Webadmin.

Nejprve nainstalujme balíček pomocí apt-get.

apt-get install memcached

U menších systémů obvykle stačí výchozí konfigurace. Uzamyká přístup k localhost a poskytuje dostatečné hodnoty alokace paměti. Pokud však stavíte větší server, který může být hodně zatěžován, budete s největší pravděpodobností chtít změnit hodnoty alokace paměti tak, aby byly vyšší než výchozích 64M.

Konfigurační soubory memcached jsou umístěny na /etc/memcached.conf .

[Zpět na začátek]

6 – Instalace balíčků poštovního serveru

Nyní jsme připraveni nainstalovat balíčky pro poštovní server. Opět jsou umístěny v tasksel skupina balíčků.

apt-get install mail-server^

Chcete-li zobrazit seznam balíčků, které jsou součástí této skupinové instalace, můžete provést následující:

tasksel --task-packages poštovní server

Během instalace balíčku se vás Postfix zeptá na řadu otázek:

  1. Typ konfigurace instalace —
    Budete chtít vybrat „Internet Site ” jako typ konfigurace.
  2. Název hostitele poštovního serveru —
    Ujistěte se, že zadáváte stejný název hostitele (FQDN), jaký jste použili v kroku č. 1
  3. Vytvořte certifikát SSL s vlastním podpisem —
    Vyberte možnost „Ano“
  4. Nastavte společný název certifikátu SSL —
    Zadejte stejný název hostitele (FQDN), jaký jste použili v kroku č. 1

Nyní se chystáme nainstalovat zbývající balíčky, které jsou potřebné pro poštovní server, aby podporoval uživatele založené na MySQL, stejně jako balíčky pro detekci spamu a antiviru. (Poznámka:tyto balíčky lze nainstalovat pomocí jediné instalace apt-get install příkaz, s každým názvem balíčku odděleným mezerou, ale pro usnadnění čtení jsou zde uvedeny jako samostatné příkazy.)

apt-get install postfix-mysql dovecot-mysql dovecot-imapd postgreyapt-get install amavis clamav clamav-daemon spamassassinapt-get install php5-imap

Tato další sada volitelných balíčků rozšiřuje schopnosti antispamových a antivirových detekčních balíčků tím, že umožňuje lepší kontrolu připojených souborů, které přicházejí na váš poštovní server.

apt-get install libnet-dns-perl pyzor razorapt-get install arj bzip2 cabextract cpio soubor gzip nomarch pax unzip zip

Nyní restartujeme služby Apache2, aby viděly nové moduly, které jsme jim poskytli.

restart služby apache2

[Zpět na začátek]

7 – Vytvoření databáze MySQL pro e-mailový server

Nyní jsme připraveni vytvořit databázi pro naše uživatelské účty a další funkce poštovního serveru.

Pro začátek se musíme přihlásit do databázové služby MySQL jako uživatel root. Budete potřebovat heslo, které jste poprvé zadali v kroku #2.

mysql -u root -p

Nyní uvidíte jiný příkazový řádek (mysql> ). Toto je konzola MySQL CLI, kde můžete spravovat databáze a tabulky serveru MySQL.

Nejprve vytvoříme novou databázi s názvem „mail“ a poté vytvoříme systémový uživatelský účet s plnými oprávněními k této nové databázi. Ujistěte se, že jste nahradili <secure password> proměnnou s jiným *novým* bezpečným heslem pro tento účet. Nepoužívejte stejné heslo, jaké jste použili pro účet uživatele root .

vytvořit databázovou poštu;udělit vše na poštu.* na adresu 'mail'@'localhost' označenou '';vyprázdnit oprávnění;exit;

Nyní jsme nastavili databázi, kterou budou používat služby vašeho poštovního serveru.

[Zpět na začátek]

8.1 – Instalace Postfix Admin

Postfix Admin je webový nástroj pro správu vytvořený pro Postfix. Je to aplikace založená na PHP, která zpracovává virtuální domény ve stylu Postfixu a uživatele, kteří jsou uloženi v MySQL nebo PostgreSQL.

Nejprve si musíme stáhnout nejnovější verzi aplikace. Tento příklad stáhne verzi 2.92 –vždy zkontrolujte verzi na webu poskytovatele, abyste se ujistili, že získáváte nejnovější verzi .

cd /tmpwget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.92/postfixadmin-2.92.tar.gz

Nyní rozbalíme aplikaci a zkopírujeme ji do HTML adresáře /var/www/html/postfixadmin na našem serveru.

tar -xvf postfixadmin-2.92.tar.gzcp -r postfixadmin-2.92/ /var/www/html/postfixadmin

Nyní musíme aktualizovat oprávnění této nové složky tak, aby www-data uživatelský účet k němu má přístup.

chown -R www-data:www-data /var/www/html/postfixadmin

[Zpět na začátek]

8.2 – Konfigurace Postfix Admin

Nyní máme několik konfigurací k aktualizaci v souborech správce Postfixu. Nejprve upravíme config.inc.php aby věděl, jak komunikovat s databází, kterou jsme právě vytvořili v kroku #7.

nano /var/www/html/postfixadmin/config.inc.php

Vyhledejte proměnnou 'configured' a resetujte hodnotu z false true .

$CONF['configured'] =true;

Nyní vyhledejte proměnnou 'database_' a nahraďte hodnoty pro konfiguraci serveru MySQL. Nezapomeňte nahradit proměnnou <your secure password> s heslem pro uživatele databáze „mail“, které jste zadali v kroku #7.

$CONF['database_type'] ='mysqli';$CONF['database_host'] ='localhost';$CONF['database_user'] ='mail';$CONF['database_password'] ='';$CONF['database_name'] ='mail';

Nyní vyhledejte proměnnou 'admin_email' a nahraďte hodnotu e-mailovou adresou, kterou nastavíte pro svůj e-mailový účet správce.

$CONF['admin_email'] ='[email protected]';

Nyní vyhledejte proměnnou 'domain_path' a nahraďte hodnotu z ‘YES ‘ až ‘NO ‘.

$CONF['domain_path'] ='NE';

Nyní vyhledejte proměnnou 'domain_in_mailbox' a nahraďte hodnotu z ‘NO ‘ až ‘YES ‘.

$CONF['domain_in_mailbox'] ='ANO';

Tyto poslední konfigurační proměnné nedefinují cestu, kam budou na serveru uložena skutečná data poštovní schránky uživatele. Ty budou definovány později během konfiguračních kroků Dovecot.

Nyní jste připraveni uložit konfigurační soubor, ale ještě neukončujte!

Nyní otevřeme webový prohlížeč, zadejte adresu URL vašeho poštovního serveru a ukažte přímo na setup.php konfigurační stránku. Nezapomeňte nahradit mail.example.tld s vaším skutečným názvem hostitele serveru.

http://mail.example.tld/postfixadmin/setup.php

Když přistoupíte na adresu URL, skript automaticky zkontroluje server a potvrdí, že všechny nezbytné moduly jsou nainstalovány a fungují.

Výstup kontroly nastavení správce Postfix

Po dokončení kontrol budete vyzváni k zadání hesla pro nastavení. Toto heslo se používá k vytvoření hlavních administrátorských účtů pro webové rozhraní Postfix Admin.

Zadejte bezpečné heslo a stiskněte tlačítko „Generate Password Hash“.

Administrátor Postfixu generuje hash hesla

Příklad hash hesla administrátora Postfixu

Ještě NEZAVÍREJTE webový prohlížeč! Za pár minut se sem vracíme.

Po vygenerování hash hesla budeme muset aktualizovat config.inc.php soubor znovu s tímto heslem. Vyhledejte proměnnou 'setup_password' a nahraďte hodnotu hodnotou vygenerovanou ze skriptu.

// Abyste mohli nastavit Postfixadmin, MUSÍTE zde zadat hashované heslo.// Chcete-li vytvořit hash, navštivte setup.php v prohlížeči a zadejte heslo do pole,// při odeslání se ozve vám jako hašovaná hodnota.$CONF['setup_password'] ='';

Nyní můžete uložit a ukončit konfigurační soubor.

Nyní jsme připraveni vrátit se do webového prohlížeče a vygenerovat účet „super admin“ pro portál Postfix Admin.
Když jste klikli na tlačítko ‚Generate Password Hash‘, pole formuláře se změnila tak, aby vypadala jako příklad níže. Nyní můžete vyplnit formulář a vytvořit účet superadministrátora.

Vytvoření účtu superadmin pomocí Postfix Admin

[Zpět na začátek]

9 – Přidání uživatelských účtů (e-mailových schránek) do Postfix Admin

Nyní jsme připraveni vytvořit virtuální uživatelský účet na našem poštovním serveru. Za tímto účelem se vrátíme na adresu URL správce Postfixu v našem webovém prohlížeči a zadáme adresu URL vašeho poštovního serveru. Nezapomeňte nahradit mail.example.tld s vaším skutečným názvem hostitele serveru.

https://mail.example.tld/postfixadmin/

Nyní se budete moci přihlásit k portálu Postfix Admin, kde můžete spravovat virtuální domény a virtuální uživatelské účty. Zadejte uživatelské jméno a heslo superadministrátora, které jste vytvořili výše během konfigurace Postfix Admin, a poté stiskněte tlačítko „Přihlásit se“.

Přihlášení správce pro správce Postfixu

Jakmile se přihlásíte do portálu Postfix Admin, uvidíte nabídku v horní části stránky.
Možnosti nabídky poskytují možnost spravovat virtuální domény a uživatele poštovního serveru Postfix a prohlížet soubory protokolu.

Nabídka pro správu Postfixu

Možnost přidání poštovní schránky správce Postfixu

Pro vytvoření uživatelské schránky klikněte na rychlý odkaz „Přidat schránku“. Nyní budete přesměrováni na obrazovku „Průvodce přidáním poštovní schránky“. Vyplňte údaje ve formuláři a po vyplnění stiskněte tlačítko „Přidat schránku“. Průvodce vytvoří váš první virtuální uživatelský (e-mailový) účet.

Vytvoření nové poštovní schránky v Postfix Admin

[Zpět na začátek]

10 – Vytvořte systémového uživatele pro práci s adresáři virtuální pošty

Virtuální uživatelé jsou ti, kteří na vašem linuxovém serveru technicky neexistují a nepoužívají standardní linuxové metody pro ověřování nebo doručování a ukládání pošty. Vaše virtuální uživatelské účty poštovního serveru jsou definovány v databázi vytvořené Postfix Adminem, nikoli existujícími jako systémové uživatelské účty. Musíme tedy vytvořit jeden systémový uživatelský účet, který bude obsluhovat služby, jako je úložiště pošty a ověřování Dovecot.

Nejprve si vytvořte systémový uživatelský účet s názvem vmail a udělte mu oprávnění k požadovaným adresářům. Tento systémový účet bude zodpovědný za backendové operace pro úložiště poštovních schránek a služby.

useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c "Obsluha virtuálního adresáře pošty" vmailmkdir -p /var/vmailchown vmail:mail /var/vmailchmod 770 /var/vmail 

Vysvětlení výše uvedených příkazů:

  1. Vytvořili jsme systémový uživatelský účet vmail , přiřadil domovský adresář jako /var/vmail a omezil možnost přihlášení tohoto účtu přes shell nebo konzoli.
  2. Potom jsme ručně vytvořili domovský adresář /var/vmail pro nový systémový uživatelský účet.
  3. Poté nastavíme vlastníka a skupinu pro /var/vmail adresář.
  4. Potom jsme systémovému uživateli vmail udělili plná oprávnění a bezpečnostní skupina mail přiřazena k adresáři /var/vmail .

[Zpět na začátek]

11 – Konfigurace Dovecot

Dovecot je open-source e-mailový server IMAP a POP3 napsaný s ohledem na bezpečnost. Dovecot má mnoho vestavěných funkcí, které si můžete prohlédnout na jejich veřejné webové stránce http://www.dovecot.org.

Dovecot bude odpovědný za správu připojení IMAP a POP3, správu místních adresářů pošty a přijímání příchozí pošty předávané z procesu poštovního serveru Postfix SMTP. Dovecot bude také spravovat ověřování pro připojení SMTP. Mnoho různých souborů v /etc/dovecot konfigurace adresáře Dovecot.

Nejprve nakonfigurujme Dovecot tak, aby používal databázi nastavenou správcem Postfixu. Nejprve upravíme konfigurační soubor /etc/dovecot/conf.d/auth-sql.conf.ext

nano /etc/dovecot/conf.d/auth-sql.conf.ext

Upravte nebo aktualizujte obsah tak, aby měl následující konfiguraci.

# Vyhledejte uživatelská hesla z databáze SQL, jak je # definováno v /etc/dovecot/dovecot-sql.conf.extpassdb { driver =sql args =/etc/dovecot/dovecot-sql.conf.ext}# Vyhledat uživatelské informace z databáze SQL, jak jsou definovány v /etc/dovecot/dovecot-sql.conf.extuserdb { driver =sql args =/etc/dovecot/dovecot-sql.conf.ext}

Po dokončení uložte a ukončete konfigurační soubor.

Konfigurační soubor SQL

Nyní budeme zálohovat původní konfigurační soubor SQL /etc/dovecot/dovecot-sql.conf.ext a vytvořte nový konfigurační soubor, který bude Dovecot používat.

mv /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.originalnano /etc/dovecot/dovecot-sql.conf.ext

Nyní zkopírujte níže uvedený obsah do konfiguračního souboru a aktualizujte hodnoty pro poštovní databázi, kterou jste nastavili v kroku 7.

# Ovladač databáze:mysql, pgsql, sqlitedriver =mysql# Připojení k databázi:# connect =host=192.168.1.1 dbname=users# connect =host=sql.example.com dbname=virtual user=virtual password=blarg# connect =/etc/dovecot/authdb.sqlite#connect =host=localhost dbname=mail uživatel=mail heslo=# Výchozí schéma hesla.## Seznam podporovaných schémat je na# http://wiki2.dovecot. org/Authentication/PasswordSchemes## Slabé, ale běžné schéma šifrování:default_pass_scheme =MD5-CRYPT# # Zakomentujte výše uvedené a zrušte komentáře níže # pro silnější šifrování:#default_pass_scheme - SHA256-CRYPT# Definujte dotaz pro získání uživatelského hesla.password_query =\ VYBERTE uživatelské jméno jako uživatele, heslo, '/var/vmail/%d/%n' jako domovskou_databázi uživatele, \ 'maildir:/var/vmail/%d/%n' jako userdb_mail, 150 jako userdb_uid, 8 jako userdb_gid \ FROM poštovní schránka WHERE username ='%u' AND active ='1'# Definujte dotaz pro získání informací o uživateli.user_query =\ SELECT '/var/vmail/%d/%n' jako domov, 'maildir:/var/vmail/ %d /%n' jako mail, \ 150 AS uid, 8 AS gid, concat('dirsize:storage=', kvóta) AS kvóta \ FROM mailbox WHERE username ='%u' AND active ='1'

Po dokončení uložte a ukončete tento konfigurační soubor.

Soubor definice autentizace

Nyní se chystáme zálohovat soubor definice autentizace /etc/dovecot/conf.d/10-auth.conf a vytvořte nový.

mv /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.originalnano /etc/dovecot/conf.d/10-auth.conf 

Nyní zkopírujte níže uvedený obsah do definičního souboru.

# Zakažte příkaz LOGIN a všechna ostatní autentizace v prostém textu, pokud není použito# SSL/TLS (funkce LOGINDISABLED). Všimněte si, že pokud se vzdálená IP# shoduje s lokální IP (tj. připojujete se ze stejného počítače), je připojení# považováno za bezpečné a autentizace pomocí prostého textu je povolena.disable_plaintext_auth =yes# Mezerou oddělený seznam požadovaných autentizačních mechanismů:# plain login digest-md5 cram-md5 ntlm rpa apop anonymní gssapi otp skey# gss-spnego# POZNÁMKA:Viz také disable_plaintext_auth setting.auth_mechanisms =plain login#### Databáze hesel a uživatelů## ## Databáze hesel se používá k ověření hesla uživatele (a nic víc).# Můžete mít více passdbs a userdbs. To je užitečné, pokud chcete# povolit uživatelům systému (/etc/passwd) i virtuálním uživatelům přihlášení bez# duplikování systémových uživatelů do virtuální databáze.## ## Databáze uživatelů určuje, kde e-maily jsou umístěny a jaká ID uživatelů/skupin # je vlastní. Pro konfiguraci s jedním UID použijte "statickou" userdb.## # Použijte konfiguraci databáze SQL raději než jakoukoli jinou.!include auth-sql.conf.ext

Po dokončení uložte a ukončete soubor.

Soubor definice pošty

Dále řekneme Dovecotu, kde má ukládat poštu virtuálních uživatelů. Budeme zálohovat soubor definice pošty /etc/dovecot/conf.d/10-mail.conf a vytvoření nového.

mv /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.originalnano /etc/dovecot/conf.d/10-mail.conf 

Nyní zkopírujte níže uvedený obsah do definičního souboru.

# Umístění poštovních schránek uživatelů. Výchozí hodnota je prázdná, což znamená, že se Dovecot# pokusí najít poštovní schránky automaticky. Toto nebude fungovat, pokud uživatel# ještě nemá žádnou poštu, takže byste měli výslovně sdělit Dovecotu úplné umístění #.## Pokud používáte mbox, zadejte cestu k souboru INBOX (např. /var/ mail/%u)# nestačí. Také budete muset společnosti Dovecot sdělit, kde jsou uloženy ostatní poštovní schránky. Toto se nazývá "kořenový poštovní adresář" a musí to být první # cesta uvedená v nastavení mail_location.## Můžete použít několik speciálních proměnných, např.:## %u - uživatelské jméno# %n - uživatel část v [email protected], stejná jako %u, pokud neexistuje doména# %d - část domény v [email protected], prázdná, pokud neexistuje žádná doména# %h - domovský adresář## Viz doc/wiki/Variables.txt pro úplný seznam. Některé příklady:## mail_location =maildir:~/Maildir# mail_location =mbox:~/mail:INBOX=/var/mail/%u# mail_location =mbox:/var/mail/%d/%1n/%n:INDEX =/var/indexes/%d/%1n/%n## #mail_location =maildir:/var/vmail/%d/%n# Systémový uživatel a skupina používaná pro přístup k e-mailům. Pokud použijete více, userdb# je může přepsat vrácením polí uid nebo gid. Můžete použít čísla# nebo jména. mail_uid =vmailmail_gid =mail# Platný rozsah UID pro uživatele, výchozí hodnota je 500 a vyšší. Toto je většinou# proto, aby se zajistilo, že se uživatelé nemohou přihlásit jako démoni nebo jiní uživatelé systému.# Všimněte si, že odepření přihlášení root je pevně zakódováno pro binární kód dovecot a nelze jej # provést, i když je first_valid_uid nastaveno na 0.## Použít uid uživatele vmail here.first_valid_uid =150last_valid_uid =150# Pokud potřebujete nastavit více umístění poštovních schránek nebo chcete změnit výchozí# nastavení jmenného prostoru, můžete to udělat definováním sekcí jmenného prostoru.## Můžete mít soukromé, sdílené a veřejné jmenné prostory. Soukromé jmenné prostory# jsou pro osobní e-maily uživatele. Sdílené jmenné prostory jsou pro přístup k poštovním schránkám jiných # uživatelů, které byly sdíleny. Veřejné jmenné prostory jsou pro sdílené # poštovní schránky, které spravuje sysadmin. Pokud vytvoříte jakékoli sdílené nebo veřejné# jmenné prostory, obvykle budete chtít povolit také plugin ACL, jinak budou mít všichni # uživatelé přístup ke všem sdíleným poštovním schránkám, za předpokladu, že k tomu mají oprávnění# na úrovni souborového systému.namespace inbox { # Typ jmenného prostoru:private, shared or public #type =private # Hierarchy separator to use. Měli byste použít stejný oddělovač pro všechny # jmenné prostory, jinak se někteří klienti zmýlí. '/' je obvykle dobré. # Výchozí nastavení však závisí na základním formátu úložiště pošty. #separator =# Pro přístup k tomuto jmennému prostoru je vyžadována předpona. Toto se musí lišit pro # všechny jmenné prostory. Například "Veřejné/". #prefix =# Fyzické umístění poštovní schránky. Toto je ve stejném formátu jako # mail_location, což je také výchozí. #location =# Může existovat pouze jeden INBOX a toto nastavení definuje, který jmenný prostor # jej má. inbox =yes # If namespace is hidden, it's not advertised to clients via NAMESPACE # extension. You'll most likely also want to set list=no. This is mostly # useful when converting from another server with different namespaces which # you want to deprecate but still keep working. For example you can create # hidden namespaces with prefixes "~/mail/", "~%u/mail/" and "mail/". #hidden =no # Show the mailboxes under this namespace with LIST command. This makes the # namespace visible for clients that don't support NAMESPACE extension. # "children" value lists child mailboxes, but hides the namespace prefix. #list =yes # Namespace handles its own subscriptions. If set to "no", the parent # namespace handles them (empty prefix should always have this as "yes") #subscriptions =yes}

Once done, save and exit the file.

SSL Definition File

If you have an SSL certificate that you would like to install, you will need to modify the Dovecot SSL definition file /etc/dovecot/conf.d/10-ssl.conf with your valid certificate. Remember, you will have to also include your CA certificate bundle if one has been provided by the certificate issuer.

Dovecot Master Definition File

We are now going to update the Dovecot master definition file /etc/dovecot/10-master.conf to include the system user account and the postfix settings.

nano /etc/dovecot/conf.d/10-master.conf

Search for the config definition service auth and replace the definition block with the following.

service auth { # auth_socket_path points to this userdb socket by default. It's typically # used by dovecot-lda, doveadm, possibly imap process, etc. Users that have # full permissions to this socket are able to get a list of all usernames and # get the results of everyone's userdb lookups. # # The default 0666 mode allows anyone to connect to the socket, but the # userdb lookups will succeed only if the userdb returns an "uid" field that # matches the caller process's UID. Also if caller's uid or gid matches the # socket's uid or gid the lookup succeeds. Anything else causes a failure. # # To give the caller full permissions to lookup all users, set the mode to # something else than 0666 and Dovecot lets the kernel enforce the # permissions (e.g. 0777 allows everyone full permissions). unix_listener auth-userdb { mode =0600 user =vmail group =mail } # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode =0660 # Assuming the default Postfix userid and groupid user =postfix group =postfix } }

Once done, save and exit the file.

LDA Definition File

In some cases, you may have to explicitly define the postmaster email address for your server. To do this, you will need to edit the LDA definition file /etc/dovecot/conf.d/15-lda.conf . If you see errors messages like Invalid settings: postmaster_address setting not given showing up in the mail server logs, then this configuration change is the likely fix for that error.

nano /etc/dovecot/conf.d/15-lda.conf

Search for the definition postmaster_address and update the value to include your domain’s postmaster account.

# Address to use when sending rejection mails.# Default is [email protected]. %d expands to recipient domain.#postmaster_address =postmaster_address [email protected]

Once done, save and exit the file.

We now need to update the Dovecot configuration directory to be accessible to the Dovecot service account as well as the vmail system account.

chown -R vmail:dovecot /etc/dovecotchmod -R o-rwx /etc/dovecot

You have now completed the configuration of the Dovecot service and we can now move on to the antivirus and anti-spam services.
[Back to top]

12 – Configuring Amavis, ClamAV, and SpamAssassin

What are these packages ?

– Amavis is an interface between Postfix and content filtering packages such as SpamAssassin and ClamAV.

– ClamAV is a high-performance antivirus engine for detecting trojans, viruses, malware &other malicious threats.

– SpamAssassin is a high-performance anti-spam platform famous for its Bayesian spam filtering capabilities. It gives system administrators a filter to classify messages and block unsolicited bulk email.

We will now walk you through the process of installing some protection for your mail server. For the most part, the default configurations are sufficient for a good line of defense against spam and viruses getting through your mail server. If you have special requirements, you can, of course, spend a good amount of time crafting intricate processing rules.

Let’s first create the two system user accounts, amavis and clamav, and allow them to collaborate together.

adduser clamav amavisadduser amavis clamav

We are now going to enable the Amavis daemon by editing the /etc/amavis/conf.d/15-content_filter_mode configuration file.

nano /etc/amavis/conf.d/15-content_filter_mode
use strict; # You can modify this file to re-enable SPAM checking through spamassassin# and to re-enable antivirus checking. ## Default antivirus checking mode# Please note, that anti-virus checking is DISABLED by# default.# If You wish to enable it, please uncomment the following lines:@bypass_virus_checks_maps =( %bypass_virus_checks, @bypass_virus_checks_acl, $bypass_virus_checks_re); ## Default SPAM checking mode# Please note, that anti-spam checking is DISABLED by# default.# If You wish to enable it, please uncomment the following lines:@bypass_spam_checks_maps =( %bypass_spam_checks, @bypass_spam_checks_acl, $bypass_spam_checks_re); 1; # ensure a defined return

Once done, you can save and exit the file.

We are now going to enable the SpamAssassin software by editing the /etc/default/spamassassin configuration file.

nano /etc/default/spamassassin

First, locate the variable ENABLED=0 in the configuration file and change the value to 1.

# Change to one to enable spamdENABLED=1

Now search for the variable CRON=0 in the configuration file and change the value to 1.

# Cronjob# Set to anything but 0 to enable the cron job to automatically update# spamassassin's rules on a nightly basisCRON=1

We are now going to set up Amavis to use the database from Postfix Admin to identify mail that is arriving for local delivery. By default, SpamAssassin and Amavis will only check mail that is determined to be arriving for local delivery. Because we are set up to use virtual user mailboxes, we have to tell the services where to locate the user accounts.

To do this, we need to update the configuration file /etc/amavis/conf.d/50-user .

nano /etc/amavis/conf.d/50-user

Replace the contents of this configuration file with the below. Be sure to update the MySQL database password to use the password for the database user “mail” that you entered in Step #7.

use strict; ## Place your configuration directives here. They will override those in# earlier files.## See /usr/share/doc/amavisd-new/ for documentation and examples of# the directives you can use in this file# # Three concurrent processes. This should fit into the RAM available on an# AWS micro instance. This has to match the number of processes specified# for Amavis in /etc/postfix/master.cf.$max_servers =3; # Add spam info headers if at or above that level - this ensures they# are always added.$sa_tag_level_deflt =-9999; # Check the database to see if mail is for local delivery, and thus# should be spam checked.@lookup_sql_dsn =( ['DBI:mysql:database=mail;host=127.0.0.1;port=3306', 'mail', '']);$sql_select_policy ='SELECT domain from domain WHERE CONCAT("@",domain) IN (%k)'; # Uncomment to bump up the log level when testing.# $log_level =2; #------------ Do not modify anything below this line -------------1; # ensure a defined return

Once done, save and exit the configuration file.

We will now need to restart the Amavis and SpamAssassin services so that they see the new configuration settings.

service amavis restartservices spamassassin restart

[Back to top]

13 – Configuring Postfix

We are now ready to configure the Postfix mail server. Postfix handles all of the incoming and outgoing mail via the SMTP protocol, and we are going to configure it to integrate will all of the other software packages that we have just configured.

From a high level view, we are needing Postfix to hand off incoming mail to the SpamAssassin and ClamAV scanners for filtering, and then to pass unblocked mail messages on to the Dovecot services for final mailbox delivery. Postfix will also authenticate the virtual users who connect via SMTP in order to send email messages.

We are going to create a definition file for Postfix to identify users and mailboxes. Please note that the “hosts” directive in these configuration files must be exactly the same as the “bind-address” in the /etc/mysql/my.cnf configuration files.

First, let’s look up the value of the bind-address in the MySQL configuration files.

cat /etc/mysql/my.cnf | grep bind-address
<>bind-address =127.0.0.1

Now that we have the configuration value, we are going to create the required Postfix definition files.

Copy and paste the content for each file. Make sure to update the password value with the password for the database user “mail” that you entered in Step #7.

/etc/postfix/mysql_virtual_alias_domainaliases_maps.cf

nano /etc/postfix/mysql_virtual_alias_domainaliases_maps.cf
user =mail password = hosts =127.0.0.1 dbname =mail query =SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain ='%d' AND alias.address=concat('%u', '@', alias_domain.target_domain) AND alias.active =1

Once done, save and exit the configuration file.

/etc/postfix/mysql_virtual_alias_maps.cf

nano /etc/postfix/mysql_virtual_alias_maps.cf
user =mailpassword =hosts =127.0.0.1dbname =mailtable =aliasselect_field =gotowhere_field =addressadditional_conditions =and active ='1'

Once done, save and exit the configuration file.

/etc/postfix/mysql_virtual_domains_maps.cf

nano /etc/postfix/mysql_virtual_domains_maps.cf
user =mailpassword =hosts =127.0.0.1dbname =mailtable =domainselect_field =domainwhere_field =domainadditional_conditions =and backupmx ='0' and active ='1'

Once done, save and exit the configuration file.

/etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf

nano /etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf
user =mailpassword =hosts =127.0.0.1dbname =mailquery =SELECT maildir FROM mailbox, alias_domain WHERE alias_domain.alias_domain ='%d' AND mailbox.username=concat('%u', '@', alias_domain.target_domain ) AND mailbox.active =1

Once done, save and exit the configuration file.

/etc/postfix/mysql_virtual_mailbox_maps.cf

nano /etc/postfix/mysql_virtual_mailbox_maps.cf
user =mailpassword =hosts =127.0.0.1dbname =mailtable =mailboxselect_field =CONCAT(domain, '/', local_part)where_field =usernameadditional_conditions =and active ='1'

Once done, save and exit the configuration file.

We are now going to create the Postfix header-checking directives. These directives remove certain headers when relaying mail through the system. This helps improve privacy for sending users by removing specific headers like origin IP Address and the mail software identifiers. Copy and paste the below content into the file.

nano /etc/postfix/header_checks
/^Received:/ IGNORE/^User-Agent:/ IGNORE/^X-Mailer:/ IGNORE/^X-Originating-IP:/ IGNORE/^x-cr-[a-z]*:/ IGNORE/^Thread-Index:/ IGNORE

Once done, save and exit.

We are now ready to make some changes to the system default Postfix /etc/postfix/main.cf configuration file.

This file contains a large amount of complex choices and options for a Postfix server installation. It is far beyond the scope of this article to explain every option or best practice available, so we strongly suggest that you read through the Postfix configuration options /usr/share/postfix/main.cf.dist or the software vendor online manual. O’Reilly has also published a very good book named Postfix:The Definitive Guide .

First, we are going to create a backup of the original main.cf configuration file and then create a new copy of the file.

mv /etc/postfix/main.cf /etc/postfix/main.cf.originalnano /etc/postfix/main.cf

Now, copy the below content into the /etc/postfix/main.cf configuration file.

# See /usr/share/postfix/main.cf.dist for a commented, more complete version # The first text sent to a connecting process.smtpd_banner =$myhostname ESMTP $mail_namebiff =no# appending .domain is the MUA's job.append_dot_mydomain =noreadme_directory =no # SASL parameters# ---------------------------------# Use Dovecot to authenticate.smtpd_sasl_type =dovecot# Referring to /var/spool/postfix/private/authsmtpd_sasl_path =private/authsmtpd_sasl_auth_enable =yesbroken_sasl_auth_clients =yessmtpd_sasl_security_options =noanonymoussmtpd_sasl_local_domain =smtpd_sasl_authenticated_header =yes # TLS parameters# --------------------------------- # Replace this with your SSL certificate path if you are using one.smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pemsmtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key# The snakeoil self-signed certificate has no need for a CA file. But# if you are using your own SSL certificate, then you probably have# a CA certificate bundle from your provider. The path to that goes# here.#smtpd_tls_CAfile=/path/to/ca/file smtp_tls_note_starttls_offer =yessmtpd_tls_loglevel =1smtpd_tls_received_header =yessmtpd_tls_session_cache_timeout =3600stls_random_source =dev:/dev/urandom#smtpd_tls_session_cache_database =btree:${data_directory}/smtpd_scache#smtp_tls_session_cache_database =btree:${data_directory}/smtp_scache # Note that forcing use of TLS is going to cause breakage - most mail servers# don't offer it and so delivery will fail, both incoming and outgoing. This is# unfortunate given what various governmental agencies are up to these days. # These are Postfix 2.2 only.## Enable (but don't force) use of TLS on incoming smtp connections.smtpd_use_tls =yessmtpd_enforce_tls =no# Enable (but don't force) use of TLS on outgoing smtp connections.smtp_use_tls =yessmtp_enforce_tls =no # These are Postfix 2.3 and later.## Enable (but don't force) all incoming smtp connections to use TLS.smtpd_tls_security_level =may# Enable (but don't force) all outgoing smtp connections to use TLS.smtp_tls_security_level =may # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for# information on enabling SSL in the smtp client. # SMTPD parameters# --------------------------------- # Uncomment the next line to generate "delayed mail" warnings#delay_warning_time =4h# will it be a permanent error or temporaryunknown_local_recipient_reject_code =450# how long to keep message on queue before return as failed.# some have 3 days, I have 16 days as I am backup server for some people# whom go on holiday with their server switched off.maximal_queue_lifetime =7d# max and min time in seconds between retries if connection failedminimal_backoff_time =1000smaximal_backoff_time =8000s# how long to wait when servers connect before receiving rest of datasmtp_helo_timeout =60s# how many address can be used in one message.# effective stopper to mass spammers, accidental copy in whole address list# but may restrict intentional mail shots.smtpd_recipient_limit =16# how many error before back off.smtpd_soft_error_limit =3# how many max errors before blocking it.smtpd_hard_error_limit =12 # This next set are important for determining who can send mail and relay mail# to other servers. It is very important to get this right - accidentally producing# an open relay that allows unauthenticated sending of mail is a Very Bad Thing.## You are encouraged to read up on what exactly each of these options accomplish. # Requirements for the HELO statementsmtpd_helo_restrictions =permit_mynetworks, warn_if_reject reject_non_fqdn_hostname, reject_invalid_hostname, permit# Requirements for the sender detailssmtpd_sender_restrictions =permit_sasl_authenticated, permit_mynetworks, warn_if_reject reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_pipelining, permit# Requirements for the connecting server# This is primarily the RBL (Realtime Blacklist) Filteringsmtpd_client_restrictions =reject_rbl_client b.barracudacentral.org, reject_rbl_client zen.spamhaus.org, reject_rbl_client spam.dnsbl.sorbs.net# Requirement for the recipient address. Note that the entry for# "check_policy_service inet:127.0.0.1:10023" enables Postgrey.smtpd_recipient_restrictions =reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023, permitsmtpd_data_restrictions =reject_unauth_pipelining# This is a new option as of Postfix 2.10+, and is required in addition to# smtpd_recipient_restrictions for things to work properly in this setup.smtpd_relay_restrictions =reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023, permit # require proper helo at connectionssmtpd_helo_required =yes# waste spammers time before rejecting themsmtpd_delay_reject =yesdisable_vrfy_command =yes # General host and delivery info# ---------------------------------- myhostname =mail.example.commyorigin =/etc/hostname# Some people see issues when setting mydestination explicitly to the server# subdomain, while leaving it empty generally doesn't hurt. So it is left empty here.# mydestination =mail.example.com, localhostmydestination =# If you have a separate web server that sends outgoing mail through this# mailserver, you may want to add its IP address to the space-delimited list in# mynetworks, e.g. as 111.222.333.444/32.mynetworks =127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128mailbox_size_limit =0recipient_delimiter =+inet_interfaces =allmynetworks_style =host # This specifies where the virtual mailbox folders will be located.virtual_mailbox_base =/var/vmail# This is for the mailbox location for each user. The domainaliases# map allows us to make use of Postfix Admin's domain alias feature.virtual_mailbox_maps =mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf# and their user idvirtual_uid_maps =static:150# and group idvirtual_gid_maps =static:8# This is for aliases. The domainaliases map allows us to make# use of Postfix Admin's domain alias feature.virtual_alias_maps =mysql:/etc/postfix/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/mysql_virtual_alias_domainaliases_maps.cf# This is for domain lookups.virtual_mailbox_domains =mysql:/etc/postfix/mysql_virtual_domains_maps.cf # Integration with other packages# --------------------------------------- # Tell postfix to hand off mail to the definition for dovecot in master.cfvirtual_transport =dovecotdovecot_destination_recipient_limit =1 # Use amavis for virus and spam scanningcontent_filter =amavis:[127.0.0.1]:10024 # Header manipulation# -------------------------------------- # Getting rid of unwanted headers. See:https://posluns.com/guides/header-removal/header_checks =regexp:/etc/postfix/header_checks# getting rid of x-original-toenable_original_recipient =no

Once done, save and exit.

We are now ready to move on to the Postfix /etc/postfix/master.cf konfigurační soubor. This configuration file also contains a large amount of complex choices and options for a Postfix server installation that is far beyond the scope of this article to explain.

We are going to create a backup of the original master.cf configuration file and then create a new file.

mv /etc/postfix/master.cf /etc/postfix/master.cf.originalnano /etc/postfix/master.cf

Now, copy the below content into the /etc/postfix/master.cf configuration file.

## Postfix master process configuration file. For details on the format# of the file, see the master(5) manual page (command:"man 5 master").## Do not forget to execute "postfix reload" after editing this file.## ==========================================================================# service type private unpriv chroot wakeup maxproc command + args# (yes) (yes) (yes) (never) (100)# ==========================================================================# SMTP on port 25, unencrypted.smtp inet n - - - - smtpd#smtp inet n - - - 1 postscreen#smtpd pass - - - - - smtpd#dnsblog unix - - - - 0 dnsblog#tlsproxy unix - - - - 0 tlsproxy # SMTP with TLS on port 587.submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_enforce_tls=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination,reject -o smtpd_sasl_tls_security_options=noanonymous # SMTP over SSL on port 465.smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_tls_auth_only=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination,reject -o smtpd_sasl_security_options=noanonymous,noplaintext -o smtpd_sasl_tls_security_options=noanonymous #628 inet n - - - - qmqpdpickup fifo n - - 60 1 pickup -o content_filter=-o receive_override_options=no_header_body_checkscleanup unix n - - - 0 cleanupqmgr fifo n - n 300 1 qmgr#qmgr fifo n - n 300 1 oqmgrtlsmgr unix - - - 1000? 1 tlsmgrrewrite unix - - - - - trivial-rewritebounce unix - - - - 0 bouncedefer unix - - - - 0 bouncetrace unix - - - - 0 bounceverify unix - - - - 1 verifyflush unix n - - 1000? 0 flushproxymap unix - - n - - proxymapproxywrite unix - - n - 1 proxymapsmtp unix - - - - - smtprelay unix - - - - - smtp# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5showq unix n - - - - showqerror unix - - - - - errorretry unix - - - - - errordiscard unix - - - - - discardlocal unix - n n - - localvirtual unix - n n - - virtuallmtp unix - - - - - lmtpanvil unix - - - - 1 anvilscache unix - - - - 1 scache## ====================================================================# Interfaces to non-Postfix software. Be sure to examine the manual# pages of the non-Postfix software to find out what options it wants.## Many of the following services use the Postfix pipe(8) delivery# agent. See the pipe(8) man page for information about ${recipient}# and other message envelope options.# ====================================================================## maildrop. See the Postfix MAILDROP_README file for details.# Also specify in main.cf:maildrop_destination_recipient_limit=1#maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}## ====================================================================## Recent Cyrus versions can use the existing "lmtp" master.cf entry.## Specify in cyrus.conf:# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4## Specify in main.cf one or more of the following:# mailbox_transport =lmtp:inet:localhost# virtual_transport =lmtp:inet:localhost## ====================================================================## Cyrus 2.1.5 (Amos Gouaux)# Also specify in main.cf:cyrus_destination_recipient_limit=1##cyrus unix - n n - - pipe# user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}## ====================================================================# Old example of delivery via Cyrus.##old-cyrus unix - n n - - pipe# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}## ====================================================================## See the Postfix UUCP_README file for configuration details.#uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)## Other external delivery methods.#ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipientscalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} # The next two entries integrate with Amavis for anti-virus/spam checks.amavis unix - - - - 3 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20127.0.0.1:10025 inet n - - - - smtpd -o content_filter=-o local_recipient_maps=-o relay_recipient_maps=-o smtpd_restriction_classes=-o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions=-o smtpd_sender_restrictions=-o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions=-o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks # Integration with Dovecot - hand mail over to it for local delivery, and# run the process under the vmail user and mail group.dovecot unix - n n - - pipe flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/dovecot-lda -d $(recipient)

Once done, save and exit.

We are now ready to restart all of the mail services and test the server.

service postfix restartservice spamassassin restartservice clamav-daemon restartservice amavis restartservice dovecot restart

While testing your new mail server, make sure to watch the log files closely for any errors or unusual responses.
The mail server log files are located here:

  • General Logging:/var/log/mail.log
  • Error Logging:/var/log/mail.err

[Back to top]

14 – Reverse DNS Lookup

You will now need to set up reverse DNS lookup for your mail server.
Reverse DNS is IP-address-to-domain-name mapping – the opposite of forward (normal) DNS which maps domain names to IP addresses. Reverse DNS is mostly used by people for such things as tracking where a website visitor came from or where an email message originated, for example. Reverse DNS is also important for mail server applications. Many email servers on the Internet are configured to reject incoming emails from any IP address which does not have reverse DNS record configured.

Unless you also administer your own DNS server, you can update reverse DNS with your ISP (Internet Service Provider) or via the hosting provider of your server.

[Back to top]

15 – Install RoundCube Webmail

Now we are going to install the RoundCube Webmail application. This application will allow your remote users to connect to their mailbox through a web browser.

apt-get install roundcube roundcube-mysql roundcube-plugins roundcube-plugins-extra

During the installation process, the system will ask you the prerequisite install questions. Note:you will need the password for the MySQL root user you set up in Step 2.

Configure database for roundcube with dbconfig-common?>> Select 'YES'Database type to be used by roundcube:>> Select 'mysql'Password of the database's administrative user:>> Enter the 'root' MySQL password that you created.MySQL application password for roundcube:>> Enter a new secure password for the RoundCube application to use.

Once you are finished with the pre-installation questions, you should see the following output. Double check the output to make sure there are not errors posted during the installation process.

dbconfig-common:writing config to /etc/dbconfig-common/roundcube.conf Creating config file /etc/dbconfig-common/roundcube.conf with new versionCreating config file /etc/roundcube/debian-db.php with new versiongranting access to database roundcube for [email protected]:success.verifying access for [email protected]:success.creating database roundcube:success.verifying database roundcube exists:success.populating database via sql... done.dbconfig-common:flushing administrative passwordCreating config file /etc/roundcube/main.inc.php with new versionapache2_invoke:Enable configuration roundcube.conf * Reloading web server apache2 * * Reloading web server apache2 * Setting up roundcube (0.9.5-4) ...Setting up roundcube-plugins (0.9.5-4) ...Setting up roundcube-plugins-extra (0.9.2-20130819) ...Processing triggers for dictionaries-common (1.20.5) ...aspell-autobuildhash:processing:en [en-common]aspell-autobuildhash:processing:en [en-variant_0]aspell-autobuildhash:processing:en [en-variant_1]aspell-autobuildhash:processing:en [en-variant_2]aspell-autobuildhash:processing:en [en-w_accents-only]aspell-autobuildhash:processing:en [en-wo_accents-only]aspell-autobuildhash:processing:en [en_CA-variant_0]aspell-autobuildhash:processing:en [en_CA-variant_1]aspell-autobuildhash:processing:en [en_CA-w_accents-only]aspell-autobuildhash:processing:en [en_CA-wo_accents-only]aspell-autobuildhash:processing:en [en_GB-ise-w_accents-only]aspell-autobuildhash:processing:en [en_GB-ise-wo_accents-only]aspell-autobuildhash:processing:en [en_GB-ize-w_accents-only]aspell-autobuildhash:processing:en [en_GB-ize-wo_accents-only]aspell-autobuildhash:processing:en [en_GB-variant_0]aspell-autobuildhash:processing:en [en_GB-variant_1]aspell-autobuildhash:processing:en [en_US-w_accents-only]aspell-autobuildhash:processing:en [en_US-wo_accents-only]Setting up aspell (0.60.7~20110707-1ubuntu1) ...Processing triggers for dictionaries-common (1.20.5) ...Setting up aspell-en (7.1-0-1) ...Processing triggers for libc-bin (2.19-0ubuntu6.6) ...Processing triggers for dictionaries-common (1.20.5) [email protected]#

Next, we need to customize some of the RoundCube configuration files. First, we are going to add the RoundCube application into our current Apache configuration files using path alias directives. The default configuration file is installed at /etc/apache2/conf-available/roundcube.conf

nano /etc/apache2/conf-available/roundcube.conf

We now need to remove the two comment flags in front of the alias directives. If you would like to use a different alias name, you can change that here as well. The default alias will use the URL http://<your-server-url>/roundcube/

 Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/ Alias /roundcube /var/lib/roundcube

Once done, save and exit the file.

Now we are going to modify the /etc/roundcube/main.inc.php konfigurační soubor. This file is where you can customize the RoundCube advanced settings.

nano /etc/roundcube/main.inc.php

Locate the following directives and update the values to match the following.

$rcmail_config['default_host'] ='localhost';$rcmail_config['default_port'] =143;$rcmail_config['smtp_server'] ='localhost';$rcmail_config['smtp_port'] =25;$rcmail_config['smtp_user'] ='%u';$rcmail_config['smtp_pass'] ='%p';$rcmail_config['force_https'] =true;$rcmail_config['use_https'] =true;

Once done, save and exit the configuration file.

We are now going to enable the php5-mcrypt module in Apache. This will allow for the RoundCube webmail session to use encrypted login sessions. You will also need to restart the Apache service.

php5enmod mcryptservice apache2 restart

You should now be able to use your new RoundCube webmail application for sending and receiving message.

[Back to top]

Blahopřejeme!

You have now setup a fully functional and secure mail server.


Linux
  1. Jak nastavit Zimbra Mail Server na Ubuntu 16

  2. Nastavte server Urbackup na Ubuntu 20.04

  3. Nastavení serveru Rsyslog na Ubuntu 20.04 – Jak na to?

  1. Nastavení serveru Ubuntu 20.04 Minecraft

  2. Nainstalujte poštovní server Postfix a Dovecot na Ubuntu nebo Debian

  3. Nastavte přeposílání pošty v postfixu na Ubuntu nebo Debianu

  1. Nastavení serveru Ubuntu 22.04 Minecraft

  2. Jak nastavit poštovní server Postfix na Ubuntu 16.04 (Dovecot - MySQL)

  3. Jak nastavit OpenVPN na serveru Ubuntu