Att installera en e-postserver på CentOS 7 kan göras på flera olika sätt, men ett av de vanligaste är att använda en kombination av Postfix och Dovecot.
Postfix är en avsändarprogramvara och är en av de mest populära e-postservrarna i världen. Dovecot, å andra sidan, är en e-postserver som används för att ta emot e-post med IMAP- eller POP-protokoll.
Exim är en postöverföringsagent (MTA) som vanligtvis används i Unix-liknande operativsystem. Exim är ett gratisprogram som distribueras enligt villkoren i GNU (General Public Licence) och är ett mångsidigt och flexibelt e-postverktyg med omfattande funktioner för kontroll av inkommande e-post.
Dovecot är en IMAP- och POP3-postserver med öppen källkod för Linux/UNIX-liknande system. Säkerhet har varit hörnstenen i den här produktens fokus på flexibilitet och snabbhet.
Roundcube är ett webbaserat e-postgränssnitt som ger möjlighet att arbeta med dina brevlådor med hjälp av IMAP och SMTP. Applikationen har kraftfull funktionalitet och kan jämföras med stationära e-postklienter som Outlook Express eller Mozilla Thunderbird.
Logga in via SSH på din virtuella server.
Därefter måste du uppdatera systemet, ange kommandot:
# sudo yum update -y
Efter uppdatering av systemet kommer ett meddelande som detta att visas.
För att installera Apache på din virtuella server, ange kommandot:
# sudo yum install httpd -y
Efter installationen startar du Apache:
# sudo systemctl start httpd.service
Gå sedan till - http://ServerIP/
och kontrollera att Apache fungerar som det ska
Om allt fungerar som det ska skriver du in kommandot för att starta Apache automatiskt på den virtuella servern:
# sudo systemctl enable httpd.service
För att ladda ner, använd kommandot:
# sudo yum install mariadb-server mariadb -y
När nedladdningen och installationen är klar måste du köra MariaDB:
# sudo systemctl start mariadb
Kör det säkra installationsskriptet, som tar bort osäkra inställningar:
# sudo mysql_secure_installation
Ange root-lösenordet, eftersom du just har skapat databasen är den tom som standard. Nästa samtycker till inställningarna, ange"Y
" överallt. Ange ett nytt lösenord, bekräfta det och godkänn återigen ändringarna med"Y
".
MariaDB är nu installerat.
För att installera PHP, ange kommandot:
# sudo yum install php php-mysql -y
Starta sedan om Apache så att den kan köra PHP:
# sudo systemctl restart httpd.service
För att testa hur PHP fungerar måste du skapa en fil, till exempel index.php med det här kommandot:
# echo "<?php phpinfo(); ?>" > /var/www/html/index.php
Öppna nu länken i din webbläsare - http://ServerIP/index.php
Du bör se en sida med PHP-parametrar.
Därefter behöver du installera paketet för att stödja MariaDB i 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
Efter det startar du om Apache:
# sudo systemctl restart httpd.service
Klart. Du har installerat Apache, MySQL och PHP på den virtuella servern.
Ansluta ytterligare repository
Du måste ansluta ytterligare en lagringsplats för att installera alla komponenter.
# sudo yum install epel-release
För att skapa en anslutning mellan alla komponenter i kedjan är det nödvändigt att använda en databas. Anslut till MySQL-servern:
# mysql -u root -p
Skapa en databas, du måste ange ditt eget lösenord:
CREATE DATABASE vexim;
GRANT ALL ON vexim.* to vexim@localhost identified by 'password';
quit
Om inte alla PHP-moduler är installerade krävs en ytterligare installation.
# yum -y install php-imap php-mbstring php-pdo php-mysql php-cli
Ladda ner Postfixadmin och installera det i mappen /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
Redigera konfigurationsfilen config .inc.php:
# yum -y install dovecot dovecot-mysql
Byt namn på standardkonfigurationen så att vi kan återgå till den vid behov:
# mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-orig
# vi /etc/dovecot/dovecot.conf
Spara följande poster i konfigurationsfilen 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
}
Om du vill konfigurera databasåtkomst skapar du en separat konfigurationsfil dovecot-mysql.conf
# vi /etc/dovecot/dovecot-mysql.conf
och lägg in följande inställningar i den:
## 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
Ändra standardkonfigurationen samtidigt som du sparar en säkerhetskopia.
######################################################################
# 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
Avinstallera Postfix
# alternatives --config mta
# systemctl disable postfix
# systemctl stop postfix
# yum -y remove postfix
Gå till http://server_ip/postfixadmin/setup.php
och följ installationsanvisningarna. När du har skapat superadmin kommer installationsprogrammet att ge dig en hashkod för lösenordet:
Den ska ersättas i filen config.inc.php
(i roten av postfixadmin-katalogen) istället för den här raden:
Då måste du logga in under de skapade uppgifterna, lägga till nödvändiga domäner och brevlådor.
Installation av Roundcube
# yum -y install roundcubemail
Efter installationen måste du lägga till konfigurationen till webbservern så att skriptet öppnas på http://server_ip/roundcubemail/.
# vi /etc/httpd/conf.d/roundcubemail.conf
Spara följande data:
#
# 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 måste startas om efter skrivning:
# systemctl restart httpd.service
För vidare installation skapa en databas, för detta ändamål anslut till MySQL:
# mysql -u root -p
och kör frågor (ange dina egna data):
CREATE DATABASE roundcubedb;
CREATE USER roundcubeuser@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES on roundcubedb.* to roundcubeuser@localhost ;
FLUSH PRIVILEGES;
quit
Därefter måste du öppna installationsprogrammet http://server_ip/roundcubemail/installer
och konfigurera.
Detta slutför konfigurationen, gå till Roundcube http://server_ip/roundcubemail/,
logga in under den tidigare skapade (i Postfixadmin) rutan, gör inställningar och använd.