şunun yansıması https://github.com/mail-in-a-box/mailinabox.git
@joshdata squashed pull request #1398, removed some comments, and added these notes: * The old init.d script for the management daemon is replaced with a systemd service. * A systemd service configuration is added to configure permissions for munin on startup. * nginx SSL settings are updated because nginx's options and defaults have changed, and we now enable http2. * Automatic SSHFP record generation is updated to know that 22 is the default SSH daemon port, since it is no longer explicit in sshd_config. * The dovecot-lucene package is dropped because the Mail-in-a-Box PPA where we built the package has not been updated for Ubuntu 18.04. * The stock postgrey package is installed instead of the one from our PPA (which we no longer support), which loses the automatic whitelisting of DNSWL.org-whitelisted senders. * Drop memcached and the status check for memcached, which we used to use with ownCloud long ago but are no longer installing. * Other minor changes.pull/1451/head
ebeveyn
504a9b0abc
işleme
d96613b8fe
@ -0,0 +1,10 @@ |
||||
[Unit] |
||||
Description=Mail-in-a-Box System Management Service |
||||
After=multi-user.target |
||||
|
||||
[Service] |
||||
Type=idle |
||||
ExecStart=/usr/local/lib/mailinabox/start |
||||
|
||||
[Install] |
||||
WantedBy=multi-user.target |
@ -1,135 +0,0 @@ |
||||
#! /bin/sh |
||||
### BEGIN INIT INFO |
||||
# Provides: mailinabox |
||||
# Required-Start: $all |
||||
# Required-Stop: $all |
||||
# Default-Start: 2 3 4 5 |
||||
# Default-Stop: 0 1 6 |
||||
# Short-Description: Start and stop the Mail-in-a-Box management daemon. |
||||
# Description: Start and stop the Mail-in-a-Box management daemon. |
||||
### END INIT INFO |
||||
|
||||
# Adapted from http://blog.codefront.net/2007/06/11/nginx-php-and-a-php-fastcgi-daemon-init-script/ |
||||
|
||||
PATH=/sbin:/usr/sbin:/bin:/usr/bin |
||||
DESC="Mail-in-a-Box Management Daemon" |
||||
NAME=mailinabox |
||||
DAEMON=/usr/local/lib/mailinabox/start |
||||
PIDFILE=/var/run/$NAME.pid |
||||
SCRIPTNAME=/etc/init.d/$NAME |
||||
|
||||
# Exit if the package is not installed |
||||
[ -x "$DAEMON" ] || exit 0 |
||||
|
||||
# Set defaults. |
||||
START=yes |
||||
EXEC_AS_USER=root |
||||
|
||||
# Ensure Python reads/writes files in UTF-8. If the machine |
||||
# triggers some other locale in Python, like ASCII encoding, |
||||
# Python may not be able to read/write files. Set also |
||||
# setup/start.sh (where the locale is also installed if not |
||||
# already present) and management/daily_tasks.sh. |
||||
export LANGUAGE=en_US.UTF-8 |
||||
export LC_ALL=en_US.UTF-8 |
||||
export LANG=en_US.UTF-8 |
||||
export LC_TYPE=en_US.UTF-8 |
||||
|
||||
# Read configuration variable file if it is present |
||||
[ -r /etc/default/$NAME ] && . /etc/default/$NAME |
||||
|
||||
# Load the VERBOSE setting and other rcS variables |
||||
. /lib/init/vars.sh |
||||
|
||||
# Define LSB log_* functions. |
||||
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. |
||||
. /lib/lsb/init-functions |
||||
|
||||
# If the daemon is not enabled, give the user a warning and then exit, |
||||
# unless we are stopping the daemon |
||||
if [ "$START" != "yes" -a "$1" != "stop" ]; then |
||||
log_warning_msg "To enable $NAME, edit /etc/default/$NAME and set START=yes" |
||||
exit 0 |
||||
fi |
||||
|
||||
# Process configuration |
||||
#export ... |
||||
DAEMON_ARGS="" |
||||
|
||||
|
||||
do_start() |
||||
{ |
||||
# Return |
||||
# 0 if daemon has been started |
||||
# 1 if daemon was already running |
||||
# 2 if daemon could not be started |
||||
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ |
||||
|| return 1 |
||||
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \ |
||||
--background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON -- \ |
||||
$DAEMON_ARGS \ |
||||
|| return 2 |
||||
} |
||||
|
||||
do_stop() |
||||
{ |
||||
# Return |
||||
# 0 if daemon has been stopped |
||||
# 1 if daemon was already stopped |
||||
# 2 if daemon could not be stopped |
||||
# other if a failure occurred |
||||
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE > /dev/null # --name $DAEMON |
||||
RETVAL="$?" |
||||
[ "$RETVAL" = 2 ] && return 2 |
||||
# Wait for children to finish too if this is a daemon that forks |
||||
# and if the daemon is only ever run from this initscript. |
||||
# If the above conditions are not satisfied then add some other code |
||||
# that waits for the process to drop all resources that could be |
||||
# needed by services started subsequently. A last resort is to |
||||
# sleep for some time. |
||||
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON |
||||
[ "$?" = 2 ] && return 2 |
||||
# Many daemons don't delete their pidfiles when they exit. |
||||
rm -f $PIDFILE |
||||
return "$RETVAL" |
||||
} |
||||
case "$1" in |
||||
start) |
||||
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" |
||||
do_start |
||||
case "$?" in |
||||
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; |
||||
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; |
||||
esac |
||||
;; |
||||
stop) |
||||
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" |
||||
do_stop |
||||
case "$?" in |
||||
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; |
||||
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; |
||||
esac |
||||
;; |
||||
restart|force-reload) |
||||
log_daemon_msg "Restarting $DESC" "$NAME" |
||||
do_stop |
||||
case "$?" in |
||||
0|1) |
||||
do_start |
||||
case "$?" in |
||||
0) log_end_msg 0 ;; |
||||
1) log_end_msg 1 ;; # Old process is still running |
||||
*) log_end_msg 1 ;; # Failed to start |
||||
esac |
||||
;; |
||||
*) |
||||
# Failed to stop |
||||
log_end_msg 1 |
||||
;; |
||||
esac |
||||
;; |
||||
*) |
||||
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 |
||||
exit 3 |
||||
;; |
||||
esac |
@ -0,0 +1,10 @@ |
||||
[Unit] |
||||
Description=Munin System Monitoring Startup Script |
||||
After=multi-user.target |
||||
|
||||
[Service] |
||||
Type=idle |
||||
ExecStart=/usr/local/lib/mailinabox/munin_start.sh |
||||
|
||||
[Install] |
||||
WantedBy=multi-user.target |
@ -1,76 +1,20 @@ |
||||
# from https://gist.github.com/konklone/6532544 and https://mozilla.github.io/server-side-tls/ssl-config-generator/ |
||||
################################################################################################################### |
||||
|
||||
# Basically the nginx configuration I use at konklone.com. |
||||
# I check it using https://www.ssllabs.com/ssltest/analyze.html?d=konklone.com |
||||
# |
||||
# To provide feedback, please tweet at @konklone or email eric@konklone.com. |
||||
# Comments on gists don't notify the author. |
||||
# |
||||
# Thanks to WubTheCaptain (https://wubthecaptain.eu) for his help and ciphersuites. |
||||
# Thanks to Ilya Grigorik (https://www.igvita.com) for constant inspiration. |
||||
|
||||
# Path to certificate and private key. |
||||
# The .crt may omit the root CA cert, if it's a standard CA that ships with clients. |
||||
#ssl_certificate /path/to/unified.crt; |
||||
#ssl_certificate_key /path/to/my-private-decrypted.key; |
||||
|
||||
# Tell browsers to require SSL (warning: difficult to change your mind) |
||||
# Handled by the management daemon because we can toggle this version or a |
||||
# preload version. |
||||
#add_header Strict-Transport-Security max-age=31536000; |
||||
|
||||
# Prefer certain ciphersuites, to enforce Forward Secrecy and avoid known vulnerabilities. |
||||
# |
||||
# Forces forward secrecy in all browsers and clients that can use TLS, |
||||
# but with a small exception (DES-CBC3-SHA) for IE8/XP users. |
||||
# |
||||
# Reference client: https://www.ssllabs.com/ssltest/analyze.html |
||||
ssl_prefer_server_ciphers on; |
||||
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; |
||||
|
||||
# Cut out (the old, broken) SSLv3 entirely. |
||||
# This **excludes IE6 users** and (apparently) Yandexbot. |
||||
# Just comment out if you need to support IE6, bless your soul. |
||||
# We track the Mozilla "intermediate" compatibility TLS recommendations. |
||||
# Note that these settings are repeated in the SMTP and IMAP configuration. |
||||
ssl_protocols TLSv1.2 TLSv1.1 TLSv1; |
||||
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; |
||||
ssl_dhparam STORAGE_ROOT/ssl/dh2048.pem; |
||||
|
||||
# Turn on session resumption, using a cache shared across nginx processes, |
||||
# as recommended by http://nginx.org/en/docs/http/configuring_https_servers.html |
||||
ssl_session_cache shared:SSL:50m; |
||||
ssl_session_timeout 1d; |
||||
#keepalive_timeout 70; # in Ubuntu 14.04/nginx 1.4.6 the default is 65, so plenty good |
||||
|
||||
# Buffer size of 1400 bytes fits in one MTU. |
||||
# nginx 1.5.9+ ONLY |
||||
#ssl_buffer_size 1400; |
||||
|
||||
# SPDY header compression (0 for none, 9 for slow/heavy compression). Preferred is 6. |
||||
# |
||||
# BUT: header compression is flawed and vulnerable in SPDY versions 1 - 3. |
||||
# Disable with 0, until using a version of nginx with SPDY 4. |
||||
spdy_headers_comp 0; |
||||
|
||||
# Now let's really get fancy, and pre-generate a 2048 bit random parameter |
||||
# for DH elliptic curves. If not created and specified, default is only 1024 bits. |
||||
# |
||||
# Generated by OpenSSL with the following command: |
||||
# openssl dhparam -outform pem -out dhparam2048.pem 2048 |
||||
# |
||||
# Note: raising the bits to 2048 excludes Java 6 clients. Comment out if a problem. |
||||
ssl_dhparam STORAGE_ROOT/ssl/dh2048.pem; |
||||
|
||||
ssl_buffer_size 1400; |
||||
|
||||
# OCSP stapling - means nginx will poll the CA for signed OCSP responses, |
||||
# and send them to clients so clients don't make their own OCSP calls. |
||||
# http://en.wikipedia.org/wiki/OCSP_stapling |
||||
# |
||||
# while the ssl_certificate above may omit the root cert if the CA is trusted, |
||||
# ssl_trusted_certificate below must point to a chain of **all** certs |
||||
# in the trust path - (your cert, intermediary certs, root cert) |
||||
# |
||||
# 8.8.8.8 and 8.8.4.4 below are Google's public IPv4 DNS servers. |
||||
# nginx will use them to talk to the CA. |
||||
ssl_stapling on; |
||||
ssl_stapling_verify on; |
||||
resolver 127.0.0.1 valid=86400; |
||||
resolver_timeout 10; |
||||
|
||||
# h/t https://gist.github.com/konklone/6532544 |
||||
|
@ -0,0 +1,2 @@ |
||||
#!/bin/bash |
||||
mkdir -p /var/run/munin && chown munin /var/run/munin |
Yükleniyor…
Yeni konuda referans