Seafile mit virtual.conf und Apache


Einstellungen der Virtual Hosts

Mithilfe einer virtual.conf Datei kann man das Problem von mehreren Domains oder Subdomains auf einem Server sehr gut abdecken ohne komplizierte Firewall rules oder das ansprechen unterschiedlicher directories über die Records der Domain. In meinem Beispiel habe ich die HTTP Weiterleitungen meiner Domains nur auf die IP Adresse an sich gelegt und den Rest der Zuweisung übernimmt der Server selbst.

Nachfolgend habe ich beschrieben, wie man mit dieser Datei den Seafile Server einrichtet, um nur noch über den Standardport 80 zu surfen und nicht mehr wie normalerweise über Port 8000. Bei den Standardeinstellungen muss man in der Firewall nämlich immer Port 8000, 8080, 8082, 10001 und 12001 öffnen. Die Datei mit den Einstellungen zu den Virtual Hosts findet man unter /etc/httpd/conf.d/virtual.conf

die Include Liste im Ordner /etc/httpd/conf.d/sites-enabled/ deckt noch mehr virtuelle Hosts ab.


Seafile

Seafile wird durch die Eintragung des ProxyPass nur noch über Port 80 angesteuert. In der Firewall muss auch nicht mehr geöffnet werden. Folgende Eintragungen sind dafür nötig:

<VirtualHost _default_:80>
DocumentRoot /var/www/html
    </VirtualHost>

    include /etc/httpd/conf.d/sites-enabled

<VirtualHost *:80>
ServerName file.linux-24.com
DocumentRoot /var/web
Alias /media /home/seafile/seafile-server-latest/seahub/media
RewriteEngine On

#
# seafile httpserver
#
  ProxyPass /seafhttp http://127.0.0.1:8082 retry=0
  ProxyPassReverse /seafhttp http://127.0.0.1:8082
  RewriteRule ^/seafhttp - [QSA,L]


#
# seafile webdav
#
  ProxyPassReverse /seafdav http://127.0.0.1:8080

#
# seahub
#
  ProxyPass / http://127.0.0.1:8000/
  ProxyPassReverse / http://127.0.0.1:8000
  RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]

</VirtualHost>

install SOGo with LDAP on Dovecot+Postfix


Auf Centos 7.1 folgendes repo hinterlegen:

[SOGo]
name=Inverse SOGo Repository
baseurl=http://inverse.ca/downloads/SOGo/RHEL7/$basearch
gpgcheck=0

dazu beachten, dass das EPEL repo vorhanden ist.

SOGo installieren mit Abängigkeiten:

yum install sogo sope49-gdl1-mysql sope49-ldap sogo-activesync libwbxml sogo-ealarms-notify sogo-tool

in /etc/postfix/aliases folgendes eingeben, damit Benachrichtigungen für cron Jobs an den Administrator geschickt werden.

sogo: root

dazu noch folgendes ausführen, um die "alias Datenbank" zu aktualisieren.

postalias /etc/postfix/aliases

SOGo Datenbank erstellen und Rechte vergeben

mysql -u root -p 
mysql* CREATE DATABASE sogo CHARSET='UTF8';
mysql* GRANT ALL ON sogo.* TO sogo@localhost IDENTIFIED BY 'password';

SOGo erstellt alle Tabellen und Infos automatisch, wenn die Rechte passen.

SOGo konfigurieren

config file in /etc/sogo/sogo.conf ändern wie folgt:

{
// Official SOGo documents:
//  - http://www.sogo.nu/english/support/documentation.html
//  - http://wiki.sogo.nu
//
// Mailing list:
//  - http://www.sogo.nu/english/support/community.html

// Enable verbose logging. Reference:
// http://www.sogo.nu/nc/support/faq/article/how-to-enable-more-verbose-logging-in-sogo.html
//ImapDebugEnabled = YES;
//LDAPDebugEnabled = YES;
//MySQL4DebugEnabled = YES;
//PGDebugEnabled = YES;

// Daemon address and port
WOPort = 127.0.0.1:20000;

// PID file
//WOPidFile = /var/run/sogo/sogo.log;

// Log file
//WOLogFile = /var/log/sogo/sogo.log;

// IMAP connection pool.
// Your performance will slightly increase, as you won't open a new
// connection for every access to your IMAP server.
// But you will get a lot of simultaneous open connections to your IMAP
// server, so make sure he can handle them.
// For debugging it is reasonable to turn pooling off.
//NGImap4DisableIMAP4Pooling = NO;

SOGoProfileURL = "mysql://sogo:password@127.0.0.1:3306/sogo/sogo_user_profile";
OCSFolderInfoURL = "mysql://sogo:password@127.0.0.1:3306/sogo/sogo_folder_info";
OCSSessionsFolderURL = "mysql://sogo:password@127.0.0.1:3306/sogo/sogo_sessions_folder";

// Default language in the web interface
SOGoLanguage = English;

// Specify which module to show after login: Calendar, Mail, Contacts.
SOGoLoginModule = Mail;

// Must login with full email address
SOGoForceExternalLoginWithEmail = YES;

// Allow user to change full name and email address.
SOGoMailCustomFromEnabled = YES;

// Enable email-based alarms on events and tasks.
SOGoEnableEMailAlarms = YES;
OCSEMailAlarmsFolderURL = "mysql://sogo:password@127.0.0.1:3306/sogo/sogo_alarms_folder";

// IMAP server
//SOGoIMAPServer = "imaps://127.0.0.1:143/?tls=YES";
// Local connection is considered as secure by Dovecot.
SOGoIMAPServer = "imap://127.0.0.1:143/";

// SMTP server
SOGoMailingMechanism = smtp;
SOGoSMTPServer = 127.0.0.1;
//SOGoSMTPAuthenticationType = PLAIN;

// Enable managesieve service
//
// WARNING: Sieve scripts generated by SOGo is not compatible with Roundcube
//          webmail, don't use sieve service in both webmails, otherwise
//          it will be messy.
//
//SOGoSieveServer = sieve://127.0.0.1:4190;
//SOGoSieveScriptsEnabled = YES;
//SOGoVacationEnabled = YES;
//SOGoForwardEnabled = YES;

// Memcached
SOGoMemcachedHost = 127.0.0.1;
SxVMEMLimit = 4096;
SOGoTimeZone = "Europe/Berlin";

SOGoFirstDayOfWeek = 1;

SOGoRefreshViewCheck = every_5_minutes;
SOGoMailReplyPlacement = below;

SOGoAppointmentSendEMailNotifications = YES;
SOGoFoldersSendEMailNotifications = YES;
SOGoACLsSendEMailNotifications = YES;

// PostgreSQL cannot update view
SOGoPasswordChangeEnabled = YES;

// Authentication using LDAP
SOGoUserSources = (
    {
        type = ldap;
        hostname = "ldap://127.0.0.1:389";
        baseDN = "o=domains,dc=example,dc=com";
        //bindAsCurrentUser = YES;
        bindDN = "cn=vmailadmin,dc=example,dc=com";
        bindPassword = "hashpassword";
        filter = "objectClass=mailUser AND accountStatus=active AND enabledService=mail";
        scope = SUB;

        // The algorithm used for password encryption when changing
        // passwords without Password Policies enabled.
        // Possible values are: plain, crypt, md5-crypt, ssha.
        userPasswordAlgorithm = ssha;

        IDFieldName = mail;
        bindFields = (mail);
        CNFieldName = cn;
        // value of UID field must be unique on whole server.
        UIDFieldName = mail;
        IMAPLoginFieldName = mail;
        SearchFieldNames = (cn, sn, displayName, telephoneNumber, mail, shadowAddress);
        canAuthenticate = YES;
        displayName = "Global Address Book";
        id = ldap_auth;
        isAddressBook = YES;
    }
);
}

Webserver konfigurieren

SOGo hat ein eigenes Apache config file unter /etc/httpd/conf.d/SOGo.conf da müssen wir den Proxy für das Active Sync eintragen

ProxyPass /Microsoft-Server-ActiveSync \
http://127.0.0.1:20000/SOGo/Microsoft-Server-ActiveSync \
 retry=60 connectiontimeout=5 timeout=360

In der selben Datei die Variable yourhostname mit dem eigenen FQDN ersetzen.

SOGo und Abhängigkeiten starten:

service httpd start
service memcached start
service sogod start

Cron jobs hinzufügen:

# iRedMail: SOGo email reminder, should be run every minute.
*   *   *   *   *   /usr/sbin/sogo-ealarms-notify

# iRedMail: SOGo session cleanup, should be run every minute.
# Ajust the [X]Minutes parameter to suit your needs
# Example: Sessions without activity since 30 minutes will be dropped:
*   *   *   *   *   /usr/sbin/sogo-tool expire-sessions 30

# iRedMail: SOGo vacation messages expiration
# The credentials file should contain the sieve admin credentials (username:passwd)
0   0   *   *   *   /usr/sbin/sogo-tool expire-autoreply -p /etc/sogo/sieve.cred

Die Datei /var/www/html wie folgt anpassen, damit die "standard" URL direkt auf SOGo umgeleitet wird:

<html>
 <head>
<meta HTTP-EQUIV="REFRESH" content="0; url=/SOGo/">
</head>
</html>

SOGo über den Webbrowser öffnen:

im Webbrowser die URL: example.com eingeben und öffnen

Falls die direkte Weiterleitung auf die Standard URL nicht gewünscht ist, kann die Eintragung in /var/www/html auch ausgelassen werden. Dann öffnen wir SOGo über die URL example.com/SOGo

ACHTUNG! die URL ist case-sensitive. Dies bedeutet, dass bei SOGo auf Groß- und Kleinschreibung geachtet werden muss.