Apache - messagerie-melanie2/Roundcube-Mel GitHub Wiki
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>
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>
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>
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>
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>