Instalarea unui server de e-mail pe CentOS 7 se poate face în mai multe moduri, dar unul dintre cele mai comune este utilizarea unei combinații de Postfix și Dovecot.
Postfix este un software de expediere și este unul dintre cele mai populare servere de e-mail din lume. Dovecot, pe de altă parte, este un server de e-mail care este utilizat pentru a primi e-mailuri utilizând protocolul IMAP sau POP.
Exim este un agent de transfer de e-mail (MTA) utilizat în mod obișnuit în sistemele de operare de tip Unix. Exim este un freeware distribuit în conformitate cu termenii GNU (General Public Licence) și este un instrument de e-mail versatil și flexibil, cu funcții extinse de verificare a e-mailurilor primite.
Dovecot este un server de e-mail IMAP și POP3 cu sursă deschisă pentru sistemele de tip Linux/UNIX. Securitatea a fost piatra de temelie a concentrării acestui produs pe flexibilitate și viteză.
Roundcube este o interfață de e-mail bazată pe web care oferă posibilitatea de a lucra cu cutiile poștale utilizând IMAP și SMTP. Aplicația are o funcționalitate puternică și este comparabilă în ceea ce privește capacitățile cu clienții de e-mail desktop precum Outlook Express sau Mozilla Thunderbird.
Conectați-vă prin SSH la serverul dvs. virtual.
Apoi trebuie să actualizați sistemul, introduceți comanda:
# sudo yum update -y
După actualizarea sistemului, va apărea un mesaj ca acesta.
Pentru a instala Apache pe serverul dvs. virtual, introduceți comanda:
# sudo yum install httpd -y
După instalare, porniți Apache:
# sudo systemctl start httpd.service
După aceea, mergeți la - http://ServerIP/
și verificați dacă Apache funcționează corect
Dacă totul funcționează corect, introduceți comanda pentru a porni automat Apache pe serverul virtual:
# sudo systemctl enable httpd.service
Pentru descărcare, utilizați comanda:
# sudo yum install mariadb-server mariadb -y
După ce descărcarea și instalarea sunt finalizate, trebuie să rulați MariaDB:
# sudo systemctl start mariadb
Rulați scriptul de instalare securizată, care va elimina setările nesigure:
# sudo mysql_secure_installation
Introduceți parola rădăcină, deoarece tocmai ați creat baza de date, aceasta este goală în mod implicit. Apoi acceptați setările, introduceți"Y
" peste tot. Introduceți o nouă parolă, confirmați-o și acceptați din nou modificările"Y
".
MariaDB este acum instalată.
Pentru a instala PHP, introduceți comanda:
# sudo yum install php php-mysql -y
Apoi, reporniți Apache astfel încât să poată rula PHP:
# sudo systemctl restart httpd.service
Pentru a testa modul în care funcționează PHP, introduceți trebuie să creați un fișier, cum ar fi index.php folosind această comandă:
# echo "<?php phpinfo(); ?>" > /var/www/html/index.php
Acum deschideți link-ul în browser - http://ServerIP/index.php
Ar trebui să vedeți o pagină cu parametri PHP.
Apoi trebuie să instalați pachetul pentru a suporta MariaDB în PHP:
# sudo yum -y install php-mysql php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel
După aceea reporniți Apache:
# sudo systemctl restart httpd.service
Gata. Ați instalat Apache, MySQL și PHP pe serverul virtual.
Conectarea depozitelor suplimentare
Va trebui să conectați un depozit suplimentar pentru a instala toate componentele.
# sudo yum install epel-release
Pentru a crea o conexiune între toate componentele lanțului, este necesar să utilizați o bază de date. Conectați-vă la serverul MySQL:
# mysql -u root -p
Creați o bază de date, trebuie să specificați propria parolă:
CREATE DATABASE vexim;
GRANT ALL ON vexim.* to vexim@localhost identified by 'password';
quit
În cazul în care nu sunt instalate toate modulele PHP, este necesară o instalare suplimentară.
# yum -y install php-imap php-mbstring php-pdo php-mysql php-cli
Descărcați Postfixadmin și instalați-l în folderul /var/www/html/postfixadmin
.
# wget http://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-3.0/postfixadmin-3.0.tar.gz
# tar xpf postfixadmin-3.0.tar.gz
# mv postfixadmin-3.0 /var/www/html/postfixadmin
# chown -R apache:apache /var/www/html/postfixadmin
# rm postfixadmin-3.0.tar.gz
# cd /var/www/html/postfixadmin > # vi config.inc.php
Modificați fișierul de configurare config .inc.php
:
# yum -y install dovecot dovecot-mysql
Redenumiți configurația implicită, astfel încât să putem reveni la aceasta dacă este necesar:
# mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-orig
# vi /etc/dovecot/dovecot.conf
Salvați următoarele intrări în fișierul de configurare dovecot.conf:
## Dovecot configuration file
base_dir = /var/run/dovecot/
auth_default_realm = site.com
auth_mechanisms = plain login cram-md5
protocols = imap pop3
listen = *
disable_plaintext_auth = no
dotlock_use_excl = yes
first_valid_gid = 5
first_valid_uid = 25
mail_location = maildir:/var/vmail/%d/%u
mail_privileged_group = mail
passdb {
args = /etc/dovecot/dovecot-mysql.conf
driver = sql
}
service auth {
unix_listener auth-client {
group = exim
mode = 0660
user = exim
}
unix_listener auth-master {
group = exim
mode = 0600
user = exim
}
user = root
}
ssl = no
userdb {
args = /etc/dovecot/dovecot-mysql.conf
driver = sql
}
verbose_proctitle = yes
protocol imap {
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
}
protocol pop3 {
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
auth_socket_path = /var/run/dovecot/auth-master
postmaster_address = info@site.com
}
Pentru a configura accesul la baza de date, creați un fișier de configurare separat dovecot-mysql.conf
# vi /etc/dovecot/dovecot-mysql.conf
și puneți următoarele setări în el:
## Dovecot database configuration
driver = mysql
connect = host=localhost dbname=vexim user=vexim password=password
default_pass_scheme = CRAM-MD5
password_query = SELECT `username` as `user`, `password` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'
user_query = SELECT 93 AS `uid`, 93 AS `gid` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'
# yum -y install exim exim-mysql cyrus-sasl
# mv /etc/exim/exim.conf /etc/exim/exim.conf-orig
# vi /etc/exim/exim.conf
Modificați configurația implicită păstrând în același timp o copie de rezervă.
######################################################################
# MAIN CONFIGURATION SETTINGS #
######################################################################
primary_hostname = mail.site.com
hide mysql_servers = localhost/vexim/vexim/password
domainlist local_domains = ${lookup mysql{SELECT `domain`
FROM `domain` WHERE
`domain`='${quote_mysql:$domain}' AND
`active`='1'}}
domainlist relay_to_domains = ${lookup mysql{SELECT `domain`
FROM `domain` WHERE
`domain`='${quote_mysql:$domain}' AND
`active`='1'}}
hostlist relay_from_hosts = localhost:127.0.0.0/8:192.168.1.0/24
auth_advertise_hosts = *
acl_not_smtp = acl_not_smtp
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
qualify_domain = site.com
qualify_recipient = site.com
allow_domain_literals = true
exim_user = exim
exim_group = exim
never_users = root
rfc1413_query_timeout = 0s
sender_unqualified_hosts = +relay_from_hosts
recipient_unqualified_hosts = +relay_from_hosts
ignore_bounce_errors_after = 45m
timeout_frozen_after = 15d
helo_accept_junk_hosts = 192.168.1.0/24
auto_thaw = 1h
smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"
smtp_accept_max = 50
smtp_accept_max_per_connection = 25
smtp_connect_backlog = 30
smtp_accept_max_per_host = 20
split_spool_directory = true
remote_max_parallel = 15
return_size_limit = 70k
message_size_limit = 64M
helo_allow_chars = _
smtp_enforce_sync = true
log_selector =
+all_parents
+connection_reject
+incoming_interface
+lost_incoming_connection
+received_sender
+received_recipients
+smtp_confirmation
+smtp_syntax_error
+smtp_protocol_error
-queue_run
syslog_timestamp = no
######################################################################
# ACL CONFIGURATION #
# Specifies access control lists for incoming SMTP mail #
######################################################################
begin acl
acl_not_smtp:
deny message = Sender rate overlimit - $sender_rate / $sender_rate_period
ratelimit = 50 / 1h / strict
accept
acl_check_rcpt:
deny message = "Lookup failed"
condition = ${if eq{$host_lookup_failed}{1}}
accept hosts = :
deny message = "incorrect symbol in address"
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
deny message = "incorrect symbol in address"
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\.\./
accept local_parts = postmaster
domains = +local_domains
deny message = "HELO/EHLO required by SMTP RFC"
condition = ${if eq{$sender_helo_name}{}{yes}{no}}
accept authenticated = *
deny condition = ${if eq{$sender_helo_name}
{$interface_address}{yes}{no}}
hosts = !127.0.0.1 : !localhost : *
message = "My IP in your HELO! Access denied!"
deny condition = ${if match{$sender_helo_name}
{N^d+$N}{yes}{no}}
hosts = !127.0.0.1 : !localhost : *
message = "Incorrect HELO string"
warn
set acl_m0 = 30s
warn
hosts = +relay_from_hosts:4.3.2.1/32:192.168.1.0/24 #disable waits for 'friendly' hosts
set acl_m0 = 0s
warn
logwrite = Delay $acl_m0 for $sender_host_name
[$sender_host_address] with HELO=$sender_helo_name. Mail
from $sender_address to $local_part@$domain.
delay = $acl_m0
accept domains = +local_domains
endpass
message = "No such user"
verify = recipient
accept domains = +relay_to_domains
endpass
message = "i don't know how to relay to this address"
verify = recipient
deny message = "you in blacklist - $dnslist_domain n $dnslist_text"
dnslists = opm.blitzed.org :
cbl.abuseat.org :
bl.csma.biz
accept hosts = +relay_from_hosts
deny message = "Homo hominus lupus est"
acl_check_dаta:
deny malware = */defer_ok
message = "Your message contains viruses: $malware_name"
accept
######################################################################
# ROUTERS CONFIGURATION #
# Specifies how addresses are handled #
######################################################################
# THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT! #
# An address is passed to each router in turn until it is accepted. #
######################################################################
begin routers
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more
system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE
`address`='${quote_mysql:$local_part@$domain}' OR
`address`='${quote_mysql:@$domain}'}}
dovecot_user:
driver = accept
condition = ${lookup mysql{SELECT `goto` FROM
`alias` WHERE
`address`='${quote_mysql:$local_part@$domain}' OR
`address`='${quote_mysql:@$domain}'}{yes}{no}}
transport = dovecot_delivery
######################################################################
# TRANSPORTS CONFIGURATION #
######################################################################
# ORDER DOES NOT MATTER #
# Only one appropriate transport is called for each delivery. #
######################################################################
begin transports
remote_smtp:
driver = smtp
dovecot_delivery:
driver = pipe
command = /usr/libexec/dovecot/deliver -d $local_part@$domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = exim
address_pipe:
driver = pipe
return_output
address_reply:
driver = autoreply
######################################################################
# RETRY CONFIGURATION #
######################################################################
begin retry
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
######################################################################
# REWRITE CONFIGURATION #
######################################################################
begin rewrite
######################################################################
# AUTHENTICATION CONFIGURATION #
######################################################################
begin authenticators
auth_plain:
driver = dovecot
public_name = PLAIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1
auth_login:
driver = dovecot
public_name = LOGIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1
auth_cram_md5:
driver = dovecot
public_name = CRAM-MD5
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1
Dezinstalarea Postfix
# alternatives --config mta
# systemctl disable postfix
# systemctl stop postfix
# yum -y remove postfix
Mergeți la http://server_ip/postfixadmin/setup.php
și urmați instrucțiunile de instalare. După crearea superadmin-ului, programul de instalare vă va oferi un cod hash de parolă:
Acesta trebuie înlocuit în fișierul config.inc.php
(în rădăcina directorului postfixadmin) în locul acestei linii:
Apoi trebuie să vă conectați sub datele create, să adăugați domeniile și căsuțele poștale necesare.
Instalarea Roundcube
# yum -y install roundcubemail
După instalare, trebuie să adăugați configurația la serverul web, astfel încât scriptul să se deschidă la http://server_ip/roundcubemail/.
# vi /etc/httpd/conf.d/roundcubemail.conf
Salvați următoarele date:
#
# Round Cube Webmail is a browser-based multilingual IMAP client
#
Alias /roundcubemail /usr/share/roundcubemail
Alias /webmail /usr/share/roundcubemail
<Directory /usr/share/roundcubemail/>
Options none
AllowOverride Limit
Require all granted
</Directory>
<Directory /usr/share/roundcubemail/installer>
Options none
AllowOverride Limit
Require all granted
</Directory>
# Those directories should not be viewed by Web clients.
<Directory /usr/share/roundcubemail/bin/>
Order Allow,Deny
Deny from all
</Directory>
<Directory /usr/share/roundcubemail/plugins/enigma/home/>
Order Allow,Deny
Deny from all
</Directory>
Apache trebuie repornit după scriere:
# systemctl restart httpd.service
Pentru instalarea ulterioară creați o bază de date, în acest scop conectați-vă la MySQL:
# mysql -u root -p
și executați interogări (specificați propriile date):
CREATE DATABASE roundcubedb;
CREATE USER roundcubeuser@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES on roundcubedb.* to roundcubeuser@localhost ;
FLUSH PRIVILEGES;
quit
În continuare trebuie să deschideți programul de instalare http://server_ip/roundcubemail/installer
și să configurați.
Aceasta completează configurarea, mergeți la Roundcube http://server_ip/roundcubemail/,
conectați-vă sub caseta creată anterior (în Postfixadmin), faceți setările și utilizați.