Giunsa ang Pag-setup sa Postfix Mail Server ug Dovecot nga adunay Database (MariaDB) nga Lig-on - Bahin 1


Niini nga serye sa 3-artikulo atong hisgutan kung giunsa ang pag-set up sa usa ka Postfix mail server nga adunay proteksyon sa antivirus ug spam sa usa ka kahon sa CentOS 7. Palihug timan-i nga kini nga mga panudlo magamit usab sa ubang mga distribusyon sama sa RHEL/Fedora ug Debian/Ubuntu.

Ang among plano naglangkob sa pagtipig sa mga email account ug mga alyas sa usa ka database sa MariaDB nga para sa among kasayon, pagadumalahon pinaagi sa phpMyAdmin.

Kung gipili nimo nga dili i-install ang phpMyAdmin, o nakiglambigit sa usa ka CLI-only server, maghatag usab kami sa katumbas nga code aron mahimo ang mga lamesa sa database nga gamiton sa tibuuk nga serye.

Tungod kay ang pagpadayon ug pagdagan sa usa ka mail server usa sa hinungdanon nga mga buluhaton nga sagad gi-assign sa mga administrador sa sistema ug mga inhenyero, maghatag usab kami pipila ka mga tip aron epektibo nga mapadagan kini nga kritikal nga serbisyo sa usa ka palibot sa produksiyon.

Paghimo A ug MX Records alang sa Domain sa DNS

Sa wala pa magpadayon, adunay pipila ka mga kinahanglanon nga kinahanglan matuman:

1. Kinahanglan nimo ang usa ka balido nga domain nga narehistro pinaagi sa usa ka tigrehistro sa domain. Niini nga serye atong gamiton ang www.linuxnewz.com, nga narehistro pinaagi sa GoDaddy.

2. Ang maong domain kinahanglang itudlo sa external IP sa imong VPS o cloud hosting provider. Kung ikaw ang nag-host sa imong mail server, mahimo nimong gamiton ang serbisyo nga gitanyag sa FreeDNS (kinahanglan ang pagrehistro).

Sa bisan unsa nga panghitabo, kinahanglan nimong i-set up ang A ug MX nga mga rekord alang usab sa imong domain (mahimo kang makakat-on og dugang mahitungod sa mga rekord sa MX niini nga FAQ gikan sa Google).

Sa higayon nga madugang, mahimo nimong tan-awon kini gamit ang usa ka online nga himan sama sa MxToolbox o ViewDNS aron masiguro nga sila husto nga gipahimutang.

Importante: Palihug timan-i nga mahimo’g magdugay (1-2 ka adlaw) hangtod ang mga rekord sa DNS ipakaylap ug magamit ang imong domain. Sa kasamtangan, mahimo nimong ma-access ang imong VPS pinaagi sa IP address niini aron mahimo ang mga buluhaton nga gipakita sa ubos.

3. I-configure ang FQDN (Fully Qualified Domain Name) sa imong VPS:

# hostnamectl set-hostname yourhostname

aron i-set ang hostname sa system, dayon i-edit ang /etc/hosts sama sa mosunod (ilisan ang AAA.BBB.CCC.DDD, imonghostname, ug imong domain sa public IP sa imong server, imong hostname, ug imong rehistradong domain):

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

diin ang imonghostname mao ang system hostname nga gibutang kaniadto gamit ang hostnamectl command.

Pag-instalar sa Gikinahanglan nga Mga Pakete sa Software

4. Aron ma-install ang gikinahanglan nga software packages sama sa Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV, ug uban pa, kinahanglan nimo nga i-enable ang EPEL repository:

# yum install epel-release

5. Kung nasunod na nimo ang mga lakang sa ibabaw, i-install ang kinahanglan nga mga pakete:

# 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. Pagsugod ug pagpagana sa web ug database server:

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

Kung kompleto na ang pag-install ug ang serbisyo sa ibabaw gipagana ug nagdagan, magsugod kami pinaagi sa pag-set up sa database ug mga lamesa aron matipigan ang kasayuran bahin sa Postfix mail account.

Paghimo sa Postfix Mail Accounts Database

Alang sa kayano, atong gamiton ang phpMyAdmin, usa ka himan nga gitumong sa pagdumala sa pagdumala sa MySQL/MariaDB databases pinaagi sa web interface, sa paghimo ug pagdumala sa email database.

Bisan pa, aron maka-log on ug magamit kini nga himan, kinahanglan namon nga sundon kini nga mga lakang:

7. I-enable ang MariaDB account (mahimo nimo kini pinaagi sa pagpadagan sa mysql_secure_installation utility gikan sa command line, paghatag og password para sa user root, ug pag-set sa default settings nga gisugyot sa tool EXCEPT Disallow root login remotely ?“:

o kung dili paghimo usa ka bag-ong tiggamit sa database:

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

Lig-ona ang Apache nga adunay Sertipiko

8. Tungod kay mogamit kami og web application sa pagdumala sa database sa email server, kinahanglan namong buhaton ang gikinahanglan nga mga panagana aron mapanalipdan ang mga koneksyon sa server. Kung dili, ang among mga kredensyal sa phpMyAdmin mobiyahe sa yano nga teksto sa wire.

Aron i-set up ang Transport Layer Security (TLS) sa imong server, sunda ang mga lakang nga gilatid sa Part 8 sa RHCE series: Pag-implementar sa HTTPS pinaagi sa TLS gamit ang Network Security Service (NSS) para sa Apache sa dili pa mopadayon.

Mubo nga sulat: kung wala ka'y access sa console sa server kinahanglan nimo pangitaon ang lain nga paagi aron makamugna ang kinahanglan nga entropy sa panahon sa paghimo sa yawe. Niana nga kaso, mahimo nimong hunahunaon ang pag-instalar sa rng-tools ug pagpadagan sa rngd -r /dev/urandom.

I-configure ug I-secure ang PhpMyAdmin

9. Sa /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) o /etc/phpmyadmin/apache.conf (Debian ug derivatives), pangitaa ang tanang mga panghitabo sa mosunod nga mga linya ug siguroha nga kini nagpunting sa publikong IP sa imong server:

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

Dugang pa, i-disable ang mga default nga alias ug paghimo og bag-o aron ma-access ang imong phpMyAdmin login page. Makatabang kini sa pagsiguro sa site batok sa mga bot ug external attackers nga nagtarget sa www.yourdomain.com/phpmyadmin o www.yourdomain.com/phpMyAdmin.

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

Usab, idugang ang mosunod nga linya sulod sa :

Require all granted

Paghimo Apache VirtualHost alang sa Domain

10. Siguruha nga ang imong domain gidugang sa gipalihok nga mga site. Paghimo /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) o /etc/apache2/sites-available/linuxnewz.com (Debian) uban sa mosunod nga mga sulod (siguroha ang DocumentRoot, sites-available, ug mga site -nahimo nga mga direktoryo anaa):

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

ug ang simbolikong sumpay:

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

ug nahuman ka.

I-setup ang Postfix Email Database

11. Karon mahimo nimong ablihan ang imong interface sa phpMyAdmin sa https://www.yourdomain.com/managedb (timan-i nga ang managedb mao ang alyas nga among gipahimutang sa sayo pa alang sa direktoryo sa datos sa phpMyAdmin).

Kung dili kana molihok (nga mahimong hinungdan sa usa ka paglangan sa pagpadaghan o kakulang sa pag-configure sa mga rekord sa DNS) sa pagkakaron mahimo nimong sulayan ang paggamit sa publiko nga IP address sa imong server imbes sa www.yourdomain.com:

Sa bisan unsa nga panghitabo, human ka mag log on sa phpMyAdmin imong makita ang mosunod nga interface. I-klik ang Bag-o sa wala nga seksyon:

Pagsulod ug ngalan alang sa database (EmailServer_db niining kasoha, dili na kinahanglang mopili ug Collation) ug i-klik ang Paghimo:

12. Sa sunod nga screen, pagpili og usa ka ngalan alang sa unang lamesa (diin among tipigan ang mga domain nga kini nga mail server magdumala.

Palihug timan-i nga bisan kung sa kini nga serye magdumala ra kami usa ka domain, mahimo nimong idugang sa ulahi) ug ang gidaghanon sa mga field nga gusto nimo niini, dayon i-klik ang Go. Maaghat ka sa pagngalan ug pag-configure sa duha ka mga natad, diin mahimo kang luwas nga magpadayon sama sa gipakita sa mosunod nga mga hulagway:

Kung imong pilion ang PRIMARY ubos sa Index for DomainId, dawata ang default values ug i-klik ang Go:

Sa laing bahin, mahimo nimong i-klik ang Preview SQL aron makita ang code ubos sa hood:

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

Kung andam ka na, i-klik ang Save aron makumpirma ang mga pagbag-o. Mahimo nimong i-klik ang Bag-o ubos sa EmailServer_db aron magpadayon sa paghimo og mga lamesa:

13. Karon sunda kini nga mga lakang sa paghimo sa uban nga mga lamesa. Pag-klik sa tab sa SQL ug isulod ang gipakita nga code alang sa matag butang sa database.

Timan-i nga sa kini nga kaso gipili namon ang paghimo sa lamesa gamit ang usa ka pangutana sa SQL tungod sa mga relasyon nga kinahanglan matukod taliwala sa lainlaing mga lamesa:

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; 

Kinahanglan nga makakuha ka usa ka mensahe sa pagkumpirma (kung dili, ang phpMyAdmin mag-aghat alang sa mga sayup sa syntax):

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;

(I-klik ang Lakaw sa ubos aron ipadayon ang paghimo sa lamesa).

Hangtud niini nga punto, kinahanglan nimo nga adunay mosunud nga istruktura sa database:

Nga nagpasabut nga andam ka nga magsugod sa pagdugang pipila nga mga rekord sa sunod nga seksyon.

Paghimo usa ka Postfix Domain, Mga Gumagamit ug Mga Alyas

14. Atong isukip karon ang mosunod nga mga talaan ngadto sa tulo ka mga lamesa. Ang mga password para sa [email  ma-encrypt ug ang INSERT INTO Users_tbl nga pahayag.

Usab, palihug timan-i nga ang mga email nga gipadala sa [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 ', 'tecm[email ');

Sa pagkadugang sa among domain, duha ka user account, ug usa ka email alias andam kami nga magpadayon sa pag-set up sa among email server sa sunod nga artikulo niini nga serye, diin among i-configure ang Dovecot ug Postfix.

Summary

Niini nga artikulo among gilista ang mga pakete nga gikinahanglan aron ma-install ang usa ka Postfix email server sa usa ka CentOS 7 VPS, ug gipatin-aw kung giunsa pagdumala ang nagpahiping database gamit ang phpMyAdmin.

Sa sunod nga duha ka artikulo among ribyuhon ang configuration sa duha ka mga programa nga mag-atiman sa email distribution para sa among domain (Bahin 2) ug ipakita kanimo unsaon pagdugang og proteksyon batok sa spam ug mga virus (Bahin 3) para sa imong server.

Hangtud niana, ayaw pagduhaduha sa pagkontak kanamo gamit ang porma sa ubos kung adunay ka mga pangutana o komento.