Wéi Setup Postfix Mail Server an Dovecot mat Datebank (MariaDB) sécher - Deel 1


An dëser 3-Artikel Serie wäerte mir diskutéieren wéi een e Postfix Mail Server mat Antivirus a Spam Schutz an enger CentOS 7 Box opstellt. Notéiert w.e.g. dës Instruktioune funktionnéieren och op aner Verdeelungen wéi RHEL/Fedora an Debian/Ubuntu.

Eise Plang besteet aus E-Mailkonten an Aliasen an enger MariaDB Datebank ze späicheren, déi fir eis Komfort ass, gëtt duerch phpMyAdmin geréiert.

Wann Dir gewielt hutt phpMyAdmin net z'installéieren, oder mat engem CLI-nëmmen Server ze dinn hunn, gi mir och den gläichwäertege Code fir d'Datebanktabellen ze kreéieren déi an dëser Serie benotzt ginn.

Zënter datt e Mail-Server op a lafen ass eng vun den wesentlechen Aufgaben, déi normalerweis Systemadministratoren an Ingenieuren zougewisen ginn, wäerte mir och e puer Tipps ubidden fir dësen kriteschen Service effizient an engem Produktiounsëmfeld ze bedreiwen.

Erstellt A an MX Records fir Domain an DNS

Ier Dir weider geet, sinn et e puer Viraussetzungen déi erfëllt musse ginn:

1. Dir braucht eng valabel Domain duerch en Domain Registrar registréiert. An dëser Serie wäerte mir www.linuxnewz.com benotzen, déi duerch GoDaddy registréiert gouf.

2. Esou Domain muss op d'extern IP vun Ärem VPS oder Cloud Hosting Provider weisen. Wann Dir Ären E-Mail-Server selwer hostéiert, kënnt Dir de Service vum FreeDNS benotzen (erfuerdert Registréierung).

Op alle Fall musst Dir A an MX Records och fir Ären Domain opstellen (Dir kënnt méi iwwer MX Records an dëser FAQ vu Google gewuer ginn).

Eemol bäigefüügt, kënnt Dir se mat engem Online-Tool wéi MxToolbox oder ViewDNS kucken fir sécherzestellen datt se richteg ageriicht sinn.

Wichteg: Notéiert w.e.g. datt et eng Zäit dauert (1-2 Deeg) bis d'DNS-Records propagéiert sinn an Ären Domain verfügbar ass. An der Tëschenzäit kënnt Dir op Är VPS iwwer seng IP Adress zougräifen fir d'Aufgaben auszeféieren déi hei ënnendrënner uginn.

3. Konfiguréiert de FQDN (Full Qualified Domain Name) vun Ärem VPS:

# hostnamectl set-hostname yourhostname

fir de System Hostnumm ze setzen, ännert dann /etc/hosts wéi follegt (ersetzt AAA.BBB.CCC.DDD, Ären Hostnumm an Ären Domain mat der ëffentlecher IP vun Ärem Server, Ärem Hostnumm an Ärem registréierte Domain):

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

wou Äre Hostnumm de Systemhostnumm ass dee virdru mat dem Hostnamectl Kommando agestallt gouf.

Installatioun erfuerderlech Software Packagen

4. Fir erfuerderlech Software Packagen wéi Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV, etc z'installéieren, musst Dir den EPEL Repository aktivéieren:

# yum install epel-release

5. Wann Dir déi uewe genannte Schrëtt gefollegt hutt, installéiere déi néideg Packagen:

# 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. Start an aktivéiert de Web- an Datebankserver:

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

Wann d'Installatioun fäerdeg ass an den uewe genannte Service aktivéiert a leeft, fänken mir un andeems Dir d'Datebank an d'Tabellen opstellt fir Informatioun iwwer Postfix Mailkonten ze späicheren.

Postfix Mail Konten Datebank erstellen

Fir Einfachheet benotze mir phpMyAdmin, en Tool dat geduecht ass fir d'Administratioun vu MySQL/MariaDB Datenbanken duerch e Webinterface ze handhaben, fir d'E-Mail-Datebank ze kreéieren an ze verwalten.

Wéi och ëmmer, fir unzemellen an dëst Tool ze benotzen, musse mir dës Schrëtt verfollegen:

7. Aktivéiert de MariaDB Kont (Dir kënnt dat maachen andeems Dir de mysql_secure_installation Utility vun der Kommandozeil ausféiert, e Passwuert fir de Benotzerroot zouzeweisen an d'Standardastellungen, déi vum Tool proposéiert ginn, AUSSER Verbueden root Login op afstand ?“:

oder soss en neien Datebank Benotzer erstellen:

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

Séchert Apache mat engem Certificat

8. Well mir eng Webapplikatioun benotze fir d'E-Mail-Server-Datebank ze verwalten, musse mir déi néideg Virsiichtsmoossnamen huelen fir d'Verbindunge mam Server ze schützen. Soss reesen eis phpMyAdmin Umeldungsinformatiounen am Kloertext iwwer den Drot.

Fir Transport Layer Security (TLS) op Ärem Server opzestellen, befollegt d'Schrëtt, déi am Deel 8 vun der RHCE Serie geschriwwe sinn: HTTPS duerch TLS implementéieren mat Network Security Service (NSS) fir Apache ier Dir weider geet.

Notiz: Wann Dir keen Zougang zu der Konsole vum Server hutt, musst Dir en anere Wee fannen fir déi néideg Entropie während der Schlësselkreatioun ze generéieren. An dësem Fall wëllt Dir vläicht iwwerleeën rng-Tools z'installéieren an rngd -r /dev/urandom ze lafen.

PhpMyAdmin konfiguréieren a sécheren

9. An /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) oder /etc/phpmyadmin/apache.conf (Debian an Derivate), lokaliséiert all d'Optriede vun de folgende Linnen a vergewëssert Iech datt se op d'ëffentlech IP weisen. vun Ärem Server:

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

Zousätzlech, deaktivéiert d'Standard Aliasen an erstellt en neien fir op Är phpMyAdmin Login Säit ze kommen. Dëst hëlleft de Site géint Bots an extern Ugräifer ze sécheren, déi www.yourdomain.com/phpmyadmin oder www.yourdomain.com/phpMyAdmin zielen.

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

Füügt och déi folgend Linn an :

Require all granted

Erstellt Apache VirtualHost fir Domain

10. Vergewëssert Iech datt Är Domain op déi aktivéiert Siten bäigefüügt gëtt. Erstellt /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) oder /etc/apache2/sites-available/linuxnewz.com (Debian) mat den folgenden Inhalter (vergewëssert Iech datt den DocumentRoot, Site-available, a Sites -aktivéiert Verzeichnisser existéieren):

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

an de symbolesche Link:

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

an Dir sidd fäerdeg.

Setup Postfix E-Mail Datebank

11. Elo kënnt Dir Är phpMyAdmin Interface op https://www.yourdomain.com/managedb opmaachen (notéiert datt managedb den Alias ass dee mir virdru fir den phpMyAdmin Dateverzeichnis ageriicht hunn).

Wann dat net funktionnéiert (wat kann duerch eng Verspéidung an der Verbreedung oder Mangel u Konfiguratioun vun DNS records verursaacht ginn) fir de Moment kënnt Dir probéieren Är ëffentlech IP Adress vun Ärem Server anstatt www.yourdomain.com ze benotzen:

Op alle Fall, nodeems Dir Iech op phpMyAdmin ageloggt hutt, gesitt Dir déi folgend Interface. Klickt Neien an der lénker Sektioun:

Gitt en Numm fir d'Datebank (EmailServer_db an dësem Fall, net néideg eng Collation ze wielen) a klickt Erstellen:

12. Op den nächsten Ecran, wielt e Numm fir den éischten Dësch (wou mir d'Domänen späicheren, déi dëse Mailserver verwalten.

Notéiert w.e.g. datt och wann an dëser Serie mir nëmmen een Domain verwalten, kënnt Dir méi spéit derbäisetzen) an d'Zuel vun de Felder déi Dir wëllt dran, da klickt op Go. Dir wäert opgefuerdert ginn dës zwee Felder ze nennen an ze konfiguréieren, wou Dir sécher viru kënnt wéi an de folgende Biller uginn:

Wann Dir PRIMARY ënner Index fir DomainId wielt, akzeptéiert d'Standardwäerter a klickt Go:

Alternativ kënnt Dir klickt Preview SQL fir de Code ënner der Hood ze gesinn:

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

Wann Dir prett sidd, klickt op Späicheren fir d'Ännerungen ze bestätegen. Dir kënnt dann fäeg sinn Nei ënner EmailServer_db ze klicken fir weider Tabellen ze kreéieren:

13. Follegt elo dës Schrëtt fir de Rescht vun den Dëscher ze kreéieren. Klickt op d'SQL Reiter a gitt den uginnene Code fir all Datebankobjekt.

Notéiert datt mir an dësem Fall gewielt hunn den Dësch mat enger SQL Ufro ze kreéieren wéinst de Bezéiungen déi tëscht verschiddenen Dëscher etabléiert musse ginn:

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; 

Dir sollt eng Bestätegungsmeldung kréien (wann net, phpMyAdmin freet fir Syntaxfehler):

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;

(Klickt op Go um ënnen fir mat der Schafung vum Dësch virzegoen).

Bis zu dësem Punkt sollt Dir déi folgend Datebankstruktur hunn:

Wat heescht datt Dir prett sidd fir e puer Rekorder an der nächster Sektioun ze addéieren.

Erstellt e Postfix Domain, Benotzer an Aliasen

14. Mir wäerten elo déi folgend records an déi dräi Dëscher setzen. D'Passwierder fir [Email geschützt] wäerte verschlësselt ginn an d'INSERT INTO Users_tbl Ausso.

Och notéiert w.e.g. datt d'E-Mailen op [email geschützt] geschéckt ginn:

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 ');

Nodeems mir eis Domain, zwee Benotzerkonten an en E-Mail Alias bäigefüügt hunn, si mir bereet fir weider eisen E-Mail-Server an den nächsten Artikel vun dëser Serie opzestellen, wou mir Dovecot a Postfix konfiguréieren.

Resumé

An dësem Artikel hu mir d'Package opgelëscht fir e Postfix E-Mail-Server an engem CentOS 7 VPS z'installéieren, an erkläert wéi d'Basisdatenbank mat phpMyAdmin verwalten.

An den nächsten zwee Artikele wäerte mir d'Konfiguratioun vun deenen zwee Programmer iwwerpréiwen, déi d'E-Mail-Verdeelung fir eis Domain këmmeren (Deel 2) a weisen Iech wéi Dir Schutz géint Spam a Viren (Deel 3) fir Äre Server addéiere kënnt.

Bis dohin, mellt Iech gratis bei eis mam Formulaire hei drënner ze kontaktéieren wann Dir Froen oder Bemierkungen hutt.