Hvordan sette opp Postfix Mail Server og Dovecot med database (MariaDB) sikkert - del 1
I denne 3-artikkel-serien vil vi diskutere hvordan du setter opp en Postfix-e-postserver med antivirus- og spambeskyttelse i en CentOS 7-boks. Vær oppmerksom på at disse instruksjonene også fungerer på andre distribusjoner som RHEL/Fedora og Debian/Ubuntu.
Planen vår består i å lagre e-postkontoer og aliaser i en MariaDB-database som for enkelhets skyld vil bli administrert gjennom phpMyAdmin.
Hvis du velger å ikke installere phpMyAdmin, eller har å gjøre med en CLI-server, vil vi også gi den tilsvarende koden for å lage databasetabellene som vil bli brukt gjennom denne serien.
Siden det å holde en e-postserver i gang er en av de viktigste oppgavene som vanligvis tildeles systemadministratorer og ingeniører, vil vi også gi noen tips for å effektivt kjøre denne kritiske tjenesten i et produksjonsmiljø.
Opprett A- og MX-poster for domene i DNS
Før du går videre, er det noen forutsetninger som må oppfylles:
1. Du trenger et gyldig domene registrert gjennom en domeneregistrator. I denne serien vil vi bruke www.linuxnewz.com
, som ble registrert gjennom GoDaddy.
2. Slikt domene må pekes til den eksterne IP-en til din VPS- eller skyvertsleverandør. Hvis du selv hoster e-postserveren din, kan du bruke tjenesten som tilbys av FreeDNS (krever registrering).
Uansett må du sette opp A
- og MX
-poster for domenet ditt også (du kan lære mer om MX-poster i disse vanlige spørsmålene fra Google).
Når de er lagt til, kan du slå dem opp ved hjelp av et nettbasert verktøy som MxToolbox eller ViewDNS for å sikre at de er riktig konfigurert.
Viktig: Vær oppmerksom på at det kan ta en stund (1–2 dager) før DNS-postene er spredt og domenet ditt er tilgjengelig. I mellomtiden kan du få tilgang til VPS-en din via IP-adressen for å utføre oppgavene som er angitt nedenfor.
3. Konfigurer FQDN (Fully Qualified Domain Name) til VPS-en:
hostnamectl set-hostname yourhostname
for å angi systemvertsnavnet, rediger deretter /etc/hosts som følger (erstatt AAA.BBB.CCC.DDD, ditt vertsnavn og >dittdomene med den offentlige IP-en til serveren din, vertsnavnet ditt og ditt registrerte domene):
AAA.BBB.CCC.DDD yourhostname.yourdomain.com yourhostname
der ditt vertsnavn er systemvertsnavnet som ble angitt tidligere med kommandoen hostnamectl.
Installere nødvendige programvarepakker
4. For å installere nødvendige programvarepakker som Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV osv., må du aktivere EPEL-depotet:
yum install epel-release
5. Når du har fulgt trinnene ovenfor, installer de nødvendige pakkene:
I CentOS-baserte systemer:
yum update && yum install httpd httpd-devel postfix dovecot dovecot-mysql spamassassin clamav clamav-scanner clamav-scanner-systemd clamav-data clamav-update mariadb mariadb-server php phpMyAdmin
I Debian og derivater:
aptitude update && aptitude install apache2 postfix dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql spamassassin clamav clamav-daemon clamav-base mariadb-client mariadb-server php5 phpMyAdmin
6. Start og aktiver web- og databaseservere:
I CentOS-baserte systemer:
systemctl enable httpd mariadb
systemctl start httpd mariadb
I Debian og derivater:
systemctl enable apache2 mariadb
systemctl start apache2 mariadb
Når installasjonen er fullført og tjenesten ovenfor er aktivert og kjører, starter vi med å sette opp databasen og tabellene for å lagre informasjon om Postfix-postkontoer.
Opprette Postfix Mail Accounts Database
For enkelhets skyld bruker vi phpMyAdmin, et verktøy beregnet på å håndtere administrasjonen av MySQL/MariaDB-databaser gjennom et nettgrensesnitt, for å opprette og administrere e-postdatabasen.
Men for å logge på og bruke dette verktøyet, må vi følge disse trinnene:
7. Aktiver MariaDB-kontoen (du kan gjøre dette ved å kjøre mysql_secure_installation
-verktøyet fra kommandolinjen, tilordne et passord for brukerrot, og angi standardinnstillingene foreslått av verktøyet UNNTATT «Tillat rotpålogging eksternt?“:
eller på annen måte opprette en ny databasebruker:
MariaDB [(none)]> CREATE USER 'dba'@'localhost' IDENTIFIED BY 'YourPasswordHere';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON * . * TO 'dba'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
Sikre Apache med et sertifikat
8. Siden vi skal bruke en nettapplikasjon til å administrere e-postserverdatabasen, må vi ta de nødvendige forholdsregler for å beskytte tilkoblinger til serveren. Ellers vil vår phpMyAdmin-legitimasjon gå i ren tekst over ledningen.
For å konfigurere Transport Layer Security (TLS) på serveren din, følg trinnene som er skissert i Del 8 av RHCE-serien: Implementering av HTTPS gjennom TLS bruker Network Security Service (NSS) for Apache før du fortsetter.
Merk: Hvis du ikke har tilgang til serverens konsoll, må du finne en annen måte å generere den nødvendige entropien under nøkkelopprettingen. I så fall kan det være lurt å vurdere å installere rng-tools og kjøre rngd -r /dev/urandom.
Konfigurer og sikre PhpMyAdmin
9. I /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) eller /etc/phpmyadmin/apache. conf (Debian og derivater), finn alle forekomstene av følgende linjer og sørg for at de peker til den offentlige IP-en til serveren din:
Require ip AAA.BBB.CCC.DDD
Allow from AAA.BBB.CCC.DDD
I tillegg kan du deaktivere standardaliasene og opprette en ny for å få tilgang til phpMyAdmin-påloggingssiden. Dette vil bidra til å sikre nettstedet mot roboter og eksterne angripere som retter seg mot www.yourdomain.com/phpmyadmin eller www.yourdomain.com/phpMyAdmin.
#Alias /phpMyAdmin /usr/share/phpMyAdmin
#Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /managedb /usr/share/phpMyAdmin
Legg også til følgende linje i
:
Require all granted
Opprett Apache VirtualHost for domene
10. Sørg for at domenet ditt er lagt til de aktiverte nettstedene. Opprett /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) eller /etc/apache2/sites-available/linuxnewz.com (Debian) med følgende innhold (sørg for at DocumentRoot, sites-available og sites-enabled > kataloger finnes):
<VirtualHost *:80>
ServerName www.linuxnewz.com
ServerAlias linuxnewz.com
DocumentRoot /var/www/linuxnewz.com/public_html
ErrorLog /var/www/linuxnewz.com/error.log
CustomLog /var/www/linuxnewz.com/requests.log combined
Options Indexes FollowSymLinks
</VirtualHost>
og den symbolske lenken:
På CentOS:
ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf
På Debian:
a2ensite linuxnewz.com
og du er ferdig.
Sett opp Postfix e-postdatabase
11. Nå kan du åpne phpMyAdmin-grensesnittet på https://www.yourdomain.com/managedb
(merk at managedb< er aliaset som vi satte opp tidligere for phpMyAdmin-datakatalogen).
Hvis det ikke fungerer (som kan være forårsaket av en forsinkelse i utbredelsen eller mangel på konfigurasjon av DNS-poster) foreløpig kan du prøve å bruke serverens offentlige IP-adresse i stedet for www.dittdomene.com :
Uansett, etter at du har logget på phpMyAdmin vil du se følgende grensesnitt. Klikk Ny i den venstre delen:
Skriv inn et navn for databasen (EmailServer_db i dette tilfellet, du trenger ikke velge en sortering) og klikk på Opprett:
12. På neste skjermbilde velger du et navn for den første tabellen (der vi vil lagre domenene denne e-postserveren vil administrere.
Vær oppmerksom på at selv når vi i denne serien bare vil administrere ett domene, kan du legge til flere senere) og antall felt du vil ha i det, og klikk deretter Go. Du vil bli bedt om å navngi og konfigurere disse to feltene, hvor du trygt kan fortsette som angitt i følgende bilder:
Når du velger PRIMÆR under Indeks for DomainId, godtar du standardverdiene og klikker Go:
Alternativt kan du klikke på Forhåndsvis SQL for å se koden under panseret:
CREATE TABLE `EmailServer_db`.`Domains_tbl` ( `DomainId` INT NOT NULL AUTO_INCREMENT , `DomainName` VARCHAR(50) NOT NULL , PRIMARY KEY (`DomainId`)) ENGINE = InnoDB;
Når du er klar, klikker du på Lagre for å bekrefte endringene. Du vil da kunne klikke Ny under EmailServer_db for å fortsette å lage tabeller:
13. Følg nå disse trinnene for å lage resten av tabellene. Klikk på SQL-fanen og skriv inn den angitte koden for hvert databaseobjekt.
Merk at i dette tilfellet valgte vi å lage tabellen ved hjelp av en SQL-spørring på grunn av relasjonene som må etableres mellom forskjellige tabeller:
Users_tbl
CREATE TABLE `Users_tbl` (
`UserId` INT NOT NULL AUTO_INCREMENT,
`DomainId` INT NOT NULL,
`password` VARCHAR(100) NOT NULL,
`Email` VARCHAR(100) NOT NULL,
PRIMARY KEY (`UserId`),
UNIQUE KEY `Email` (`Email`),
FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE
) ENGINE = InnoDB;
Du bør få en bekreftelsesmelding (hvis ikke, vil phpMyAdmin be om syntaksfeil):
Alias_tbl
CREATE TABLE `Alias_tbl` (
`AliasId` INT NOT NULL AUTO_INCREMENT,
`DomainId` INT NOT NULL,
`Source` varchar(100) NOT NULL,
`Destination` varchar(100) NOT NULL,
PRIMARY KEY (`AliasId`),
FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE
) ENGINE = InnoDB;
(Klikk Go nederst for å fortsette med opprettelsen av tabellen).
Frem til dette punktet bør du ha følgende databasestruktur:
Noe som betyr at du er klar til å begynne å legge til noen poster i neste seksjon.
Opprette et Postfix-domene, brukere og aliaser
14. Vi vil nå sette inn følgende poster i de tre tabellene. Passordene for [email og [email blir kryptert og INSERT INTO Users_tbl-setningen.
Vær også oppmerksom på at e-postene som sendes til [email vil bli omdirigert til [email :
INSERT INTO Domains_tbl (DomainName) VALUES ('linuxnewz.com');
INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForFirstEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '[email ');
INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForSecondEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '[email ');
INSERT INTO Alias_tbl (DomainId, Source, Destination) VALUES (1, '[email ', '[email ');
Etter å ha lagt til domenet vårt, to brukerkontoer og et e-postalias, er vi klare til å fortsette å sette opp e-postserveren vår i neste artikkel i denne serien, der vi konfigurerer Dovecot og Postfix sterk>.
Sammendrag
I denne artikkelen har vi listet opp pakkene som kreves for å installere en Postfix e-postserver i en CentOS 7 VPS, og forklart hvordan du administrerer den underliggende databasen ved hjelp av phpMyAdmin.
I de neste to artiklene vil vi gå gjennom konfigurasjonen av de to programmene som vil ta seg av e-postdistribusjonen for domenet vårt (Del 2) og vise deg hvordan du legger til beskyttelse mot spam og virus ( >Del 3) for serveren din.
Inntil da, kontakt oss gjerne ved å bruke skjemaet nedenfor hvis du har spørsmål eller kommentarer.