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