Opsæt en mailserver med PostfixAdmin og MariaDB på CentOS 7

I denne vejledning forklarer vi, hvordan du opsætter og konfigurerer en mailserver med PostfixAdmin, Postfix, Dovecot, MariaDB og SpamAssasin på en CentOS VPS. PostfixAdmin er en PHP-baseret web-front-end, der giver dig mulighed for at administrere virtuelle domæner og brugere til et Postfix-posttransportmiddel. Denne vejledning skal også fungere på andre Linux VPS-systemer, men blev testet og skrevet til en CentOS 7 VPS.

Hvis du bruger en Ubuntu VPS, følg vores vejledning for at oprette en mail server med Postfix, Dovecot, Spamassassin, SQLite og PostfixAdmin på en Ubuntu 16.04 VPS

Hvis du vil bruge SQLite i stedet for MariaDB, skal du følge vores vejledning for at oprette en mailserver med Postfix, Dovecot, Spamassassin, SQLite og PostfixAdmin på en CentoOS 7 VPS

Opdater systemet og installer nødvendige pakker

yum opdatering && yum installere wget nano

Opret systembruger

Af sikkerhedsmæssige grunde vil vi oprette en ny systembruger, som vil være ejer af alle postkasser.

useradd -r -u 150 -g mail -d / var / vmail -s / sbin / nologin -c "Virtual Mail-bruger" vmail mkdir -p / var / vmail chmod -R 770 / var / vmail chown -R vmail: mail / var / vmail

Installer MariaDB

MariaDB 5.5 afsendes i standard CentOS 7 repository, for at installere det bare køre:

yum installer mariadb-server

For at starte MariaDB-tjenesten og aktivere den til at starte ved opstart, udfør følgende kommandoer:

systemctl start mariadb.service systemctl aktivere mariadb.service

Kør følgende kommando for at sikre din MariaDB-installation:

mysql_secure_installation

Dernæst skal vi oprette en database til vores postfixadminHQ-forekomst.

mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE postfixadmin;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'strong_password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> q

Installer PHP og alle nødvendige PHP-moduler

CentOS 7 leveres med PHP version 5.4, for at installere PHP og nødvendige moduler, køre:

yum installere php php-mysql php-imap php-mbstring php-fælles

Hvis du ikke har Apache installeret, skal du installere det med:

Du installerer httpd

Installer PostfixAdmin

Den nyeste version af PostfixAdmin, version 3, understøtter MySQL / MariaDB, PostgreSQL, og SQLite databaser. I denne vejledning bruger vi MariaDB.
Download PostfixAdmin-arkivet fra SourceForge og udpak det i / var / www / html / directory:

wget -q -O - "https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.0.2/postfixadmin-3.0.2.tar.gz" | tjære -xzf - -C / var / www / html

Åbn mailkonfigurationsfilen og rediger følgende værdier:

nano /var/www/html/postfixadmin-3.0.2/config.inc.php
$CONF['configured'] = true;
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'strong_password';
$CONF['database_name'] = 'postfixadmin';

$CONF['domain_path'] = 'NO';
$CONF['domain_in_mailbox'] = 'YES';
chown -R apache: / var / www / html / postfixadmin-3.0.2

For at udfylde databasen, gå til https://Your_IP_Address/postfixadmin-3.0.2/setup.php og du bør se noget som nedenfor:
Testing database connection - OK - mysqli://postfixadmin:[email protected]/postfixadmin
Everything seems fine... attempting to create/update database structure

Opret en ny admin bruger:

bash / var / www / html / postfixadmin-3.0.2 / scripts / postfixadmin-cli admin tilføj [Email protected]_domæne_navn.com --pasord strong_password22 --password2 strong_password22 --superadmin 1 - aktiv 1

Installer og konfigurer postfix

For at installere postfix køre kommandoen bellow:

Du installerer postfix

Når installationen er gennemført, skal vi oprette konfigurationsfiler:

mkdir -p / etc / postfix / sql /
nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
user = postfixadmin
password = strong_password
hosts = localhost
dbname = postfixadmin
query  = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfixadmin
password = strong_password
hosts = localhost
dbname = postfixadmin
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfixadmin
password = strong_password
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
nano /etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfixadmin
password = strong_password
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
#expansion_limit = 100
nano /etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfixadmin
password = strong_password
hosts = localhost
dbname = postfixadmin
query          = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
#query          = SELECT domain FROM domain WHERE domain='%s'
#optional query to use when relaying for backup MX
#query           = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
#expansion_limit = 100
nano /etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
user = postfixadmin
password = strong_password
hosts = localhost
dbname = postfixadmin
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfixadmin
password = strong_password
hosts = localhost
dbname = postfixadmin
query           = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
#expansion_limit = 100

Stuck et sted? Få en VPS fra os og vi gør alt dette for dig gratis! Vi vil helt oprette og konfigurere en mail server for dig.

Rediger main.cf fil:

postconf -e "myhostname = $(hostname -f)"
 
postconf -e "virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf"
postconf -e "virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
postconf -e "virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf"
 
postconf -e "smtpd_tls_cert_file = /etc/pki/tls/certs/localhost.crt"
postconf -e "smtpd_tls_key_file = /etc/pki/tls/private/localhost.key"
postconf -e "smtpd_use_tls = yes"
postconf -e "smtpd_tls_auth_only = yes"
 
postconf -e "smtpd_sasl_type = dovecot"
postconf -e "smtpd_sasl_path = private/auth"
postconf -e "smtpd_sasl_auth_enable = yes"
postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination"
 
postconf -e "mydestination = localhost"
postconf -e "mynetworks = 127.0.0.0/8"
postconf -e "inet_protocols = ipv4"
postconf -e "inet_interfaces = all"

postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"

Åbne master.cf fil, find indsendelse inet n og smtps inet n sektioner og rediger som følger:

nano /etc/postfix/master.cf
indsendelse inet n - n - - smtpd -o syslog_name = postfix / indsendelse -o smtpd_tls_security_level = kryptere -o smtpd_sasl_auth_enable = ja # -o smtpd_reject_unlisted_recipient = nej # -o smtpd_client_restrictions = $ mua_client_restrictions # -o smtpd_helo_restrictions = $ mua_helo_restrictions # -o smtpd_sender_restrictions = $ mua_sender_restrictions # -o smtpd_recipient_restrictions = -o smtpd_relay_restrictions = permit_sasl_authenticated, afviser -o milter_macro_daemon_name = oPRINDELSE SMTPS inet n - n - - smtpd -o syslog_name = postfix / SMTPS # -o smtpd_tls_wrappermode = ja -o smtpd_sasl_auth_enable = ja # -o smtpd_reject_unlisted_recipient = nej # -o smtpd_client_restrictions = $ mua_client_restrictions # -o smtpd_helo_restrictions = $ mua_helo_restrictions # -o smtpd_sender_restrictions = $ mua_sender_restrictions # -o smtpd_recipient_restrictions = -o smtpd_relay_restrictions = tilladelse_sasl_authenticated, reject -o milter_macro_daemon_name = ORIGINATING

Aktivér postfix-tjenesten

systemctl enable postfix systemctl genstart postfix

Installer og konfigurer Dovecot

Installer dovecot med MySQL support ved hjælp af kommandoen bellow:

yum installere dovecot dovecot-mysql

Åbne /etc/dovecot/conf.d/10-mail.conf fil og ændre følgende værdier:

nano /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir: / var / vmail /% d /% n mail_privileged_group = mail mail_uid = vmail mail_gid = mail first_valid_uid = 150 last_valid_uid = 150

Åbne /etc/dovecot/conf.d/10-auth.conf fil og ændre følgende værdier:

nano /etc/dovecot/conf.d/10-auth.conf
auth_mechanisms = almindelig login #! inkludere auth-system.conf.ext! inkludere auth-sql.conf.ext

Opret en ny dovecot-sql.conf.ext fil:

nano /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=localhost dbname=postfixadmin user=postfixadmin password=strong_password
default_pass_scheme = MD5-CRYPT
password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT '/var/vmail/%d/%u' as home, 'maildir:/var/vmail/%d/%u' as mail, 150 AS uid, 8 AS gid, concat('dirsize:storage=',  quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'

i /etc/dovecot/conf.d/10-ssl.conf fil aktivere SSL-understøttelse:

ssl = ja

Åbne /etc/dovecot/conf.d/15-lda.conf fil og indstil postmaster_address email adresse.

postmaster_address = [Email protected]_domain_name.com

Åbne /etc/dovecot/conf.d/10-master.conf fil, find tjenesten lmtp sektion og skift den til:

service lmtp {unix_listener / var / spool / postfix / privat / dovecot-lmtp {mode = 0600 bruger = postfix gruppe = postfix}}

find tjenesten auth sektion og ændre det til:

service auth {unix_listener / var / spool / postfix / privat / auth {mode = 0666 bruger = postfix gruppe = postfix} unix_listener auth-userdb {mode = 0600 bruger = vmail #group = vmail} user = dovecot}

Skift afsnittet Service Auth-Worker til følgende:

service auth-worker {user = vmail}

Indstil tilladelserne:

chown -R vmail: dovecot / etc / dovecot chmod -R o-rwx / etc / dovecot

Aktivér og genstart dovecot-tjenesten

systemtl enable dovecot systemctl genstart dovecot 

Installer og konfigurer Spamassassin

Installer spamassassin ved hjælp af kommandoen bellow:

Du installerer spamassassin

Opret en spamassassin system bruger:

groupadd spamd
useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd
chown spamd:spamd /var/log/spamassassin

Konfigurer Postfix til at bruge SpamAssassin

Åbne master.cf fil og rediger som følger:

nano /etc/postfix/master.cf

lave om

smtp inet n - n - - smtpd

med

smtp inet n - n - - smtpd -o content_filter = spamassassin

Tilføj følgende linje i slutningen af ​​filen:

spamassassin unix - nn - - pipe flag = R bruger = spamd argv = / usr / bin / spamc -e / usr / sbin / sendmail -oi -f $ {sender} $ {modtager}

Aktivér og genstart spamassassin-tjenesten

systemctl enable spamassassin 
systemctl restart spamassassin 

Genstart postfix-tjenesten

systemctl genstart postfix

Hvis alt er konfigureret korrekt, skal du være i stand til at logge ind på din PostfixAdmin-backend ved at gå til http://Your_IP_Address/postfixadmin-3.0.2.2 og opret dit første virtuelle domæne og postkasse.

Kilde

Giv en kommentar