A Postfix levelezőkiszolgáló és a Dovecot biztonságos beállítása adatbázissal (MariaDB) – 1. rész
Ebben a 3 cikkből álló sorozatban megvitatjuk, hogyan állíthat be Postfix levelezőszervert vírus- és spamvédelemmel egy CentOS 7 dobozban. Kérjük, vegye figyelembe, hogy ezek az utasítások más disztribúciókon is működnek, mint például az RHEL/Fedora és a Debian/Ubuntu.
Tervünk abból áll, hogy az e-mail fiókokat és az álneveket egy MariaDB adatbázisban tároljuk, amely a kényelmünket szolgálja, a phpMyAdmin segítségével kezeljük.
Ha úgy dönt, hogy nem telepíti a phpMyAdmin programot, vagy csak CLI-kiszolgálóval foglalkozik, akkor az ezzel egyenértékű kódot is biztosítjuk a sorozatban használt adatbázistáblák létrehozásához.
Mivel a levelezőszerver üzemben tartása az egyik alapvető feladat, amelyet általában a rendszergazdákra és a mérnökökre bíznak, adunk néhány tippet is ennek a kritikus szolgáltatásnak az éles környezetben való hatékony futtatásához.
Hozzon létre A és MX rekordokat a DNS-tartományhoz
Mielőtt továbblépne, meg kell felelnie néhány előfeltételnek:
1. Egy domainregisztrátoron keresztül regisztrált érvényes domainre lesz szüksége. Ebben a sorozatban a www.linuxnewz.com
címet fogjuk használni, amelyet a GoDaddy-n keresztül regisztráltunk.
2. Az ilyen domainnek a VPS vagy felhőtárhely-szolgáltató külső IP-címére kell mutatnia. Ha a levelezőszerverét saját maga tárolja, használhatja a FreeDNS szolgáltatását (regisztráció szükséges).
Mindenesetre be kell állítania az A
és az MX
rekordokat a domainjéhez is (az MX rekordokról többet tudhat meg a Google ezen GYIK-ben).
Miután hozzáadta őket, megkeresheti őket egy online eszköz, például az MxToolbox vagy a ViewDNS segítségével, hogy megbizonyosodjon arról, hogy megfelelően vannak beállítva.
Fontos: Kérjük, vegye figyelembe, hogy eltarthat egy ideig (1-2 nap), amíg a DNS-rekordok terjesztése megtörténik, és domainje elérhetővé válik. Addig is hozzáférhet a VPS-hez annak IP-címén keresztül az alább jelzett feladatok végrehajtásához.
3. Konfigurálja VPS-je FQDN-jét (Fullly Qualified Domain Name):
hostnamectl set-hostname yourhostname
a rendszer gazdagépnevének beállításához, majd szerkessze az /etc/hosts elemet az alábbiak szerint (cserélje ki az AAA.BBB.CCC.DDD, yourhostname és >saját domain szervere nyilvános IP-címével, gazdagépnevével és regisztrált domainjével):
AAA.BBB.CCC.DDD yourhostname.yourdomain.com yourhostname
ahol yourhostname a rendszer gazdagépneve, amelyet korábban a hostnameectl paranccsal állítottak be.
A szükséges szoftvercsomagok telepítése
4. A szükséges szoftvercsomagok (például Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV stb.) telepítéséhez engedélyeznie kell az EPEL tárolót:
yum install epel-release
5. Miután követte a fenti lépéseket, telepítse a szükséges csomagokat:
CentOS alapú rendszerekben:
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
Debianban és származékaiban:
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. Indítsa el és engedélyezze a web- és adatbázisszervereket:
CentOS alapú rendszerekben:
systemctl enable httpd mariadb
systemctl start httpd mariadb
Debianban és származékaiban:
systemctl enable apache2 mariadb
systemctl start apache2 mariadb
Ha a telepítés befejeződött, és a fenti szolgáltatás engedélyezve van és fut, akkor kezdjük az adatbázis és a táblák beállításával a Postfix levelezési fiókokkal kapcsolatos információk tárolására.
Postfix levelezési fiókok adatbázisának létrehozása
Az egyszerűség kedvéért a phpMyAdmin eszközt fogjuk használni, amely a MySQL/MariaDB adatbázisok webes felületen keresztüli adminisztrálására szolgál, létrehozásához és kezeléséhez. az e-mail adatbázis.
Ahhoz azonban, hogy bejelentkezhessünk és használhassuk ezt az eszközt, az alábbi lépéseket kell követnünk:
7. Engedélyezze a MariaDB fiókot (ezt úgy teheti meg, hogy a parancssorból futtatja a mysql_secure_installation
segédprogramot, hozzárendel egy jelszót a root felhasználóhoz, és az eszköz által javasolt alapértelmezett beállítások megadása, KIVÉVE „Letiltja a root bejelentkezést távolról?”:
vagy más módon hozzon létre egy új adatbázis-felhasználót:
MariaDB [(none)]> CREATE USER 'dba'@'localhost' IDENTIFIED BY 'YourPasswordHere';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON * . * TO 'dba'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
Biztonságos Apache tanúsítvánnyal
8. Mivel webalkalmazást fogunk használni az e-mail szerver adatbázisának kezelésére, meg kell tennünk a szükséges óvintézkedéseket a szerverrel való kapcsolatok védelme érdekében. Ellenkező esetben a phpMyAdmin hitelesítési adataink sima szövegben továbbítják a vezetéket.
A Transport Layer Security (TLS) beállításához a szerveren kövesse az RHCE sorozat 8. részében leírt lépéseket: HTTPS megvalósítása TLS-en keresztül. használja az Apache számára készült Network Security Service (NSS) szolgáltatást, mielőtt továbblépne.
Megjegyzés: ha nem fér hozzá a szerver konzoljához, más módot kell találnia a szükséges entrópia létrehozására a kulcs létrehozása során. Ebben az esetben érdemes megfontolni az rng-tools telepítését és az rngd -r /dev/urandom futtatását.
A PhpMyAdmin konfigurálása és biztonságossá tétele
9. Itt: /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) vagy /etc/phpmyadmin/apache. conf (Debian és származékai), keresse meg a következő sorok összes előfordulását, és győződjön meg arról, hogy azok a szerver nyilvános IP-címére mutatnak:
Require ip AAA.BBB.CCC.DDD
Allow from AAA.BBB.CCC.DDD
Ezenkívül tiltsa le az alapértelmezett álneveket, és hozzon létre egy újat a phpMyAdmin bejelentkezési oldalának eléréséhez. Ez segít megvédeni a webhelyet a www.yourdomain.com/phpmyadmin vagy a www.yourdomain.com/phpMyAdmin webhelyet megcélzó robotok és külső támadók ellen.
#Alias /phpMyAdmin /usr/share/phpMyAdmin
#Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /managedb /usr/share/phpMyAdmin
Ezenkívül adja hozzá a következő sort a
-hoz:
Require all granted
Hozzon létre Apache VirtualHost tartományhoz
10. Győződjön meg arról, hogy domainjét hozzáadta az engedélyezett webhelyekhez. Hozzon létre /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) vagy /etc/apache2/sites-available/linuxnewz.com (Debian) a következő tartalommal (győződjön meg arról, hogy a DocumentRoot, sites-available és sites-enabled > léteznek könyvtárak):
<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>
és a szimbolikus link:
CentOS-en:
ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf
Debianon:
a2ensite linuxnewz.com
és kész.
Állítsa be a Postfix e-mail adatbázist
11. Most megnyithatja phpMyAdmin felületét a https://www.yourdomain.com/managedb
címen (vegye figyelembe, hogy managedb< az az álnév, amelyet korábban beállítottunk a phpMyAdmin adatkönyvtárhoz).
Ha ez nem működik (amit a DNS-rekordok terjedésének késése vagy konfigurációjának hiánya okozhat), akkor megpróbálhatja a szerver nyilvános IP-címét használni a www.yourdomain.com helyett. >:
Mindenesetre, miután bejelentkezik a phpMyAdminba, a következő felületet fogja látni. Kattintson az Új lehetőségre a bal oldali részben:
Adja meg az adatbázis nevét (ebben az esetben EmailServer_db, nem kell leválogatást választani), majd kattintson a Létrehozás gombra:
12. A következő képernyőn válasszon egy nevet az első táblázathoz (ahol tároljuk a levelezőszerver által kezelt domaineket.
Felhívjuk figyelmét, hogy még akkor is, ha ebben a sorozatban csak egy domaint kezelünk, később továbbiakat is hozzáadhat) és a kívánt mezők számát, majd kattintson az Ugrás gombra. A rendszer kéri, hogy nevezze el és konfigurálja azt a két mezőt, ahol biztonságosan folytathatja az alábbi képeken látható módon:
Ha az Elsődleges lehetőséget választja az Index alatt a DomainId mezőben, fogadja el az alapértelmezett értékeket, és kattintson a Ugrás gombra:
Alternatív megoldásként kattintson az SQL előnézete lehetőségre a motorháztető alatti kód megtekintéséhez:
CREATE TABLE `EmailServer_db`.`Domains_tbl` ( `DomainId` INT NOT NULL AUTO_INCREMENT , `DomainName` VARCHAR(50) NOT NULL , PRIMARY KEY (`DomainId`)) ENGINE = InnoDB;
Ha készen áll, kattintson a Mentés gombra a módosítások megerősítéséhez. Ezután kattintson az Új elemre az EmailServer_db alatt a táblázatok létrehozásának folytatásához:
13. Most kövesse ezeket a lépéseket a többi táblázat létrehozásához. Kattintson az SQL fülre, és írja be a jelzett kódot minden adatbázis-objektumhoz.
Vegye figyelembe, hogy ebben az esetben a tábla létrehozását SQL lekérdezéssel választottuk a különböző táblák közötti kapcsolatok miatt:
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;
Megerősítő üzenetet kell kapnia (ha nem, a phpMyAdmin szintaktikai hibákat fog kérni):
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;
(Kattintson a Ugrás gombra alul a táblázat létrehozásának folytatásához.)
Eddig a pontig a következő adatbázis-struktúrával kell rendelkeznie:
Ez azt jelenti, hogy készen áll néhány rekord hozzáadására a következő részben.
Postfix tartomány, felhasználók és álnevek létrehozása
14. Most a következő rekordokat illesztjük be a három táblázatba. Az [email és [email jelszavak titkosítva lesznek, és az INSERT INTO Users_tbl utasítás.
Kérjük, vegye figyelembe, hogy a(z) [email címre küldött e-maileket a rendszer átirányítja a(z) [email címre:
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 ');
Miután hozzáadtuk a domaint, két felhasználói fiókot és egy e-mail aliast, készen állunk arra, hogy folytassuk e-mail szerverünk beállítását a sorozat következő cikkében, ahol konfiguráljuk a Dovecot és a Postfixt..
Összegzés
Ebben a cikkben felsoroltuk a Postfix e-mail-kiszolgáló CentOS 7 VPS-be történő telepítéséhez szükséges csomagokat, és elmagyaráztuk, hogyan kell kezelni az alapul szolgáló adatbázist a phpMyAdmin használatával.
A következő két cikkben áttekintjük annak a két programnak a konfigurációját, amelyek a domain e-mailek terjesztéséről gondoskodnak (2. rész), és megmutatjuk, hogyan adhatunk védelmet a spam és a vírusok ellen ( >3. rész) a szerveréhez.
Addig is, ha kérdése vagy észrevétele van, forduljon hozzánk bizalommal az alábbi űrlap segítségével.