Konfigurace Postfixu a Dovecotu na Ubuntu

Mnoho uživatelů Ubuntu používá systém nejen pro domácí potřeby. Tento přístup je plně oprávněný, protože na Linuxových systémech je mnohem pohodlnější programovat, vytvářet servery a webové stránky. Jednou z výhod je vytvoření e-mailového serveru. Pro začátečníky bude tento úkol hrozně těžký, ale pokud zjistíte, jak nainstalovat a nakonfigurovat poštovní server pro Ubuntu, úkol se vám nebude zdát tak těžký.

Jak nastavit poštovní server založený na Ubuntu.

Trochu teorie

Před specifickým návodem a kvašením kódu nemůže dojít bez zlomku teoretického materiálu. Je důležité pochopit, co je to e-mailový server a jak funguje.

Konfigurovaný poštovní server, aby to bylo velmi jednoduché, je pošťák, který obdrží „dopis“ od jednoho e-mailového klienta a dá jej jinému. V tomto, v zásadě, celá podstata práce tohoto softwaru. Poštovní server je potřeba nejen pro odesílání e-mailů. Na stránkách je zodpovědný za registraci uživatelů, odesílání formulářů a dalších důležitých akcí, bez nichž by se stránky staly jako kniha, na kterou se můžete podívat pouze otočením stránek, ale je těžké něco udělat.

Poštovní servery v Linuxu se výrazně liší od serverů Windows a jiných systémů. V systému Windows se jedná o hotový uzavřený program, který lze začít používat. Distribuce Linuxu také vyžadují vlastní ladění všech komponent. A server se nakonec bude skládat z ne jednoho programu, ale několika. Budeme používat Postfix v kombinaci s Dovecot a MySQL.

Proč Postfix?

V Ubuntu je několik e-mailových klientů, ale stále jsme si vybrali tento. Nastavení Posfixu na Ubuntu je mnohem jednodušší než stejné SendMail, což je důležité pro začínajícího uživatele. V kombinaci s Dovecotem je Postfix schopen udělat vše, co je obvykle vyžadováno od poštovních serverů.

Postfix je přímo agentem pro přenos pošty. Bude hrát významnou roli v celém podání. Jedná se o open source program, který mnoho serverů a webových stránek používá ve výchozím nastavení. Dovecot je agent pro doručování pošty. Jeho hlavní úlohou je zajistit zabezpečení serveru. MySQL je ideální systém pro správu databází (DBMS) pro všechny weby. Je třeba zpracovávat informace, které dostáváme od uživatelů našeho serveru.

Teoretická část je u konce. Nyní stojí za to jít do praxe.

Vytvořit poštovní server

Co je třeba nakonfigurovat před instalací poštovního serveru?

  • MySQL;
  • DNS zóna, musíte mít osobní FDQN. Dále budeme používat jménohost.

Instalace

Nainstalujte program:

apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql

Když se objeví konfigurační okno Postfixu, budeme muset vybrat „Internetovou stránku“.

Níže budeme vyzváni k zadání názvu domény, použijte "primer.ru".

Nastavení MySQL

Nyní je třeba nakonfigurovat tři tabulky pro data v MySQL: pro domény, uživatele a pro tzv. Aliasy - aliasy nebo další poštovní schránky uživatelů. Zde nebudeme podrobně diskutovat konfiguraci databáze MySQL.

Zavolejme databázi examplemail. Vytvořte databázi s následujícím názvem:

mysqladmin -p vytvořit servermail

Přihlášení v MySQL:

mysql -u root –p

Poté zadejte heslo. Pokud bude vše provedeno správně, bude v terminálu zadána položka:

mysql>

Vytvořit nového uživatele speciálně pro přihlášení do sítě:

mysql> GRANT SELECT ON examplemail. * TO 'usermail'@'127.0.0.1' IDENTIFIKOVANO 'heslem';

Nyní restartujte MySQL, abyste se ujistili, že všechny změny byly úspěšně aplikovány.

Naše databáze slouží k vytváření tabulek na základě této databáze:

mysql> USE examplemail;

Vytvořit tabulku pro domény:

CREATE TABLE `virtual_domains` (

`id` INT NOT NULL AUTO_INCREMENT,

`name` VARCHAR (50) NOT NULL,

PRIMARY KEY (`id`)

) MOTOR = VÝCHOZÍ VÝCHOZÍ CHARSET = utf8;

Vytvořit tabulku pro uživatele:

CREATE TABLE `virtual_users` (

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NOT NULL,

`password` VARCHAR (106) NOT NULL,

`email` VARCHAR (120) NOT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY "email" ("email"),

FOREIGN KEY (domain_id) REFERENCE virtual_domains (id) ON DELETE CASCADE

) MOTOR = VÝCHOZÍ VÝCHOZÍ CHARSET = utf8;

Zde, jak vidíte, přidali e-mail a heslo. A každý uživatel je vázán na doménu.

Nakonec vytvořte tabulku pro pseudonymy:

CREATE TABLE `virtual_aliases` (

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NOT NULL,

`source` varchar (100) NOT NULL,

`destination` varchar (100) NOT NULL,

PRIMARY KEY (`id`),

FOREIGN KEY (domain_id) REFERENCE virtual_domains (id) ON DELETE CASCADE

) MOTOR = VÝCHOZÍ VÝCHOZÍ CHARSET = utf8;

Úspěšně jsme nakonfigurovali MySQL a vytvořili tři potřebné tabulky. Nyní musíte řešit domény a e-maily.

Domény, e-mailové adresy a aliasy

Přidejte doménu do tabulky s doménami. Zde musí být zadáno FDQN:

INSERT INTO `examplemail`.`virtual_domains`

(`id`, ` name`)

HODNOTY

('1', 'example.com'),

('2', 'namehost.example.com');

Do tabulky uživatelů přidejte data o e-mailové adrese:

INSERT INTO `examplemail`.`virtual_users`

(`id`, ` domain_id`, `password`, ` email`)

HODNOTY

('1', '1', ENCRYPT ('firstpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16)), ' '),

('2', '1', ENCRYPT ('secondpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16)), ' ');

Nyní přidejte informace do poslední tabulky:

INSERT INTO `examplemail`.`virtual_aliases`

(`id`, ` domain_id`, `source`, ` destination`)

HODNOTY

('1', '1', ' ', ' ');

Zavřít MySQL:

mysql> exit

Nastavení Postfixu

Přesun přímo k parametrům Postfix. Potřebujeme, aby poštovní klient odesílal zprávy jménem uživatelů zadaných do databáze a zpracovával připojení SMTP. Nejprve vytvoříme zálohu konfiguračního souboru, v tomto případě bylo možné vrátit se na výchozí nastavení:

cp /etc/postfix/main.cf /etc/postfix/main.cf.orig

Nyní otevřete konfigurační soubor:

nano /etc/postfix/main.cf

Místo nano můžete použít libovolný textový editor, který se vám líbí.

Budeme komentovat parametry TLS a také přidávat další. Zde se používá SSL zdarma:

# Parametry TLS

# smtpd_tls_cert_file = / etc / ssl / certs / ssl-cert-snakeoil.pem

# smtpd_tls_key_file = / etc / ssl / private / ssl-cert-snakeoil.key

# smtpd_use_tls = yes

#smtpd_tls_session_cache_database = btree: $ {data_directory} / smtpd_scache

#smtp_tls_session_cache_database = btree: $ {data_directory} / smtp_scache

smtpd_tls_cert_file = / etc / ssl / certs / dovecot.pem

smtpd_tls_key_file = / etc / ssl / private / dovecot.pem

smtpd_use_tls = yes

smtpd_tls_auth_only = yes

Poté přidáme další parametry:

smtpd_sasl_type = dovecot

smtpd_sasl_path = private / auth

smtpd_sasl_auth_enable = yes

smtpd_recipient_restrictions =

allow_sasl_authenticated,

allow_mynetworks

reject_unauth_destination

Také musíme komentovat nastavení mydestination a změnit je na localhost:

#mydestination = example.com, namehost.example.com, localhost.example.com, localhost

mydestination = localhost

Parametr myhostname by měl obsahovat naše doménové jméno:

myhostname = namehost.example.com

Nyní přidejte řádek pro odesílání zpráv do všech domén uvedených v tabulce MySQL:

virtual_transport = lmtp: unix: private / dovecot-lmtp

Přidejte další tři parametry, aby se Postfix mohl připojit k tabulkám MySQL:

virtual_mailbox_domains = mysql: /etc/postfix/mysql-virtual-mailbox-domains.cf

virtual_mailbox_maps = mysql: /etc/postfix/mysql-virtual-mailbox-maps.cf

virtual_alias_maps = mysql: /etc/postfix/mysql-virtual-alias-maps.cf

Nastavení souborů MySQL a Postfix

Vytvořit soubor

mysql-virtual-mailbox-domains.cf

Přidejte k ní tyto hodnoty:

user = usermail

password = mailpassword

hosts = 127.0.0.1

dbname = examplemail

query = SELECT 1 FROM virtual_domains WHERE name = '% s'

Restartovat Postfix:

restartování služby postfix

Testovací doména pro Postfix:

postmap -q example.com mysql: /etc/postfix/mysql-virtual-mailbox-domains.cf

Vytvořit jiný soubor:

nano /etc/postfix/mysql-virtual-mailbox-maps.cf

user = usermail

password = mailpassword

hosts = 127.0.0.1

dbname = examplemail

query = SELECT 1 FROM virtual_users KDE e-mail = '% s'

Restartovat Postfix:

restartování služby postfix

Znovu zkontrolujte Postfix:

postmap -q mysql: /etc/postfix/mysql-virtual-mailbox-maps.cf

Pokud se provede správně, mělo by se zobrazit

Vytvořit poslední soubor pro aliasy:

nano /etc/postfix/mysql-virtual-alias-maps.cf

user = usermail

password = mailpassword

hosts = 127.0.0.1

dbname = examplemail

query = cíl SELECT FROM virtual_aliases WHERE source = '% s'

Restartovat:

restartování služby postfix

Naposledy testujeme:

postmap -q mysql: /etc/postfix/mysql-virtual-alias-maps.cf

Nastavení holubice

Zálohujeme sedm souborů, které budou změněny:

cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig

Toto je ukázkový příkaz. Pro tyto soubory zadejte šest dalších:

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

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

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

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

/etc/dovecot/conf.d/10-ssl.conf

Otevřete první soubor:

nano /etc/dovecot/dovecot.conf

Zkontrolujte, zda je tento parametr komentován:

! obsahovat conf.d / *. conf

Zadejte:

! include_try /usr/share/dovecot/protocols.d/*.protocol

protocol = imap lmtp

Místo:

! include_try /usr/share/dovecot/protocols.d/*.protocol

Upravit následující soubor:

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

Najděte řádek mail_location, odeberte komentář, nastavte následující parametr:

mail_location = maildir: / var / mail / vhosts /% d /% n

Najít mail_privileged_group, umístit:

mail_privileged_group = mail

Kontrolujeme přístup. Zadejte příkaz:

ls -ld / var / mail

Přístup by měl vypadat takto:

drwxrwsr-x 3 root vmail 4096 24.ledna 21:23 / var / mail

Vytvořte složku pro každou registrovanou doménu:

mkdir -p /var/mail/vhosts/example.com

Vytvořit uživatele a skupinu s ID 5000:

groupadd -g 5000 vmail

useradd -g vmail -u 5000 vmail -d / var / mail

Změnit vlastníka na uživatele VMail:

chown -R vmail: vmail / var / mail

Upravit následující soubor:

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

Odznačte ověřovací text a přidejte řádek:

disable_plaintext_auth = yes

Změnit následující parametr:

auth_mechanisms = prosté přihlášení

Komentář k tomuto řádku:

#! include auth-system.conf.ext

Přidat autorizaci MySQL, komentovat řádek:

! včetně auth-sql.conf.ext

Vytvořit soubor s daty pro ověření:

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

Zde zadejte následující:

passdb {

driver = sql

args = /etc/dovecot/dovecot-sql.conf.ext

}

userdb {

driver = statický

args = uid = vmail gid = vmail home = / var / mail / vhosts /% d /% n

}

Upravit následující soubor:

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

Nastavte parametr MySQL a komentujte:

driver = mysql

Odznačit a zadat:

connect = host = 127.0.0.1 dbname = servermail user = heslo uživatele = mailpassword

Najděte řádek default_pass_scheme, odkomentujte a zadejte parametr:

default_pass_scheme = SHA512-CRYPT

Odpověď a zavedení nového parametru:

password_query = SELECT email jako uživatel, heslo FROM virtual_users WHERE email = '% u';

Změnit vlastníka:

chown -R vmail: dovecot / etc / dovecot

chmod -R o-rwx / etc / dovecot

Otevřít a upravit soubor:

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

Nezobrazovat a zadat parametr:

služba imap-login {

inet_listener imap {

port = 0

}

Zadejte:

služba lmtp {

unix_listener / var / spool / postfix / private / dovecot-lmtp {

mode = 0600

user = postfix

group = postfix

}

#inet_listener lmtp {

# Vyvarujte se viditelnosti LMTP pro internet

#address =

#port =

#}

}

Změnit následující konfiguraci:

service auth {

unix_listener / var / spool / postfix / private / auth {

mode = 0666

user = postfix

group = postfix

}

unix_listener auth-userdb {

mode = 0600

user = vmail

#group =

}

#unix_listener / var / spool / postfix / private / auth {

# mode = 0666

#}

user = dovecot

}

Změnit poslední konfiguraci v tomto souboru:

service auth-worker {

# Autorizační proces

# / etc / shadow. Pokud to není nutné

# $ default_internal_user.

user = vmail

}

Nakonec jsme vytvořili poštovní server na Ubuntu. Můžete také přidat konfiguraci SSL nebo použít výchozí. Pro ochranu proti spamu můžete nakonfigurovat Spam Assassin pro práci s naším serverem.

K zadání těchto informací použijte standardní e-mailový klient:

  • Uživatelské jméno:
  • Heslo: email1
  • IMAP: example.com
  • SMTP: example.com