Mnogi uporabniki Ubuntuja uporabljajo sistem ne samo za domače potrebe. Ta pristop je popolnoma upravičen, saj je na Linux-sistemih veliko bolj priročno programiranje, ustvarjanje strežnikov in spletnih strani. Ena od ugodnosti je ustvarjanje e-poštnega strežnika. Za začetnike se bo ta naloga zdela zelo težka, če pa ugotovite, kako namestite in konfigurirate poštni strežnik za Ubuntu, se vam ta naloga ne bo zdela tako težka.
Kako nastaviti poštni strežnik na osnovi Ubuntuja.
Malo teorije
Pred določenimi navodili in fermentacijo kode ne moremo narediti brez dela teoretičnega gradiva. Pomembno je razumeti, kaj je e-poštni strežnik in kako deluje.
Konfiguriran poštni strežnik, povedano preprosto, je poštar, ki prejme »pismo« od enega e-poštnega odjemalca in ga posreduje drugemu. V tem, načeloma, celotno bistvo dela te programske opreme. Strežnik za pošto ni potreben samo za pošiljanje e-pošte. Na spletnih straneh je odgovoren za registracijo uporabnikov, pošiljanje obrazcev in drugih pomembnih akcij, brez katerih bi spletna stran postala kot knjiga, ki jo lahko pogledate le z obračanjem strani, vendar je težko nekaj storiti.
Poštni strežniki v Linuxu se bistveno razlikujejo od tistih v Windows in drugih sistemih. V operacijskem sistemu Windows je to že pripravljen zaprti program, ki ga lahko začnete uporabljati. Distribucije Linuxa zahtevajo tudi samoprilagajanje vseh komponent. In strežnik bo sčasoma sestavljen iz ne enega programa, ampak več. Postfix bomo uporabili v kombinaciji z Dovecot in MySQL.
Zakaj Postfix?
Na Ubuntuju je več e-poštnih odjemalcev, vendar smo še vedno izbrali to. Namestitev Posfixa na Ubuntu je veliko lažja kot ista SendMail, kar je pomembno za začetnike. V kombinaciji z Dovecotom lahko Postfix naredi vse, kar je običajno potrebno od poštnih strežnikov.
Postfix je neposredno posrednik za pošiljanje pošte. Imel bo pomembno vlogo pri celotni predložitvi. To je odprtokodni program, ki ga privzeto uporabljajo mnogi strežniki in spletna mesta. Dovecot je agent za dostavo pošte. Njegova glavna naloga je zagotoviti varnost strežnika. MySQL je idealen sistem za upravljanje baz podatkov (DBMS) za vse strani. Potrebno je za obdelavo podatkov, ki jih prejmemo od uporabnikov našega strežnika.
Torej, s teoretičnim delom je konec. Zdaj je vredno iti v prakso.
Ustvarite poštni strežnik
Kaj je treba konfigurirati pred namestitvijo poštnega strežnika?
- MySQL;
- DNS cono, morate imeti osebni FDQN. Naprej bomo uporabili namehost.
Namestitev
Namestite program:
apt-get install postfix postfix-mysql dovecot-jedro dovecot-imapd dovecot-lmtpd dovecot-mysql
Ko se prikaže konfiguracijsko okno Postfix, bomo morali izbrati »spletno stran«.
Spodaj boste morali vnesti ime domene, uporabite "primer.ru".
Nastavitev MySQL
Zdaj moramo konfigurirati tri tabele za podatke v MySQL: za domene, uporabnike in za ti Alias - alias ali dodatne uporabniške nabiralnike. Tukaj ne bomo podrobno razpravljali o konfiguraciji baze podatkov MySQL.
Pokličimo zbirko podatkov primerkov. Ustvarite bazo podatkov z naslednjim imenom:
mysqladmin -p ustvarjanje strežnika
Prijava v MySQL:
mysql -u root –p
Nato vnesite geslo. Če je vse narejeno pravilno, bo v terminalu vpisan:
mysql>
Ustvarite novega uporabnika, posebej za prijavo v omrežje:
mysql> GRANT SELECT ON na primer. * TO 'usermail'@'127.0.0.1' IDENTIFIED BY 'password';
Zdaj znova zaženite MySQL in se prepričajte, da so vse spremembe uspešno izvedene.
S svojo bazo podatkov ustvarjamo tabele, ki temeljijo na njej:
mysql> Primer uporabnika USE;
Ustvarite tabelo za domene:
CREATE TABLE "virtual_domains" (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR (50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
Ustvarite tabelo za uporabnike:
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"),
ZUNANJA KLJUČ (domain_id) REFERENCE virtual_domains (id) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
Tukaj, kot lahko vidite, dodate e-pošto in geslo. In vsak uporabnik je vezan na domeno.
Končno ustvarite tabelo za psevdonime:
CREATE TABLE `virtual_aliases` (
`id` INT NOT NULL AUTO_INCREMENT,
`domain_id 'INT NOT NULL,
"source" varchar (100) NOT NULL,
`destinacija` varchar (100) NOT NULL,
PRIMARY KEY ("id"),
ZUNANJA KLJUČ (domain_id) REFERENCE virtual_domains (id) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
MySQL smo uspešno konfigurirali in ustvarili tri potrebne tabele. Zdaj morate obravnavati domene in e-pošto.
Domene, e-poštni naslovi in vzdevki
Dodamo domeno v tabelo z domenami. Vnesite FDQN:
INSERT INTO `examplemail`.`virtual_domains`
(`id`, ` name`)
VREDNOSTI
('1', 'example.com'),
('2', 'namehost.example.com');
V tabelo uporabnikov dodajte podatke o e-poštnem naslovu:
INSERT INTO `examplemail`.`virtual_users`
(`id`, ` domain_id`, `password`, ` email`)
VREDNOSTI
('1', '1', ENCRYPT ('firstpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16))), ' '),
('2', '1', ENCRYPT ('secondpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16))), ' ');
Sedaj dodajte podatke v zadnjo tabelo:
INSERT INTO `examplemail`.`virtual_aliases`
(`id`, ` domain_id`, `source`, ` destination`)
VREDNOSTI
('1', '1', ' ', ' ');
Zapri MySQL:
mysql> exit
Postfix Postavljanje
Premik neposredno na parametre Postfix. Potrebujemo poštnega odjemalca za pošiljanje sporočil v imenu uporabnikov, ki so vneseni v bazo podatkov in za upravljanje povezave SMTP. Za začetek bomo izdelali varnostno kopijo konfiguracijske datoteke, pri čemer se je bilo mogoče vrniti na privzete nastavitve:
cp /etc/postfix/main.cf/etc/postfix/main.cf.orig
Zdaj odprite konfiguracijsko datoteko:
nano /etc/postfix/main.cf
Namesto nano lahko uporabite kateri koli urejevalnik besedila, ki vam ustreza.
Opredelili bomo parametre TLS in dodali še druge. Tu se uporablja prost SSL:
# Parametri 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 = da
smtpd_tls_auth_only = da
Po tem bomo dodali še nekaj parametrov:
smtpd_sasl_type = dovecot
smtpd_sasl_path = private / auth
smtpd_sasl_auth_enable = da
smtpd_recipient_restrictions =
permit_sasl_authenticated,
allow_mynetworks
reject_unauth_destination
Prav tako moramo komentirati nastavitve mydestination in jih spremeniti v localhost:
#mydestination = example.com, namehost.example.com, localhost.example.com, localhost
mydestination = localhost
Parameter myhostname mora vsebovati naše ime domene:
myhostname = namehost.example.com
Sedaj dodajte vrstico za pošiljanje sporočil vsem domenam, ki so navedene v tabeli MySQL:
virtual_transport = lmtp: unix: private / dovecot-lmtp
Dodajte še tri parametre, da se lahko Postfix poveže s tabelami 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
Nastavitev datotek MySQL in Postfix
Ustvarite datoteko
mysql-virtual-mailbox-domains.cf
Dodajte te vrednosti:
user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = examplemail
query = SELECT 1 FROM virtual_domains WHERE ime = '% s'
Znova zaženite Postfix:
ponovni zagon postfixa
Preizkusite domeno za Postfix:
postmap -q example.com mysql: /etc/postfix/mysql-virtual-mailbox-domains.cf
Ustvari drugo datoteko:
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 WHERE email = '% s'
Ponovni zagon Postfixa:
ponovni zagon postfixa
Nato znova preverite Postfix:
postmap -q mysql: /etc/postfix/mysql-virtual-mailbox-maps.cf
Če je pravilno opravljeno, se prikaže
Ustvarite zadnjo datoteko za vzdevke:
nano /etc/postfix/mysql-virtual-alias-maps.cf
user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = examplemail
query = IZBERI destinacijo OD virtual_aliases WHERE vir = '% s'
Ponovni zagon:
ponovni zagon postfixa
Zadnjič, ko testiramo:
postmap -q mysql: /etc/postfix/mysql-virtual-alias-maps.cf
Nastavitev golobčkov
Izdelujemo varnostne kopije za sedem datotek, ki bodo spremenjene:
cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
To je vzorčni ukaz. Za te datoteke vnesite šest več:
/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
Odprite prvo datoteko:
nano /etc/dovecot/dovecot.conf
Preverite, ali je ta parameter komentiran:
vključujejo conf.d / * .konf
Vnesite:
! include_try /usr/share/dovecot/protocols.d/*.protocol
protocol = imap lmtp
Namesto:
! include_try /usr/share/dovecot/protocols.d/*.protocol vrstica
Uredite naslednjo datoteko:
nano /etc/dovecot/conf.d/10-mail.conf
Poiščite vrstico mail_location, odstranite komentar, nastavite naslednji parameter:
mail_location = maildir: / var / mail / vhosts /% d /% n
Poišči mail_privileged_group, postavi:
mail_privileged_group = mail
Preverjamo dostop. Vnesite ukaz:
ls -ld / var / mail
Dostop mora izgledati takole:
drwxrwsr-x 3 root vmail 4096 Jan 24 21:23 / var / mail
Ustvarite mapo za vsako registrirano domeno:
mkdir -p /var/mail/vhosts/example.com
Ustvarite uporabnika in skupino z ID-jem 5000:
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d / var / mail
Spremenite lastnika v uporabnika VMail:
chown -R vmail: vmail / var / mail
Uredite naslednjo datoteko:
nano /etc/dovecot/conf.d/10-auth.conf
Odkomentirajte besedilo za preverjanje pristnosti in dodajte vrstico:
disable_plaintext_auth = da
Spremenite naslednji parameter:
auth_mechanisms = navadna prijava
Komentiranje te vrstice:
#! include auth-system.conf.ext
Dodajte pooblastilo MySQL, komentirajte vrstico:
! vključuje auth-sql.conf.ext
Ustvarite datoteko s podatki za preverjanje pristnosti:
nano /etc/dovecot/conf.d/auth-sql.conf.ext
Vnesite naslednje:
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
voznik = statična
args = uid = vmail gid = vmail dom = / var / mail / vhosts /% d /% n
}
Uredite naslednjo datoteko:
nano /etc/dovecot/dovecot-sql.conf.ext
Nastavite parameter MySQL in komentirajte:
voznik = mysql
Odstrani komentar in vnesite:
connect = gostitelj = 127.0.0.1 dbname = servermail uporabnik = usermail geslo = mailpassword
Poiščite vrstico default_pass_scheme, uncomment in vnesite parameter:
default_pass_scheme = SHA512-CRYPT
Razveljavitev komentarjev in uvedba novega parametra:
password_query = IZBERI e-pošto kot uporabnika, geslo OD virtual_users WHERE email = '% u';
Spremeni lastnika:
chown -R vmail: dovecot / etc / dovecot
chmod -R o-rwx / etc / dovecot
Odpri in uredi datoteko:
nano /etc/dovecot/conf.d/10-master.conf
Odstrani komentar in vnesite parameter:
storitev imap-login {
inet_listener imap {
port = 0
}
Vnesite:
storitev lmtp {
unix_listener / var / spool / postfix / private / dovecot-lmtp {
način = 0600
user = postfix
group = postfix
}
#inet_listener lmtp {
# Izogibajte se vidljivosti LMTP za internet
#address =
#port =
#}
}
Spremenite naslednjo konfiguracijo:
storitev auth {
unix_listener / var / spool / postfix / private / auth {
način = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
način = 0600
user = vmail
#group =
}
#unix_listener / var / spool / postfix / private / auth {
# način = 0666
#}
uporabnik = dovecot
}
Spremenite zadnjo konfiguracijo v tej datoteki:
storitev za avtorja storitve {
# Avt
# / etc / shadow. Če to ni potrebno
# $ default_internal_user.
user = vmail
}
Torej smo na Ubuntuju končno postavili poštni strežnik. Tukaj lahko dodate tudi konfiguracijo SSL ali uporabite privzeto konfiguracijo. Za zaščito pred neželeno pošto lahko konfigurirate neželeno pošto za delo z našim strežnikom.
Za vnos teh podatkov uporabite standardni e-poštni odjemalec:
- Uporabniško ime:
- Geslo: email1
- IMAP: primer.com
- SMTP: example.com