Mailserver – CentOS 7, SOGo, LDAP

Ziel ist es einen Mailserver zu installieren, bei dem sich User per Weboberfläche mit ihren Windows Active Directory Credentials authentifizieren können.

Die verwendeten Komponenten lauten wie folgt:

  • OS : CentOS 7
  • Webserver: Apache2
  • PHP 7.2
  • Maria DB
  • phpMyAdmin
  • Postfix
  • Dovecot & Pigeonhole
  • SOGo
  • Quota
  • NTP

  • hostname = sogo01
  • FQDN = sogo01.vm.local
  • 10.0.2.15 sogo01.vm.local
  • 10.0.2.16 vdc1.vm.local
  • LDAP Base: cn=Users,dc=vm,dc=local
  • LDAP ServiceUser: dn = cn=Dovecot,ou=Services,dc=vm,dc=local; dnpass = D0v3c0t
  • User: joe,rootPW
  • PW: rootPW

0. SELinux

reboot


1. Hostname


2. Static IP

Infos vorher mit “ip a” und “ip r” holen (MAC,Netmask,Gateway)

Entweder:
system-config-network

Oder:

service network restart


3. EPEL & Remi repositories hinzufügen

yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

yum -y check-update
yum -y upgrade


4. Nano

yum -y install nano


5. Apache2

yum -y install httpd

systemctl enable httpd
systemctl start httpd

firewall-cmd –permanent –zone=public –add-service=http
firewall-cmd –permanent –zone=public –add-service=https
firewall-cmd –permanent –zone=public –add-service=imaps

firewall-cmd –permanent –zone=public –add-service=smtps
firewall-cmd –permanent –zone=public –add-service=smtp-submission
firewall-cmd –permanent –zone=public –add-service=smtp

firewall-cmd –reload


6. MariaDB

yum -y install mariadb-server
systemctl start mariadb
systemctl enable mariadb

mysql_secure_installation

Remote User erstellen da root user gesperrt ist:
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO remote@’localhost’ IDENTIFIED BY ‘rootPW’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit


7. PHP 7.2

yum -y install yum-utils
yum-config-manager –enable remi-php72
yum -y update
yum -y install php72 mod_php php-mcrypt php-curl php-ldap php-zip php-fileinfo php-fpm php-imap php-mysqlnd php-pecl-memcached php-gd php-mbstring php-xml

systemctl restart httpd

Test:

sogo01.vm.local/test/phpinfo.php


8. phpMyAdmin

yum -y install wget
mkdir /usr/share/phpmyadmin
cd /usr/share/phpmyadmin
wget https://files.phpmyadmin.net/phpMyAdmin/4.7.9/phpMyAdmin-4.7.9-all-languages.tar.gz
tar xfvz phpMyAdmin-4.7.9-all-languages.tar.gz
rm -f phpMyAdmin-4.7.9-all-languages.tar.gz
mv phpMyAdmin-4.7.9-all-languages/* .
rm -rf phpMyAdmin-4.7.9-all-languages/
chown -R apache:apache .
chmod -R 755 .
chown root:apache /var/lib/php/*

cp config.sample.inc.php config.inc.php

systemctl restart httpd

Login und Datenbank via Dialog anlegen lassen


9. vmail User

useradd -u 6000 vmail -d /var/vmail
mkdir /var/vmail
chown vmail:vmail /var/vmail


10. Postfix

yum -y install postfix #vorinstalliert auf CentOS 7

postmap hash:/etc/postfix/virtual_domains

Rechte für die Dateien vergeben
cd /etc/postfix
chown -R root:postfix *
chmod 644 main.cf
chmod 644 master.cf
chmod 644 ldap_*
chmod 644 virtual_*
postfix check
systemctl start postfix
systemctl enable postfix


11. SSL Zertifikat

apt-get update
apt-get install python-certbot-apache -t stretch-backports

certbot certonly –webroot -d bebeidon.de
/etc/httpd/

certbot certonly –webroot -d cloud.bebeidon.de
/etc/httpd/

systemctl enable certbot.timer
systemctl start certbot.timer

Pfad anpassen in main.cf & dovecot.conf & apache


12. Dovecot & Pigeonhole (Managesieve)

yum -y install dovecot dovecot-pigeonhole

cp /etc/dovecot/dovecot-ldap.conf /etc/dovecot/dovecot-ldap.conf.ext

nano /var/log/dovecot-lda-errors.log
nano /var/log/dovecot-lda.log
chown vmail:mail /var/log/dovecot-lda-errors.log
chown vmail:mail /var/log/dovecot-lda.log
chmod 644 /var/log/dovecot-lda-errors.log
chmod 644 /var/log/dovecot-lda.log

systemctl enable dovecot
chkconfig dovecot on

systemctl start dovecot

Test:

openssl s_client -connect localhost:993
a login adon rootPW
b select inbox
c logout


13. Sogo

rpm –import “https://pgp.mit.edu/pks/lookup?op=get&search=0xCB2D3A2AA0030E2C”
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sed -i ‘/enabled=1/a \
exclude=gnustep*’ /etc/yum.repos.d/epel.repo

yum update
yum -y install sogo sope49-gdl1-mysql

#rpl ‘127.0.0.1’ localhost /etc/memcached.conf

service memcached restart
chkconfig memcached on

Über phpMyADmin neuer Benutzer: sogo

chown root:sogo /etc/sogo/sogo.conf
chmod 644 /etc/sogo/sogo.conf

sed -i ‘s#sogo01#vm.local#g’ /etc/httpd/conf.d/SOGo.conf

sed -i ‘s#”x-webobjects-server-port” “443”#”x-webobjects-server-port” “80”#’ /etc/httpd/conf.d/SOGo.conf

sed -i ‘s#https#http#’ /etc/httpd/conf.d/SOGo.conf

Für https nach dem Loginfenster:

systemctl restart httpd
systemctl restart sogod

chown -R vmail:sogo /var/vmail
chmod -R 770 /var/vmail # evtl SOGo als vmail ausführen?


14. Quota

yum -y install quota

chown vmail:sogo /usr/local/bin/quota-warning.sh
chmod 770 /usr/local/bin/quota-warning.sh

systemctl restart dovecot


15. Server-Info / Server-Status


16. FastCGI

yum -y install fcgi mod_fcgid lighttpd-fastcgi
systemctl start php-fpm.service
systemctl enable php-fpm.service


17. HTTPS


18. NTP

#evtl timezone einstellen:
rm /etc/localtime
ln –s /usr/share/zoneinfo/Europe/Berlin /etc/localtime

yum install ntp
ntpdate 0.pool.ntp.org
hwclock –systohc
service ntpd start
chkconfig ntpd on

2 comments

  1. Hallo,
    ich freue mich eine aktuelle Anleitung zu dem Thema gefunden zu haben ich werde sie im laufe der Woche mal ausprobieren.

    Grüße
    ks98

    1. Hi ks98, leider ist auch dieser Artikel nicht mehr brandaktuell (März 2018). php 7.2 muss vermutlich nicht mehr so “umständlich” installiert werden, da es bereits in den Standard repositories aufgenommen wurde. Der sogo User sollte außerdem zu der vmail Gruppe hinzugefügt werden, damit Drafts undsoweiter erstellt werden können.
      Ich freue mich wenn dir der Artikel trotzdem weiterhilft.

Leave a Reply

Your email address will not be published. Required fields are marked *