Инсталирање поштанског сервера на CentOS 7 може се обавити на неколико начина, али један од најчешћих је коришћење комбинације Postfix-а и Dovecot-а.
Postfix је програм за слање и један је од најпопуларнијих мејл сервера на свету. Dovecot је, с друге стране, мејл сервер који се користи за примање имејлова користећи IMAP или POP протокол.
Ексим је агент за пренос поште (MTA) који се често користи у оперативним системима сличним Јуниксу. Ексим је бесплатан софтвер објављен под условима ГНУ-ове (Опште јавне лиценце) и представља свестран и флексибилан алат за е-пошту са широким функцијама за проверу долазне е-поште.
Довекот је IMAP и POP3 поштански сервер отвореног кода за Linux/UNIX-лике системе. Безбедност је била камен темељац фокуса овог производа на флексибилност и брзину.
Раундкуб је веб-базирани интерфејс за е-пошту који вам омогућава рад са вашим поштанским сандучићима користећи IMAP и SMTP протоколе. Апликација има моћну функционалност и упоредива је по могућностима са десктоп имејл клијентима као што су Outlook Express или Mozilla Thunderbird.
Пријављујемо се на наш виртуелни сервер путем SSH-а.
Затим треба да ажурирате систем, унесите команду:
# sudo yum update -y
Након ажурирања система, појавиће се следећа порука.
Да бисте инсталирали Apache на виртуелни сервер, унесите команду:
# sudo yum install httpd -y
Након инсталације, покрените Apache:
# sudo systemctl start httpd.service
Након тога, идите на адресу - http://ServerIP/
и проверите рад Apache-а
Ако све ради исправно, унесите команду за аутоматско покретање Apache-а на виртуелном серверу:
# sudo systemctl enable httpd.service
За преузимање користите команду:
# sudo yum install mariadb-server mariadb -y
Када се преузимање и инсталација заврше, потребно је да покренете MariaDB:
# sudo systemctl start mariadb
Покрените скрипту за безбедну инсталацију, која ће уклонити небезбедна подешавања:
# sudo mysql_secure_installation
Унесите root лозинку, пошто сте управо креирали базу података, она је подразумевано празна. Затим се сложите са подешавањима, свуда унесите „ Y
“. Унесите нову лозинку, потврдите је и поново се сложите са променама „ Y
“.
MariaDB је инсталиран.
Да бисте инсталирали PHP, унесите команду:
# sudo yum install php php-mysql -y
Затим, поново покрените Apache како би могао да ради са PHP-ом:
# sudo systemctl restart httpd.service
Да бисте тестирали PHP, потребно је да направите датотеку, на пример index.php, користећи ову команду:
# echo "<?php phpinfo(); ?>" > /var/www/html/index.php
Сада отворите везу у вашем прегледачу - http://ServerIP/index.php
Требало би да видите страницу са PHP параметрима
Затим, потребно је да инсталирате пакет за подршку MariaDB-а у 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
Након овога, поново покрените Apache:
# sudo systemctl restart httpd.service
Готово. Инсталирали сте Apache, MySQL и PHP на ваш виртуелни сервер.
Повезивање додатних репозиторијума
Да бисте инсталирали све компоненте, мораћете да повежете додатни репозиторијум.
# sudo yum install epel-release
Да би се створила веза између свих компоненти ланца, потребно је користити једну базу података. Повежимо се са MySQL сервером:
# mysql -u root -p
Креирајте базу података, морате навести сопствену лозинку:
CREATE DATABASE vexim; GRANT ALL ON vexim.* to vexim@localhost identified by 'password'; quit
У случају да нису инсталирани сви PHP модули, потребна је додатна инсталација.
# yum -y install php-imap php-mbstring php-pdo php-mysql php-cli
Преузмите Postfixadmin и инсталирајте га у фолдер /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
Измените конфигурациону датотеку config.inc.php
:
# yum -y install dovecot dovecot-mysql
Преименујмо стандардну конфигурацију тако да се можемо вратити на њу ако је потребно:
# mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-orig # vi /etc/dovecot/dovecot.conf
Следеће записе чувамо у 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 }
Дла настројки доступа к бази данних, создаем отдельниј конфиг dovecot-mysql.conf
# vi /etc/dovecot/dovecot-mysql.conf
и прописиваем в него следече настројке:
## 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
Мењамо стандардну конфигурацију, док чувамо резервну копију.
###################################################################### # 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
Уклањање постфикса
# alternatives --config mta # systemctl disable postfix # systemctl stop postfix # yum -y remove postfix
Пратите линк http://server_ip/postfixadmin/setup.php
и пратите упутства за инсталацију. Након креирања суперадминистратора, инсталатер ће вам дати хеш код лозинке:
Потребно је да се замени у датотеци config.inc.php
(у корену директоријума postfixadmin) уместо ове линије:
Затим, потребно је да се пријавите на систем користећи креиране податке, додате потребне домене и поштанске сандучиће.
Инсталирање Roundcube-а
# yum -y install roundcubemail
Након инсталације, потребно је да додате конфигурацију на веб сервер тако да се скрипта отвара на http://server_ip/roundcubemail/
# vi /etc/httpd/conf.d/roundcubemail.conf
Чувамо следеће податке:
# # 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:
# systemctl restart httpd.service
За даљу инсталацију креирамо базу података, за то се повезујемо са MySQL-ом:
# mysql -u root -p
и извршавамо захтеве (пружамо сопствене податке):
CREATE DATABASE roundcubedb; CREATE USER roundcubeuser@localhost IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES on roundcubedb.* to roundcubeuser@localhost ; FLUSH PRIVILEGES; quit
Затим, потребно је да отворите инсталер http://server_ip/roundcubemail/installer
и да га конфигуришете.
Овим је подешавање завршено, идите на Roundcube http://server_ip/roundcubemail/
, пријавите се на систем користећи претходно креирано (у Postfixadmin-у) поштанско сандуче, извршите подешавања и користите га.