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