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