Apache - messagerie-melanie2/Roundcube-Mel GitHub Wiki

Retour doc Webmail

Configuration

VirtualHost

Création d'une virtualhost pour l'hébergement du Bnum

NameVirtualHost *:443
<VirtualHost *:443>
        ServerName <bnum.url>

        DocumentRoot  /var/www/roundcube

        IndexIgnore *
        DirectoryIndex index.php index.html
        SSLEngine on
        SSLCertificateKeyFile /etc/certs/<certificate-key-file>.pem
        SSLCertificateFile /etc/certs/<certificate-file>.pem
        SSLCACertificateFile /etc/certs/<ca-certificate-file>.pem

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        <Directory /var/www/roundcube/>
                Options FollowSymLinks MultiViews
                AllowOverride None
                Require all granted
        </Directory>
</VirtualHost>

Cache

Certains fichiers du Bnum peuvent être mis en cache dans le navigateur pour améliorer les performances de navigation. Pour cela une configuration Apache particulière doit être mise en place, afin d'indiquer au navigateur quel fichier il peut garder en cache et pendant combien de temps

Voici la configuration de cache recommandée a ajouter à la VirtualHost, dans la partie Directory /var/www/roundcube/

		<IfModule mod_headers.c>
			# replace 'append' with 'merge' for Apache version 2.2.9 and later
			#Header merge Cache-Control public env=!NO_CACHE
                        <FilesMatch "\\.(ico|jpe?g|png|gif|swf)$">
                                Header set Cache-Control "max-age=2592000, public"
                        </FilesMatch>

                        <FilesMatch "\\.(css)$">
                                Header set Cache-Control "max-age=604800, public"
                        </FilesMatch>

                        <FilesMatch "\\.(js)$">
                                Header set Cache-Control "max-age=216000, private"
                        </FilesMatch>

                        <FilesMatch "\\.(x?html?)$">
                                Header set Cache-Control "max-age=600, private, must-revalidate"
                        </FilesMatch>
		</IfModule>

		<IfModule mod_expires.c>
			ExpiresActive On
			ExpiresDefault "access plus 2 month"
		</IfModule>

		FileETag MTime Size

		<IfModule mod_autoindex.c>
			Options -Indexes
		</IfModule>

Compression des réponses

Utilisation du mode deflate pour compresser les réponses. Voici la configuration de deflate recommandée a ajouter à la VirtualHost, dans la partie Directory /var/www/roundcube/

		<IfModule mod_deflate.c>
			SetOutputFilter DEFLATE
		</IfModule>

Mod PHP

En cas d'utilisation d'un mod_php, la configuration de mod_php recommandée, a ajouter à la VirtualHost, dans la partie Directory /var/www/roundcube/

		<IfModule mod_php7.c>
			php_flag	display_errors	Off
			php_flag	log_errors	On

			php_value	upload_max_filesize	1024M
			php_value	post_max_size		1025M
			php_value	memory_limit		512M

			php_flag	register_globals	Off
			php_flag	zlib.output_compression		Off
			php_flag	magic_quotes_gpc		Off
			php_flag	magic_quotes_runtime		Off
			php_flag	zend.ze1_compatibility_mode	Off
			php_flag 	suhosin.session.encrypt 	Off

			php_flag	session.auto_start	Off
			php_value	session.gc_maxlifetime	21600
			php_value	session.gc_divisor	500
			php_value	session.gc_probability	1
		</IfModule>

Protection des urls

Pour éviter que certains fichiers soient accédés depuis l'url du webmail, il est possible de mettre une configuration de protection des urls. Voici la configuration recommandée avec l'utilisation du Bnum, a ajouter à la VirtualHost, dans la partie Directory /var/www/roundcube/

		<IfModule mod_rewrite.c>
			RewriteEngine On
			RewriteRule ^favicon\.ico$ skins/larry/images/favicon.ico

			# security rules:
			# - deny access to files not containing a dot or starting with a dot
			#   in all locations except installer directory
			RewriteRule ^(?!aide)(?!pegase)(?!suggestions)(?!changepassword)(?!service)(?!public)(\.?[^\.]+)$ - [F]
			# - deny access to some locations
			RewriteRule ^/?(\.git|\.tx|SQL|bin|config|logs|temp|tests|program\/(include|lib|localization|steps)) - [F]
			# - deny access to some documentation files
			RewriteRule /?(README\.md|composer\.json-dist|composer\.json|package\.xml)$ - [F]
		</IfModule>
⚠️ **GitHub.com Fallback** ⚠️