Начини плаћања Abuse

Мејл сервер на CentOS 7. Инсталирање Dovecot-а + Exim-а + Roundcube-а

13.03.2023, 23:01

Инсталирање поштанског сервера на CentOS 7 може се обавити на неколико начина, али један од најчешћих је коришћење комбинације Postfix-а и Dovecot-а.

Postfix је програм за слање и један је од најпопуларнијих мејл сервера на свету. Dovecot је, с друге стране, мејл сервер који се користи за примање имејлова користећи IMAP или POP протокол.

Шта је Ексим?

Ексим је агент за пренос поште (MTA) који се често користи у оперативним системима сличним Јуниксу. Ексим је бесплатан софтвер објављен под условима ГНУ-ове (Опште јавне лиценце) и представља свестран и флексибилан алат за е-пошту са широким функцијама за проверу долазне е-поште.

Шта је Довекот?

Довекот је IMAP и POP3 поштански сервер отвореног кода за Linux/UNIX-лике системе. Безбедност је била камен темељац фокуса овог производа на флексибилност и брзину.

Шта је Раундкуб?

Раундкуб је веб-базирани интерфејс за е-пошту који вам омогућава рад са вашим поштанским сандучићима користећи IMAP и SMTP протоколе. Апликација има моћну функционалност и упоредива је по могућностима са десктоп имејл клијентима као што су Outlook Express или Mozilla Thunderbird.

Инсталирање Apache + MySQL + PHP пакета

Пријављујемо се на наш виртуелни сервер путем 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

Инсталирање MySQL-а (MariaDB)

За преузимање користите команду:

 # sudo yum install mariadb-server mariadb -y

Када се преузимање и инсталација заврше, потребно је да покренете MariaDB:

 # sudo systemctl start mariadb

Покрените скрипту за безбедну инсталацију, која ће уклонити небезбедна подешавања:

 # sudo mysql_secure_installation

Унесите root лозинку, пошто сте управо креирали базу података, она је подразумевано празна. Затим се сложите са подешавањима, свуда унесите „ Y “. Унесите нову лозинку, потврдите је и поново се сложите са променама „ Y “.

MariaDB је инсталиран.

Инсталирање PHP-а

Да бисте инсталирали 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

Креирање vexim базе података

Да би се створила веза између свих компоненти ланца, потребно је користити једну базу података. Повежимо се са MySQL сервером:

 # mysql -u root -p

Креирајте базу података, морате навести сопствену лозинку:

 CREATE DATABASE vexim; GRANT ALL ON vexim.* to vexim@localhost identified by 'password'; quit

Инсталирање Postfixadmin-а

У случају да нису инсталирани сви 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'

Инсталација Exim-а

# 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

Подешавање Postfixadmin-а

Пратите линк 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-у) поштанско сандуче, извршите подешавања и користите га.