„Postfix“ ir „Dovecot“ konfigūravimas „Ubuntu“

Daugelis „Ubuntu“ vartotojų naudoja sistemą ne tik namų reikmėms. Šis požiūris yra visiškai pagrįstas, nes Linux sistemose daug patogiau programuoti, kurti serverius ir svetaines. Vienas iš patogumų yra elektroninio pašto serverio sukūrimas. Pradedantiesiems šis uždavinys bus labai sudėtingas, tačiau jei išsiaiškinsite, kaip įdiegti ir konfigūruoti Ubuntu pašto serverį, užduotis jums neatrodo tokia sunki.

Kaip sukurti pašto serverį, pagrįstą Ubuntu.

Truputį teorijos

Prieš konkrečius nurodymus ir kodavimo fermentaciją negalima atlikti be teorinės medžiagos dalies. Svarbu suprasti, kas yra el. Pašto serveris ir kaip jis veikia.

Konfigūruotas pašto serveris, norėdamas jį labai paprasta, yra paštininkas, kuris gauna „laišką“ iš vieno el. Pašto kliento ir suteikia jį kitam. Iš esmės, visa šios programinės įrangos darbo esmė. Pašto serveris reikalingas ne tik el. Laiškams siųsti. Svetainėse jis yra atsakingas už vartotojų registravimą, formų pateikimą ir kitus svarbius veiksmus, be kurių ši svetainė taptų kaip knyga, kurią galite žiūrėti tik sukant puslapius, bet sunku ką nors padaryti.

„Linux“ pašto serveriai žymiai skiriasi nuo „Windows“ ir kitų sistemų serverių. „Windows“ tai yra parengta uždara programa, kuri gali pradėti naudoti tik. Linux platinimui taip pat reikalingas visų komponentų derinimas. Ir serveris galiausiai susideda iš ne vienos programos, bet kelių. Naudosime Postfix kartu su Dovecot ir MySQL.

Kodėl Postfix?

„Ubuntu“ yra keletas el. Pašto klientų, bet mes vis dar pasirinkome šį. „Posfix“ nustatymas „Ubuntu“ yra daug lengviau nei tas pats „SendMail“, ir tai svarbu pradedantiesiems vartotojams. Kartu su „Dovecot“, „Postfix“ gali daryti viską, kas paprastai reikalinga iš pašto serverių.

„Postfix“ yra pats pašto siuntimo agentas. Jis vaidins svarbų vaidmenį visame pareiškime. Tai atviro kodo programa, kurią daugelis serverių ir svetainių naudoja pagal nutylėjimą. Dovecot yra pašto pristatymo agentas. Jo pagrindinis vaidmuo yra užtikrinti serverio saugumą. MySQL yra ideali duomenų bazių valdymo sistema (DBVS) bet kuriai svetainei. Tai reikalinga informacijai, kurią gauname iš mūsų serverio naudotojų.

Taigi, teorinė dalis baigėsi. Dabar verta mokytis.

Sukurti pašto serverį

Kas turėtų būti konfigūruojama prieš įdiegiant pašto serverį?

  • MySQL;
  • DNS zona, turite turėti asmeninį FDQN. Toliau naudosime namehost.

Diegimas

Įdiekite programą:

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

Kai pasirodys „Postfix“ konfigūracijos langas, turėsime pasirinkti „interneto svetainę“.

Žemiau bus paprašyta įvesti domeno vardą, naudokite „primer.ru“.

„MySQL“ sąranka

Dabar reikia sukonfigūruoti tris MySQL duomenų lenteles: domenams, naudotojams ir vadinamiesiems Alias ​​- slapyvardžiams arba papildomoms vartotojų pašto dėžutėms. Čia mes išsamiai neaptarsime MySQL duomenų bazės konfigūracijos.

Paskambinkime „examplemail“ duomenų bazei. Sukurti duomenų bazę su šiuo pavadinimu:

mysqladmin -p sukuria servermailą

Prisijunkite prie „MySQL“:

mysql -u šaknis –p

Tada įveskite slaptažodį. Jei viskas daroma teisingai, terminale bus įrašas:

mysql>

Sukurkite naują naudotoją specialiai, kad galėtumėte prisijungti prie tinklo:

mysql> GRANT SELECT ON examplemail. * TO 'usermail'@'127.0.0.1' IDENTIFIED BY 'password';

Dabar iš naujo paleiskite „MySQL“, kad įsitikintumėte, jog visi pakeitimai sėkmingai taikomi.

Mes naudojame mūsų duomenų bazę, kad sukurtume lenteles pagal ją:

mysql> USE examplemail;

Sukurkite domenų lentelę:

CREATE TABLE `virtual_domains` (

„id` INT NOT NULL AUTO_INCREMENT,

"name" VARCHAR (50) NE NULL,

PRIMARY KEY („id“)

) VARIKLIS = InnoDB DEFAULT CHARSET = utf8;

Sukurkite lentelę naudotojams:

CREATE TABLE `virtual_users` (

„id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NE NULL,

„slaptažodis“ VARCHAR (106) NE NULL,

„email“ VARCHAR (120) NOT NULL,

PRIMARY KEY („id”),

UNIQUE KEY „email“ („el. Paštas“),

UŽSIENIO RODIKLIS (domain_id) NUORODOS virtual_domains (id) ON DELETE CASCADE

) VARIKLIS = InnoDB DEFAULT CHARSET = utf8;

Čia, kaip matote, pridėjote el. Laišką ir slaptažodį. Ir kiekvienas vartotojas yra susietas su domenu.

Galiausiai sukurkite slapyvardžių lentelę:

CREATE TABLE `virtual_aliases` (

„id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NE NULL,

„source` varchar (100) NOT NULL,

„paskirties vieta“ (100) NE NULL,

PRIMARY KEY („id”),

UŽSIENIO RODIKLIS (domain_id) NUORODOS virtual_domains (id) ON DELETE CASCADE

) VARIKLIS = InnoDB DEFAULT CHARSET = utf8;

Mes sėkmingai sukonfigūravome „MySQL“ ir sukūrėme tris būtinas lenteles. Dabar jums reikia spręsti domenus ir el. Laiškus.

Domenai, el. Pašto adresai ir slapyvardžiai

Pridėkime savo domeną prie stalo su domenais. FDQN turi būti įvestas ten:

INSERT INTO `examplemail`.`virtual_domains`

(„id“, „pavadinimas“)

VERTĖS

(„1“, „pavyzdys.lt“),

(„2“, „namehost.example.com“);

Įtraukite duomenis apie el. Pašto adresą į naudotojo lentelę:

INSERT INTO `examplemail```virtual_users`

(„id“, „domain_id“, „slaptažodis“, „el. paštas“)

VERTĖS

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

(„2“, „1“, „ENCRYPT“ („antrasis slaptažodis“, „CONCAT“ („$ 6 $“, SUBSTRING (SHA (RAND ()), -16)), „ “);

Dabar pridėkite informaciją į paskutinę lentelę:

INSERT INTO `examplemail`.`virtual_aliases`

(„id“, „domain_id“, „šaltinis“, „paskirties vieta“)

VERTĖS

(„1“, „1“, „ “, „ “);

Uždaryti „MySQL“:

mysql> išeiti

„Postfix“ sąranka

Tiesioginis perėjimas prie parametrų „Postfix“. Mums reikia pašto kliento siųsti pranešimus vartotojų, įvestų į duomenų bazę, vardu ir tvarkyti SMTP ryšį. Pirmiausia, mes sukursime konfigūracijos failo atsarginę kopiją, tokiu atveju buvo galima grįžti į numatytuosius nustatymus:

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

Dabar atidarykite konfigūracijos failą:

nano /etc/postfix/main.cf

Vietoj nano galite naudoti bet kokį patogų teksto redaktorių.

Komentuosime TLS parametrus ir pridėsime kitus. Čia naudojamas nemokamas SSL:

# TLS parametrai

# 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 = taip

#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 = taip

smtpd_tls_auth_only = taip

Po to pridėsime daugiau parametrų:

smtpd_sasl_type = dovecot

smtpd_sasl_path = privatus / auth

smtpd_sasl_auth_enable = taip

smtpd_recipient_restrictions =

leid_sasl_authenticated,

engedély_mynetworks

atmesti_unauth_destination

Taip pat turime komentuoti „mydestination“ nustatymus ir pakeisti juos į „localhost“:

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

mydestination = localhost

„Myhostname“ parametre turėtų būti mūsų domeno vardas:

myhostname = namehost.example.com

Dabar pridėkite eilutę, kad galėtumėte siųsti pranešimus į visus „MySQL“ lentelėje išvardytus domenus:

virtual_transport = lmtp: unix: privatus / dovecot-lmtp

Pridėkite dar tris parametrus, kad „Postfix“ galėtų prisijungti prie „MySQL“ lentelių:

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

MySQL ir Postfix rinkmenų nustatymas

Sukurkite failą

mysql-virtual-mailbox-domains.cf

Pridėkite šias vertes:

user = usermail

slaptažodis = pašto slaptažodis

šeimininkai = 127.0.0.1

dbname = examplemail

query = SELECT 1 Iš virtual_domains WHERE name = '% s'

Iš naujo paleiskite „Postfix“:

iš naujo paleisti paslaugos postfix

Patikrinkite „Postfix“ domeną:

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

Sukurti kitą failą:

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

user = usermail

slaptažodis = pašto slaptažodis

šeimininkai = 127.0.0.1

dbname = examplemail

query = SELECT 1 iš virtualių naudotojų WHERE email = '% s'

Perkraukite „Postfix“:

iš naujo paleisti paslaugos postfix

Tada vėl patikrinkite „Postfix“:

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

Jei tai padaryti teisingai, turėtų būti rodoma

Sukurkite paskutinį failo pavadinimą:

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

user = usermail

slaptažodis = pašto slaptažodis

šeimininkai = 127.0.0.1

dbname = examplemail

query = SELECT paskirties vieta iš virtual_aliases WHERE source = '% s'

Paleiskite iš naujo:

iš naujo paleisti paslaugos postfix

Paskutinį kartą testavome:

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

„Dovecot“ sąranka

Atliekame septynių failų, kurie bus pakeisti, atsargines kopijas:

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

Tai yra pavyzdinė komanda. Šiems failams įveskite dar šešis:

/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

Atidarykite pirmąjį failą:

nano /etc/dovecot/dovecot.conf

Patikrinkite, ar šis parametras yra komentuotas:

! įtraukti conf.d / *

Įveskite:

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

protokolas = imap lmtp

Vietoj:

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

Redaguokite šį failą:

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

Raskite eilutę mail_location, pašalinkite komentarą, nustatykite šį parametrą:

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

Rasti mail_privileged_group, padėkite ten:

mail_privileged_group = paštas

Mes patikriname prieigą. Įveskite komandą:

ls -ld / var / mail

Prieiga turėtų atrodyti taip:

drwxrwsr-x 3 šaknis vmail 4096 Jan 24 21:23 / var / mail

Sukurkite kiekvieno registruoto domeno aplanką:

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

Sukurkite naudotoją ir grupę su ID 5000:

groupadd -g 5000 vmail

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

Pakeiskite savininką į „VMail“:

chown -R vmail: vmail / var / mail

Redaguokite šį failą:

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

Pašalinkite autentifikavimo tekstą ir pridėkite eilutę:

disable_plaintext_auth = taip

Pakeiskite šį parametrą:

auth_mechanisms = paprastas prisijungimas

Komentuodami šią eilutę:

#! apima auth-system.conf.ext

Pridėkite „MySQL“ leidimą, komentuokite eilutę:

! įtraukti auth-sql.conf.ext

Sukurkite failą su duomenimis autentifikavimui:

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

Įveskite čia:

passdb {

vairuotojas = sql

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

}

userdb {

vairuotojas = statinis

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

}

Redaguokite šį failą:

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

Nustatykite „MySQL“ parametrą ir komentuokite:

vairuotojas = mysql

Panaikinkite ir įveskite:

connect = host = 127.0.0.1 dbname = servermail user = usermail password = mailpassword

Raskite eilutę default_pass_scheme, pašalinkite ir įveskite parametrą:

default_pass_scheme = SHA512-CRYPT

Panaikinti ir įvesti naują parametrą:

password_query = PASIRINKITE el. laišką kaip vartotoją, slaptažodį iš virtualių naudotojų WHERE email = '% u';

Pakeiskite savininką:

chown -R vmail: dovecot / etc / dovecot

chmod -R o-rwx / etc / dovecot

Atidaryti ir redaguoti failą:

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

Panaikinkite ir įveskite parametrą:

paslauga imap-login {

inet_listener imap {

prievadas = 0

}

Įveskite:

paslauga lmtp {

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

režimas = 0600

user = postfix

group = postfix

}

#inet_listener lmtp {

# Venkite LMTP matyti internete

#address =

#port =

#}

}

Pakeiskite šią konfigūraciją:

paslaugos autorizacija {

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

režimas = 0666

user = postfix

group = postfix

}

unix_listener auth-userdb {

režimas = 0600

user = vmail

#group =

}

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

# režimas = 0666

#}

user = dovecot

}

Pakeiskite paskutinę konfigūraciją šiame faile:

paslaugos autorius {

# Darbuotojo procesas

# / etc / shadow. Jei to nereikia

# $ default_internal_user.

user = vmail

}

Taigi, mes pagaliau sukūrėme pašto serverį Ubuntu. Taip pat galite pridėti SSL konfigūraciją arba naudoti numatytąjį. Norėdami apsaugoti nuo šlamšto, galite sukonfigūruoti „Spam Assassin“ dirbti su mūsų serveriu.

Norėdami įvesti šią informaciją, naudokite standartinį el. Pašto klientą:

  • Vartotojo vardas:
  • Slaptažodis: el. Paštas1
  • IMAP: example.com
  • SMTP: example.com