Konfiguration af Postfix og Dovecot på Ubuntu

Mange Ubuntu-brugere bruger systemet ikke kun til hjemmebrug. Denne tilgang er fuldt berettiget, fordi det på Linux-systemer er meget mere praktisk at gøre programmering, skabe servere og hjemmesider. En af bekvemmelighederne er oprettelsen af ​​en e-mail-server. For begyndere synes denne opgave forfærdeligt svært, men hvis du finder ud af, hvordan du installerer og konfigurerer postserveren til Ubuntu, virker opgaven ikke så svært for dig.

Sådan oprettes en mail server baseret på Ubuntu.

Lidt teori

Før specifikke instruktioner og fermentering af koden kan ikke være uden en brøkdel af teoretisk materiale. Det er vigtigt at forstå, hvad en e-mail-server er, og hvordan den virker.

En konfigureret mail server, for at sige det meget enkelt, er en postbud, der modtager et "brev" fra en e-mail-klient og giver det til en anden. I dette princip er hele essensen af ​​arbejdet i denne software. Mailserveren er ikke kun nødvendig for at sende e-mail. På siderne er han ansvarlig for at registrere brugere, indsende formularer og andre vigtige handlinger, uden hvilken stedet bliver som en bog, som man kun kan se på ved at dreje siderne, men det er svært at lave noget.

Mail-servere på Linux er væsentligt forskellige fra dem på Windows og andre systemer. På Windows er dette et færdigt lukket program, som kun kan begynde at bruge. Linux-distributioner kræver også selvindstilling af alle komponenter. Og serveren vil i sidste ende bestå af ikke et program, men flere. Vi vil bruge Postfix i kombination med Dovecot og MySQL.

Hvorfor Postfix?

Der er flere e-mail-klienter på Ubuntu, men vi valgte stadig denne. Opsætning af Posfix på Ubuntu er meget lettere end det samme SendMail, og det er vigtigt for en nybegynder bruger. I kombination med Dovecot kan Postfix gøre alt, hvad der normalt kræves fra mail-servere.

Postfix er direkte selve postoverførselsagenten. Han vil spille en stor rolle i hele indsendelsen. Dette er et open source-program, som mange servere og websteder bruger som standard. Dovecot er en postleverandør. Hovedrollen er at sikre serverens sikkerhed. MySQL er et ideelt database management system (DBMS) til alle websteder. Det er nødvendigt at håndtere de oplysninger, vi modtager fra brugere af vores server.

Så med den teoretiske del er forbi. Nu er det værd at træne.

Opret mail server

Hvad skal konfigureres før du installerer mailserveren?

  • MySQL;
  • DNS-zone, skal du have en personlig FDQN. Næste vil vi bruge navnethost.

installation

Installer programmet:

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

Når Postfix-konfigurationsvinduet vises, skal vi vælge "Internet site".

Nedenfor vil vi blive bedt om at indtaste et domænenavn, brug "primer.ru".

MySQL opsætning

Nu skal vi konfigurere tre tabeller for data i MySQL: for domæner, brugere og for såkaldte Alias-aliaser eller yderligere brugerpostkasser. Her vil vi ikke diskutere detaljeret konfigurationen af ​​MySQL-databasen.

Lad os ringe til examplemail-databasen. Opret en database med følgende navn:

mysqladmin -p oprette serverpost

Log ind i MySQL:

mysql -u rod-p

Indtast derefter adgangskoden. Hvis alt er gjort korrekt, vil der være en post i terminalen:

mysql>

Opret en ny bruger specifikt for at logge ind på netværket:

mysql> GRANT SELECT ON examplemail. * TIL 'usemail'''127.0.0.1' IDENTIFIED AF 'password';

Genstart nu MySQL for at sikre, at alle ændringer bliver anvendt korrekt.

Vi bruger vores database til at oprette tabeller baseret på den:

mysql> brug examplemail;

Opret en tabel for domæner:

CREATE TABLE `virtual_domains` (

`id` INT NOT NULL AUTO_INCREMENT,

`navn` VARCHAR (50) IKKE NULL,

PRIMÆRE Nøgle (`id`)

) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Opret en tabel til brugere:

CREATE TABLE `virtual_users` (

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NOT NULL,

'password` VARCHAR (106) IKKE NULL,

`email` VARCHAR (120) IKKE NULL,

Primære nøgle (`id`)

UNIKKE Nøgle "email" (`email '),

UDENLANDSKE KEY (domain_id) REFERENCER virtual_domains (id) ON DELETE CASCADE

) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Her, som du kan se, tilføjes e-mail og adgangskode. Og hver bruger er bundet til domænet.

Endelig opretter du et bord til pseudonymer:

CREATE TABLE `virtual_aliases` (

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NOT NULL,

`kilde` varchar (100) IKKE NULL,

`destination` varchar (100) IKKE NULL,

Primære nøgle (`id`)

UDENLANDSKE KEY (domain_id) REFERENCER virtual_domains (id) ON DELETE CASCADE

) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Vi har konfigureret MySQL med succes og oprettet tre nødvendige tabeller. Nu skal du håndtere domæner og e-mails.

Domæner, e-mailadresser og aliaser

Lad os tilføje vores domæne til tabellen med domæner. FDQN skal indtastes der:

Indsæt i `examplemail`.`virtual_domains`

("id", "navn")

VÆRDIER

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

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

Tilføj data om e-mail-adressen til brugertabellen:

Indsæt i `examplemail`.`virtual_users`

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

VÆRDIER

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

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

Tilføj nu oplysningerne til den sidste tabel:

Indsæt i `examplemail`.`virtual_aliases`

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

VÆRDIER

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

Luk MySQL:

mysql> exit

Postfix Setup

Flytter direkte til parametrene Postfix. Vi har brug for postklienten til at sende beskeder på vegne af de brugere, der er indtastet i databasen og håndtere SMTP-forbindelsen. Til at begynde med vil vi oprette en sikkerhedskopi af konfigurationsfilen, i hvilket tilfælde det var muligt at vende tilbage til standardindstillingerne:

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

Åbn nu konfigurationsfilen:

nano /etc/postfix/main.cf

I stedet for nano kan du bruge ethvert tekstredigeringsprogram, der er praktisk for dig.

Vi kommenterer TLS-parametrene, og tilføjer også andre. Gratis SSL bruges her:

# TLS parametre

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

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

smtpd_tls_auth_only = ja

Derefter vil vi tilføje nogle flere parametre:

smtpd_sasl_type = dovecot

smtpd_sasl_path = privat / auth

smtpd_sasl_auth_enable = ja

smtpd_recipient_restrictions =

permit_sasl_authenticated,

permit_mynetworks,

reject_unauth_destination

Vi skal også kommentere mydestination-indstillingerne og ændre dem til localhost:

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

mydestination = localhost

Myhostname-parameteren skal indeholde vores domænenavn:

myhostname = namehost.example.com

Tilføj nu en linje for at sende meddelelser til alle domæner, der er angivet i MySQL-tabellen:

virtual_transport = lmtp: unix: privat / dovecot-lmtp

Tilføj tre yderligere parametre, så Postfix kan oprette forbindelse til MySQL-tabeller:

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

Opsætning af MySQL- og Postfix-filer

Opret en fil

mysql-virtual-mailbox-domains.cf

Tilføj disse værdier til det:

user = usemail

password = mailpassword

værter = 127.0.0.1

dbname = examplemail

forespørgsel = VÆLG 1 FRA virtuelle domæner WHERE navn = '% s'

Genstart Postfix:

service postfix genstart

Testdomæne til Postfix:

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

Opret en anden fil:

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

user = usemail

password = mailpassword

værter = 127.0.0.1

dbname = examplemail

forespørgsel = VÆLG 1 FRA virtual_users WHERE email = '% s'

Genstart Postfix:

service postfix genstart

Kontroller derefter Postfix igen:

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

Hvis det gøres korrekt, skal det vises

Opret den sidste fil til aliaser:

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

user = usemail

password = mailpassword

værter = 127.0.0.1

dbname = examplemail

forespørgsel = VÆLG destination FRA virtual_aliases WHERE source = '% s'

Genstart:

service postfix genstart

Sidste gang vi tester:

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

Dovecot setup

Vi laver sikkerhedskopier til syv filer, der vil blive ændret:

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

Dette er en prøvekommando. Indtast seks flere af de samme for disse filer:

/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

Åbn den første fil:

nano /etc/dovecot/dovecot.conf

Kontroller, om denne parameter er kommenteret:

! inkludere conf.d / *. conf

indtaste:

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

protokol = imap lmtp

I stedet for:

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

Rediger følgende fil:

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

Find linjen mail_location, fjern kommentaren, indstil følgende parameter:

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

Find mail_privileged_group, læg der:

mail_privileged_group = mail

Vi kontrollerer adgangen. Indtast kommandoen:

ls -ld / var / mail

Adgang skal se sådan ud:

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

Opret en mappe for hvert registreret domæne:

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

Opret en bruger og gruppe med ID 5000:

groupadd -g 5000 vmail

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

Skift ejeren til brugeren VMail:

chown -R vmail: vmail / var / mail

Rediger følgende fil:

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

Uncent autentificeringsteksten og tilføj linjen:

disable_plaintext_auth = yes

Skift følgende parameter:

auth_mechanisms = almindeligt login

Kommenterer denne linje:

#! inkludere auth-system.conf.ext

Tilføj MySQL autorisation, kommentere linjen:

! inkludere auth-sql.conf.ext

Opret en fil med data til godkendelse:

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

Indtast der følgende:

passdb {

driver = sql

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

}

userdb {

driver = statisk

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

}

Rediger følgende fil:

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

Indstil MySQL-parameteren og kommentere:

driver = mysql

Ukomment og indtast:

connect = vært = 127.0.0.1 dbname = servermail user = usermail password = mailpassword

Find linjen default_pass_scheme, uncomment og indtast parameteren:

default_pass_scheme = SHA512-CRYPT

Ukomment og introducere en ny parameter:

password_query = VÆLG e-mail som bruger, password fra virtual_users hvor e-mail = '% u';

Ændre ejeren:

chown -R vmail: dovecot / etc / dovecot

chmod -R o-rwx / etc / dovecot

Åbn og rediger filen:

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

Ukomment og indtast parameteren:

service imap-login {

inet_listener imap {

port = 0

}

indtaste:

service lmtp {

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

mode = 0600

bruger = postfix

gruppe = postfix

}

#inet_listener lmtp {

# Undgå at gøre LMTP synlig for internettet

#address =

#port =

#}

}

Skift følgende konfiguration:

service auth {

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

mode = 0666

bruger = postfix

gruppe = postfix

}

unix_listener auth-userdb {

mode = 0600

bruger = vmail

#group =

}

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

# mode = 0666

#}

user = dovecot

}

Skift den sidste konfiguration i denne fil:

service auth-worker {

# Autharbejder proces

# / etc / shadow. Hvis dette ikke er nødvendigt

# $ default_internal_user.

bruger = vmail

}

Så vi har endelig oprettet en mail-server på Ubuntu. Og du kan også tilføje en SSL-konfiguration der eller bruge standard-enheden. For at beskytte mod spam kan du konfigurere Spam Assassin til at arbejde sammen med vores server.

Brug standard e-mail-klienten til at indtaste disse oplysninger:

  • Brugernavn:
  • Adgangskode: email1
  • IMAP: example.com
  • SMTP: example.com