Konfigurera Postfix och Dovecot på Ubuntu

Många Ubuntu-användare använder systemet inte bara för hembehov. Detta tillvägagångssätt är fullt motiverat, eftersom det på Linux-system är mycket bekvämare att göra programmering, skapa servrar och webbplatser. En av bekvämligheterna är skapandet av en e-postserver. För nybörjare verkar den här uppgiften fruktansvärt svårt, men om du räknar ut hur du installerar och konfigurerar postserveren för Ubuntu, verkar uppgiften inte så svårt för dig.

Så här konfigurerar du en e-postserver baserat på Ubuntu.

Lite teori

Innan specifika instruktioner och jäsning av koden inte kan göra utan en bråkdel av teoretiskt material. Det är viktigt att förstå vad en e-postserver är och hur den fungerar.

En konfigurerad mail-server, för att uttrycka det helt enkelt, är en postman som får ett "brev" från en e-postklient och ger den till en annan. I detta, i princip, hela kärnan i arbetet med denna programvara. Mailserveren behövs inte bara för att skicka e-post. På platserna ansvarar han för att registrera användare, skicka in formulär och andra viktiga åtgärder, utan vilken webbplatsen skulle bli som en bok, som du bara kan titta på genom att vända sidorna, men det är svårt att göra något.

Postservrar på Linux skiljer sig avsevärt från dem på Windows och andra system. På Windows är detta ett färdigt slutet program, som bara kan börja användas. Linux-distributioner kräver även självinställning av alla komponenter. Och servern kommer så småningom att bestå av inte ett program, men flera. Vi kommer att använda Postfix i kombination med Dovecot och MySQL.

Varför Postfix?

Det finns flera e-postklienter på Ubuntu, men vi valde fortfarande den här. Att konfigurera Posfix på Ubuntu är mycket enklare än samma SendMail, och det här är viktigt för en nybörjare. I kombination med Dovecot kan Postfix göra allt som vanligtvis krävs från postservrar.

Postfix är direkt självförmedlare för postöverföring. Han kommer att spela en viktig roll i hela inlämningen. Detta är ett open source-program som många servrar och webbplatser använder som standard. Dovecot är en postleverantör. Huvudrollen är att säkerställa serverns säkerhet. MySQL är ett idealiskt databashanteringssystem (DBMS) för alla webbplatser. Det behövs för att hantera den information vi mottar från användare av vår server.

Så med den teoretiska delen är över. Nu är det värt att träna.

Skapa postserver

Vad ska konfigureras innan du installerar e-postservern?

  • MySQL;
  • DNS-zon, du måste ha en personlig FDQN. Nästa använder vi namnspresent.

installation

Installera programmet:

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

När konfigurationsfönstret Postfix visas måste vi välja "Internetsida".

Nedan kommer vi att bli ombedda att ange ett domännamn, använd "primer.ru"

MySQL setup

Nu behöver vi konfigurera tre tabeller för data i MySQL: för domäner, användare och för så kallade Alias-aliaser eller ytterligare användarpostlådor. Här kommer vi inte att diskutera i detalj konfigurationen av MySQL-databasen.

Låt oss ringa examplemail databasen. Skapa en databas med följande namn:

mysqladmin -p skapa servermail

Logga in i MySQL:

mysql -u rot-p

Ange sedan lösenordet. Om allt är gjort korrekt kommer det att finnas en post i terminalen:

mysql>

Skapa en ny användare specifikt för att logga in på nätverket:

mysql> GRANT SELECT ON examplemail. * TO 'usemail'''127.0.0.1' IDENTIFIED BY 'lösenord';

Starta om MySQL igen så att alla ändringar tillämpas framgångsrikt.

Vi använder vår databas för att skapa tabeller baserade på den:

mysql> använd examplemail;

Skapa ett bord för domäner:

CREATE TABLE `virtual_domains` (

`id` INT NOT NULL AUTO_INCREMENT,

`name` VARCHAR (50) NOT NULL,

PRIMÄR KEY (`id`)

) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Skapa ett bord för användare:

SKAPA TABELL `virtual_users` (

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT INTE NULL,

`password` VARCHAR (106) NOT NULL,

`email` VARCHAR (120) NOT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `email` (` email`),

FRÅN KEY (domain_id) REFERENSER virtual_domains (id) ON DELETE CASCADE

) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Här, som du kan se, lagt till e-post och lösenord. Och varje användare är bunden till domänen.

Slutligen skapa ett bord för pseudonymer:

SKAPA TABELL `virtual_aliases` (

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT INTE NULL,

`source` varchar (100) NOT NULL,

`destination` varchar (100) NOT NULL,

PRIMARY KEY (`id`),

FRÅN KEY (domain_id) REFERENSER virtual_domains (id) ON DELETE CASCADE

) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Vi har konfigurerat MySQL framgångsrikt och skapat tre nödvändiga tabeller. Nu behöver du hantera domäner och e-postmeddelanden.

Domäner, e-postadresser och alias

Låt oss lägga till vår domän i tabellen med domäner. FDQN måste anges där:

INSERT INTO `examplemail`.` Virtual_domains`

("id", "namn")

VÄRDEN

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

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

Lägg till data om e-postadressen till användartabellen:

INSERT INTO `examplemail`.` Virtual_users`

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

VÄRDEN

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

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

Lägg nu till informationen i den sista tabellen:

INSERT INTO `examplemail`.` Virtual_aliases`

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

VÄRDEN

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

Stäng MySQL:

mysql> exit

Postfix Setup

Flyttar direkt till parametrarna Postfix. Vi behöver mailklienten för att skicka meddelanden på uppdrag av de användare som är inskrivna i databasen och hantera SMTP-anslutningen. Till att börja med skapar vi en säkerhetskopia av konfigurationsfilen, i vilket fall det var möjligt att återgå till standardinställningarna:

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

Öppna nu konfigurationsfilen:

nano /etc/postfix/main.cf

Istället för nano kan du använda vilken textredigerare som är lämplig för dig.

Vi kommer att kommentera TLS-parametrarna, och även lägga till andra. Gratis SSL används här:

# TLS-parametrar

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

# smtpd_tls_key_file = / etc / ssl / privat / 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

Därefter lägger vi till några fler parametrar:

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 måste också kommentera mydestination-inställningarna och ändra dem till localhost:

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

mydestination = localhost

Myhostname-parametern ska innehålla vårt domännamn:

myhostname = namehost.example.com

Lägg nu till en rad för att skicka meddelanden till alla domäner som listas i MySQL-tabellen:

virtual_transport = lmtp: unix: privat / dovecot-lmtp

Lägg till ytterligare tre parametrar så att Postfix kan ansluta till 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

Ställa in MySQL- och Postfix-filer

Skapa en fil

mysql-virtual-mailbox-domains.cf

Lägg till dessa värden för det:

user = usemail

lösenord = mailpassword

värdar = 127.0.0.1

dbname = examplemail

fråga = VÄLJ 1 FRÅN virtual_domains WHERE name = '% s'

Starta om Postfix:

service postfix omstart

Testdomän för Postfix:

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

Skapa en annan fil:

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

user = usemail

lösenord = mailpassword

värdar = 127.0.0.1

dbname = examplemail

fråga = VÄLJ 1 FRÅN virtual_users VAR E-mail = '% s'

Starta om Postfix:

service postfix omstart

Kontrollera sedan Postfix igen:

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

Om det görs korrekt ska det visas

Skapa den sista filen för alias:

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

user = usemail

lösenord = mailpassword

värdar = 127.0.0.1

dbname = examplemail

fråga = SELECT destination FRÅN virtual_aliases WHERE source = '% s'

återstart:

service postfix omstart

Förra gången vi testar:

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

Dovecot setup

Vi gör säkerhetskopior för sju filer som kommer att ändras:

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

Detta är ett exempelkommando. Ange sex mer av samma för dessa 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

Öppna den första filen:

nano /etc/dovecot/dovecot.conf

Kontrollera om denna parameter har kommenterats:

! inkludera conf.d / *. conf

ange:

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

protokoll = imap lmtp

Istället för:

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

Redigera följande fil:

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

Hitta raden mail_location, ta bort kommentaren, ställ in följande parameter:

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

Hitta mail_privileged_group, sätt dit:

mail_privileged_group = mail

Vi kontrollerar åtkomst. Ange kommandot:

ls -ld / var / mail

Åtkomst ska se så här ut:

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

Skapa en mapp för varje registrerad domän:

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

Skapa en användare och grupp med ID 5000:

groupadd-g 5000 vmail

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

Ändra ägaren till användaren VMail:

chown -R vmail: vmail / var / mail

Redigera följande fil:

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

Okänt autentiseringstexten och lägg till raden:

disable_plaintext_auth = yes

Ändra följande parameter:

auth_mechanisms = vanlig inloggning

Kommenterar denna rad:

#! Inkludera auth-system.conf.ext

Lägg till MySQL-behörighet, kommentera raden:

! Inkludera auth-sql.conf.ext

Skapa en fil med data för autentisering:

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

Ange där följande:

passdb {

drivrutin = sql

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

}

userdb {

förare = statisk

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

}

Redigera följande fil:

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

Ställ in MySQL-parametern och kommentera:

förare = mysql

Okomment och ange:

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

Hitta linjen default_pass_scheme, uncomment och ange parametern:

default_pass_scheme = SHA512-CRYPT

Ovanstående och introducera en ny parameter:

password_query = VÄLJ email som användare, lösenord FRÅN virtual_users WHERE email = '% u';

Ändra ägaren:

chown -R vmail: dovecot / etc / dovecot

chmod -R o-rwx / etc / dovecot

Öppna och redigera filen:

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

Okomment och ange parametern:

service imap-login {

inet_listener imap {

port = 0

}

ange:

service lmtp {

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

läge = 0600

user = postfix

grupp = postfix

}

#inet_listener lmtp {

# Undvik att göra LMTP synlig för internet

#address =

#port =

#}

}

Ändra följande konfiguration:

service auth {

unix_listener / var / spool / postfix / privat / auth {

läge = 0666

user = postfix

grupp = postfix

}

unix_listener auth-userdb {

läge = 0600

user = vmail

#group =

}

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

# mode = 0666

#}

user = dovecot

}

Ändra den senaste konfigurationen i den här filen:

service auth-arbetare {

# Authanteringsprocess

# / etc / shadow. Om detta inte är nödvändigt

# $ default_internal_user.

user = vmail

}

Så slutligen satte vi upp en mail server på Ubuntu. Och du kan också lägga till en SSL-konfiguration där eller använda standard-en. För att skydda mot spam kan du konfigurera Spam Assassin att arbeta med vår server.

Använd standard e-postklienten för att ange denna information:

  • Användarnamn:
  • Lösenord: email1
  • IMAP: example.com
  • SMTP: example.com