Postfix-postipalvelimen ja Dovecot-tietokannan (MariaDB) turvallinen asennus - osa 1


Tässä 3-artikkelisarjassa keskustellaan siitä, miten Postfix-postipalvelin asennetaan virustentorjunta- ja roskapostisuojauksella CentOS 7 -ruutuun. Huomaa, että nämä ohjeet toimivat myös muissa jakeluissa, kuten RHEL/Fedora ja Debian/Ubuntu.

Suunnitelmamme on tallentaa sähköpostitilit ja aliakset MariaDB-tietokantaan, joka on meidän mukavuutemme vuoksi, hallitaan phpMyAdminin kautta.

Jos päätät olla asentamatta phpMyAdminia tai olet tekemisissä vain CLI-palvelimen kanssa, toimitamme myös vastaavan koodin tietokantataulukoiden luomiseen, joita käytetään koko sarjassa.

Koska postipalvelimen pitäminen käynnissä on yksi tärkeimmistä tehtävistä, jotka yleensä annetaan järjestelmänvalvojille ja insinööreille, annamme myös muutamia vinkkejä tämän kriittisen palvelun tehokkaaseen suorittamiseen tuotantoympäristössä.

Luo A- ja MX-tietueet verkkotunnukselle DNS: ssä

Ennen kuin jatkat, on täytettävä muutama edellytys:

1. Tarvitset voimassa olevan verkkotunnuksen, joka on rekisteröity verkkotunnuksen rekisteröijän kautta. Tässä sarjassa käytämme www.linuxnewz.com , joka rekisteröitiin GoDaddyn kautta.

2. Tällainen verkkotunnus on osoitettava VPS: n tai pilvipalveluntarjoajan ulkoiseen IP-osoitteeseen. Jos isännöit itse sähköpostipalvelinta, voit käyttää FreeDNS: n tarjoamaa palvelua (vaatii rekisteröitymisen).

Joka tapauksessa sinun on määritettävä A ja MX -tietueet myös verkkotunnuksellesi (voit lukea lisää MX-tietueista tästä Googlen usein kysytystä kysymyksestä).

Kun olet lisännyt ne, voit etsiä ne käyttämällä online-työkalua, kuten MxToolbox tai ViewDNS, varmistaaksesi, että ne on määritetty oikein.

Tärkeää: Huomaa, että voi kestää jonkin aikaa (1-2 päivää), ennen kuin DNS-tietueet levitetään ja verkkotunnuksesi on käytettävissä. Sillä välin voit käyttää VPS: ääsi sen IP-osoitteen kautta suorittamaan alla ilmoitetut tehtävät.

3. Määritä VPS: n FQDN (Fully Qualified Domain Name):

# hostnamectl set-hostname yourhostname

asettaa järjestelmän isäntänimi ja muokkaa sitten tiedostoa/etc/hosts seuraavasti (korvaa AAA.BBB.CCC.DDD, palvelimen nimi ja verkkotunnus palvelimesi, isäntänimesi ja rekisteröidyn verkkotunnuksesi julkisella IP-osoitteella):

AAA.BBB.CCC.DDD yourhostname.yourdomain.com       yourhostname

missä isäntänimesi on järjestelmän isäntänimi, joka asetettiin aiemmin käyttämällä hostnamectl-komentoa.

Vaadittujen ohjelmistopakettien asentaminen

4. Asentaaksesi tarvittavat ohjelmistopaketit, kuten Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV jne., Sinun on otettava käyttöön EPEL-arkisto:

# yum install epel-release

5. Kun olet noudattanut yllä olevia vaiheita, asenna tarvittavat paketit:

# 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
# 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. Käynnistä ja ota käyttöön verkko- ja tietokantapalvelimet:

# systemctl enable httpd mariadb
# systemctl start httpd mariadb
# systemctl enable apache2 mariadb
# systemctl start apache2 mariadb

Kun asennus on valmis ja yllä oleva palvelu on otettu käyttöön ja käynnissä, aloitamme asettamalla tietokannan ja taulukot Postfix-sähköpostitilien tietojen tallentamiseksi.

Postfix-sähköpostitilitietokannan luominen

Yksinkertaisuuden vuoksi käytämme sähköpostitietokannan luomiseen ja hallintaan phpMyAdminia, työkalua, joka on tarkoitettu MySQL/MariaDB-tietokantojen hallintaan web-käyttöliittymän kautta.

Jotta voimme kirjautua sisään ja käyttää tätä työkalua, meidän on kuitenkin noudatettava näitä vaiheita:

7. Ota käyttöön MariaDB-tili (voit tehdä tämän suorittamalla mysql_secure_installation -apuohjelman komentoriviltä, määrittämällä käyttäjän juuren salasanan ja asettamalla työkalun ehdottamat oletusasetukset Paitsi ? ":

tai muuten luoda uuden tietokannan käyttäjä:

MariaDB [(none)]> CREATE USER 'dba'@'localhost' IDENTIFIED BY 'YourPasswordHere';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON * . * TO 'dba'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

Suojaa Apache varmenteella

8. Koska käytämme verkkosovellusta sähköpostipalvelintietokannan hallintaan, meidän on toteutettava tarvittavat varotoimet suojaamaan yhteyksiä palvelimeen. Muussa tapauksessa phpMyAdmin-tunnistetietomme kulkevat pelkkänä tekstinä langan yli.

Määritä TLS (Transport Layer Security) palvelimellesi noudattamalla RHCE-sarjan osassa 8 esitettyjä vaiheita: HTTPS: n käyttöönotto TLS: n kautta Apache-verkon Network Security Service (NSS) -palvelun avulla ennen kuin jatkat.

Huomaa: jos sinulla ei ole pääsyä palvelimen konsoliin, sinun on löydettävä toinen tapa luoda tarvittava entropia avaimen luomisen aikana. Siinä tapauksessa sinun kannattaa harkita rng-toolsin asentamista ja rngd -r/dev/urandomin suorittamista.

Määritä ja suojaa PhpMyAdmin

9. Etsi /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) - tai /etc/phpmyadmin/apache.conf (Debian ja johdannaiset) -kohdasta kaikki seuraavien rivien esiintymät ja varmista, että ne osoittavat julkista IP-osoitetta. palvelimesi:

Require ip AAA.BBB.CCC.DDD
Allow from AAA.BBB.CCC.DDD

Poista lisäksi oletusalias käytöstä ja luo uusi, jotta pääset phpMyAdmin-kirjautumissivullesi. Tämä auttaa suojaamaan sivustoa robotteilta ja ulkoisilta hyökkääjiltä, jotka kohdistavat sivustoille www.omaverkkotunnus.com/phpmyadmin tai www.omaverkkotunnus.com/phpMyAdmin.

#Alias /phpMyAdmin /usr/share/phpMyAdmin
#Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /managedb /usr/share/phpMyAdmin

Lisää myös seuraava rivi -kohtaan:

Require all granted

Luo Apache VirtualHost verkkotunnukselle

10. Varmista, että verkkotunnuksesi on lisätty sallituille sivustoille. Luo /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) tai /etc/apache2/sites-available/linuxnewz.com (Debian) seuraavalla sisällöllä (varmista, että DocumentRoot, sites-available ja sites käytössä olevat hakemistot ovat olemassa):

<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>

ja symbolinen linkki:

# ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf
# a2ensite linuxnewz.com

ja olet valmis.

Määritä Postfix-sähköpostitietokanta

11. Nyt voit avata phpMyAdmin-käyttöliittymän osoitteessa https://www.omaverkkotunnus.com/hallinnoitub (huomaa, että managedb on alias, jonka olemme aiemmin asettaneet phpMyAdmin-tietohakemistolle).

Jos tämä ei toimi (mikä voi johtua DNS-tietueiden etenemisen viivästymisestä tai konfiguroinnin puuttumisesta), voit kokeilla palvelimesi julkista IP-osoitetta www.yourdomain.com sijaan:

Joka tapauksessa, kun olet kirjautunut sisään phpMyAdminiin, näet seuraavan käyttöliittymän. Napsauta vasemmassa osiossa Uusi:

Kirjoita tietokannalle nimi (EmailServer_db tässä tapauksessa, sinun ei tarvitse valita lajittelua) ja napsauta Luo:

12. Valitse seuraavalla näytöllä ensimmäiselle taulukolle nimi (johon tallennamme verkkotunnukset, joita tämä postipalvelin hallinnoi.

Huomaa, että vaikka tässä sarjassa hallitsisimme vain yhtä verkkotunnusta, voit lisätä lisää myöhemmin) ja siihen haluamasi kenttien määrän ja napsauta sitten Siirry. Sinua pyydetään nimeämään ja määrittämään nämä kaksi kenttää, joissa voit jatkaa turvallisesti seuraavien kuvien mukaisesti:

Kun valitset ALKUPERÄINEN kohdassa Domain for DomainId, hyväksy oletusarvot ja napsauta Siirry:

Vaihtoehtoisesti voit napsauttaa esikatselukuvaketta nähdäksesi koodin hupun alla:

CREATE TABLE `EmailServer_db`.`Domains_tbl` ( `DomainId` INT NOT NULL AUTO_INCREMENT , `DomainName` VARCHAR(50) NOT NULL , PRIMARY KEY (`DomainId`)) ENGINE = InnoDB;

Kun olet valmis, vahvista muutokset valitsemalla Tallenna. Sen jälkeen voit napsauttaa Uusi-kohdasta EmailServer_db jatkaaksesi taulukoiden luomista:

13. Luo loput taulukot noudattamalla näitä vaiheita. Napsauta SQL-välilehteä ja kirjoita ilmoitettu koodi jokaiselle tietokantaobjektille.

Huomaa, että tässä tapauksessa päätimme luoda taulukon käyttämällä SQL-kyselyä, koska suhteet on määritettävä eri taulukoiden välillä:

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; 

Sinun pitäisi saada vahvistusviesti (jos ei, phpMyAdmin pyytää syntaksivirheitä):

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;

(Jatka taulukon luomista napsauttamalla alareunassa Siirry).

Siihen asti sinulla pitäisi olla seuraava tietokantarakenne:

Tämä tarkoittaa, että olet valmis aloittamaan joitain tietueita seuraavassa osiossa.

Postfix-toimialueen, käyttäjien ja aliasten luominen

14. Lisäämme nyt seuraavat tietueet kolmeen taulukoon. [Sähköposti suojattu] salasanat salataan ja INSERT INTO Users_tbl -käsky.

Huomaa myös, että sähköpostit, jotka lähetetään osoitteeseen [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 ');

Kun olemme lisänneet verkkotunnuksemme, kaksi käyttäjätiliä ja sähköpostialiaksen, olemme valmiita jatkamaan sähköpostipalvelimemme asettamista tämän sarjan seuraavassa artikkelissa, jossa määritämme Dovecotin ja Postfixin.

Yhteenveto

Tässä artikkelissa olemme luetelleet paketit, jotka tarvitaan Postfix-sähköpostipalvelimen asentamiseen CentOS 7 VPS: ään, ja selitetty, miten taustalla olevaa tietokantaa hallitaan phpMyAdminin avulla.

Seuraavassa kahdessa artikkelissa tarkastelemme niiden kahden ohjelman kokoonpanoa, jotka huolehtivat verkkotunnuksemme sähköpostin jakelusta (osa 2) ja osoittavat, kuinka voit lisätä suojausta roskapostilta ja viruksilta (osa 3) palvelimellesi.

Siihen asti ota rohkeasti yhteyttä alla olevan lomakkeen avulla, jos sinulla on kysyttävää tai kommentteja.