Initial commit - merge old projekts 'amavisd-new/', 'dovecot/', 'postfix', 'postfixadmin' and 'roundcube'.
This commit is contained in:
commit
ced2a28679
21
.gitignore
vendored
Normal file
21
.gitignore
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
# - common
|
||||||
|
*.log
|
||||||
|
*.swp
|
||||||
|
conf/*.conf
|
||||||
|
|
||||||
|
# - Postfixadmin
|
||||||
|
postfixadmin-*
|
||||||
|
|
||||||
|
# - AMaVis /vacation
|
||||||
|
/dcc*
|
||||||
|
*.log
|
||||||
|
*.tar.Z
|
||||||
|
|
||||||
|
# - Dovecot
|
||||||
|
dovecot*
|
||||||
|
log*
|
||||||
|
|
||||||
|
# - roundcube
|
||||||
|
/log/*
|
||||||
|
roundcubemail-*
|
502
BAK/install_postfix_base.sh.00
Executable file
502
BAK/install_postfix_base.sh.00
Executable file
@ -0,0 +1,502 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
_TLS_CERT_DIR=/etc/postfix/ssl
|
||||||
|
_TLS_CERT_FILE="${_TLS_CERT_DIR}/mailserver.crt"
|
||||||
|
_TLS_KEY_FILE="${_TLS_CERT_DIR}/mailserver.key"
|
||||||
|
|
||||||
|
_TLS_CA_FILE=/etc/ssl/certs/ca-certificates.crt
|
||||||
|
|
||||||
|
|
||||||
|
_HOSTNAME=<hostname>
|
||||||
|
_IPV4=<IPv4-address>
|
||||||
|
_EXT_IF_IP=<extern interface IPv4>
|
||||||
|
|
||||||
|
## - Leave empty, if no IPv6 should be supported
|
||||||
|
## -
|
||||||
|
_IPV6=<IPv6 Address>
|
||||||
|
#_IPV6=
|
||||||
|
|
||||||
|
_ADMIN_EMAIL=<admin email>
|
||||||
|
|
||||||
|
_SASL_AUTH=<true|false>
|
||||||
|
_RELAY_HOST=b.mx.oopen.de
|
||||||
|
_SASL_USER=anw-urb
|
||||||
|
_SASL_PASS='OhPie2aethei'
|
||||||
|
|
||||||
|
## ---
|
||||||
|
|
||||||
|
|
||||||
|
# - Is this a systemd system?
|
||||||
|
# -
|
||||||
|
if [[ "X`which systemd`" = "X" ]]; then
|
||||||
|
systemd_exists=true
|
||||||
|
else
|
||||||
|
systemd_exists=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Deinstall debian exim4 packages
|
||||||
|
# -
|
||||||
|
_installed_exim_packages=`dpkg -l | grep exim4 | grep -e "^i" | awk '{print$2}'`
|
||||||
|
installed_exim_packages="bsd-mailx"
|
||||||
|
for _pkg in $_installed_exim_packages ; do
|
||||||
|
installed_exim_packages="$_installed_exim_packages $_pkg"
|
||||||
|
done
|
||||||
|
apt-get remove --purge -q -y $installed_exim_packages > /dev/null 2>&1
|
||||||
|
|
||||||
|
|
||||||
|
# - Install Postfix from debian packages system
|
||||||
|
# -
|
||||||
|
needed_packages="postfix postfix-pcre libsasl2-modules bsd-mailx haveged"
|
||||||
|
apt-get install -q -y $needed_packages > /dev/null 2>&1
|
||||||
|
|
||||||
|
|
||||||
|
# - Backup existing postfix configuration file
|
||||||
|
# -
|
||||||
|
if [[ -f "/etc/postfix/main.cf" ]]; then
|
||||||
|
cp -a /etc/postfix/main.cf /etc/postfix/main.cf.`date +%Y%m%d-%H%M`
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Creeate nes postfix configuration filr
|
||||||
|
## -
|
||||||
|
cat <<EOF > /etc/postfix/main.cf
|
||||||
|
# ============ Basic settings ============
|
||||||
|
|
||||||
|
# Debian specific: Specifying a file name will cause the first
|
||||||
|
# line of that file to be used as the name. The Debian default
|
||||||
|
# is /etc/mailname.
|
||||||
|
#myorigin = /etc/mailname
|
||||||
|
myorigin = /etc/mailname
|
||||||
|
|
||||||
|
smtpd_banner = \$myhostname ESMTP \$mail_name (Debian/GNU)
|
||||||
|
biff = no
|
||||||
|
|
||||||
|
# appending .domain is the MUA's job.
|
||||||
|
append_dot_mydomain = no
|
||||||
|
|
||||||
|
# Uncomment the next line to generate "delayed mail" warnings
|
||||||
|
#delay_warning_time = 4h
|
||||||
|
|
||||||
|
readme_directory = /usr/share/doc/postfix
|
||||||
|
html_directory = /usr/share/doc/postfix/html
|
||||||
|
|
||||||
|
## - The Internet protocols Postfix will attempt to use when making
|
||||||
|
## - or accepting connections.
|
||||||
|
## - DEFAULT: ipv4
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [ -n "$_IPV6" ]; then
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
inet_protocols = ipv4, ipv6
|
||||||
|
|
||||||
|
#inet_interfaces = all
|
||||||
|
|
||||||
|
inet_interfaces = 127.0.0.1
|
||||||
|
$_IPV4
|
||||||
|
$_IPV6
|
||||||
|
|
||||||
|
myhostname = $_HOSTNAME
|
||||||
|
|
||||||
|
mydestination =
|
||||||
|
$_HOSTNAME
|
||||||
|
localhost
|
||||||
|
|
||||||
|
## - The list of "trusted" SMTP clients that have more
|
||||||
|
## - privileges than "strangers"
|
||||||
|
## -
|
||||||
|
mynetworks =
|
||||||
|
127.0.0.0/8
|
||||||
|
[::ffff:127.0.0.0]/104
|
||||||
|
[::1]/128
|
||||||
|
${_IPV4}/32
|
||||||
|
[${_IPV6}]/128
|
||||||
|
|
||||||
|
smtp_bind_address = $_IPV4
|
||||||
|
smtp_bind_address6 = $_IPV6
|
||||||
|
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
inet_protocols = ipv4
|
||||||
|
|
||||||
|
#inet_interfaces = all
|
||||||
|
inet_interfaces =
|
||||||
|
127.0.0.1
|
||||||
|
$_IPV4
|
||||||
|
|
||||||
|
myhostname = $_HOSTNAME
|
||||||
|
|
||||||
|
mydestination =
|
||||||
|
$_HOSTNAME
|
||||||
|
localhost
|
||||||
|
|
||||||
|
## - The list of "trusted" SMTP clients that have more
|
||||||
|
## - privileges than "strangers"
|
||||||
|
## -
|
||||||
|
mynetworks =
|
||||||
|
127.0.0.0/8
|
||||||
|
${_IPV4}/32
|
||||||
|
|
||||||
|
smtp_bind_address = $_IPV4
|
||||||
|
#smtp_bind_address6 = $_IPV6
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
|
||||||
|
## - The method to generate the default value for the mynetworks parameter.
|
||||||
|
## -
|
||||||
|
## - mynetworks_style = host" when Postfix should "trust" only the local machine
|
||||||
|
## - mynetworks_style = subnet (default value) "when Postfix should "trust" SMTP
|
||||||
|
## - clients in the same IP subnetworks as the local machine.
|
||||||
|
## - mynetworks_style = class" when Postfix should "trust" SMTP clients in the same
|
||||||
|
## - IP class A/B/C networks as the local machine.
|
||||||
|
## -
|
||||||
|
#mynetworks_style = host
|
||||||
|
|
||||||
|
|
||||||
|
## - The maximal size of any local(8) individual mailbox or maildir file,
|
||||||
|
## - or zero (no limit). In fact, this limits the size of any file that is
|
||||||
|
## - written to upon local delivery, including files written by external
|
||||||
|
## - commands that are executed by the local(8) delivery agent.
|
||||||
|
## -
|
||||||
|
mailbox_size_limit = 0
|
||||||
|
|
||||||
|
## - The maximal size in bytes of a message, including envelope information.
|
||||||
|
## -
|
||||||
|
## - we user 50MB
|
||||||
|
## -
|
||||||
|
message_size_limit = 52480000
|
||||||
|
|
||||||
|
## - The system-wide recipient address extension delimiter
|
||||||
|
## -
|
||||||
|
recipient_delimiter = +
|
||||||
|
|
||||||
|
## - The alias databases that are used for local(8) delivery.
|
||||||
|
## -
|
||||||
|
alias_maps =
|
||||||
|
hash:/etc/aliases
|
||||||
|
|
||||||
|
## - The alias databases for local(8) delivery that are updated
|
||||||
|
## - with "newaliases" or with "sendmail -bi".
|
||||||
|
## -
|
||||||
|
alias_database =
|
||||||
|
hash:/etc/aliases
|
||||||
|
|
||||||
|
|
||||||
|
## - The maximal time a message is queued before it is sent back as
|
||||||
|
## - undeliverable. Defaults to 5d (5 days)
|
||||||
|
## - Specify 0 when mail delivery should be tried only once.
|
||||||
|
## -
|
||||||
|
maximal_queue_lifetime = 3d
|
||||||
|
bounce_queue_lifetime = \$maximal_queue_lifetime
|
||||||
|
|
||||||
|
## - delay_warning_time (default: 0h)
|
||||||
|
## -
|
||||||
|
## - The time after which the sender receives a copy of the message
|
||||||
|
## - headers of mail that is still queued. To enable this feature,
|
||||||
|
## - specify a non-zero time value (an integral value plus an optional
|
||||||
|
## - one-letter suffix that specifies the time unit).
|
||||||
|
## - Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
|
||||||
|
## - The default time unit is h (hours).
|
||||||
|
delay_warning_time = 1d
|
||||||
|
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if $_SASL_AUTH ; then
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
|
||||||
|
# ============ Relay parameters ============
|
||||||
|
|
||||||
|
#relayhost =
|
||||||
|
|
||||||
|
|
||||||
|
# ============ SASL authentication ============
|
||||||
|
|
||||||
|
# Enable SASL authentication
|
||||||
|
smtp_sasl_auth_enable = yes
|
||||||
|
|
||||||
|
# Forwarding to the ip-adress of host b.mx.oopen.de
|
||||||
|
relayhost = [b.mx.oopen.de]
|
||||||
|
|
||||||
|
# File including login data
|
||||||
|
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
|
||||||
|
|
||||||
|
# Force using a (TLS) security connection
|
||||||
|
# obsulete - use smtp_tls_security_level instead
|
||||||
|
#smtp_use_tls = yes
|
||||||
|
#smtp_tls_enforce_peername = no
|
||||||
|
smtp_tls_security_level = encrypt
|
||||||
|
|
||||||
|
# Disallow methods that allow anonymous authentication.
|
||||||
|
smtp_sasl_security_options = noanonymous
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ============ TLS parameters ============
|
||||||
|
|
||||||
|
## - Aktiviert TLS für den Mailempfang
|
||||||
|
## -
|
||||||
|
## - may:
|
||||||
|
## - Opportunistic TLS. Use TLS if this is supported by the remote
|
||||||
|
## - SMTP server, otherwise use plaintext
|
||||||
|
## -
|
||||||
|
## - This overrides the obsolete parameters smtpd_use_tls and
|
||||||
|
## - smtpd_enforce_tls. This parameter is ignored with
|
||||||
|
## - "smtpd_tls_wrappermode = yes".
|
||||||
|
#smtpd_use_tls=yes
|
||||||
|
smtp_tls_security_level=encrypt
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
else
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
|
||||||
|
# ============ Relay parameters ============
|
||||||
|
|
||||||
|
relayhost =
|
||||||
|
|
||||||
|
|
||||||
|
# ============ TLS parameters ============
|
||||||
|
|
||||||
|
## - Aktiviert TLS für den Mailempfang
|
||||||
|
## -
|
||||||
|
## - may:
|
||||||
|
## - Opportunistic TLS. Use TLS if this is supported by the remote
|
||||||
|
## - SMTP server, otherwise use plaintext
|
||||||
|
## -
|
||||||
|
## - This overrides the obsolete parameters smtpd_use_tls and
|
||||||
|
## - smtpd_enforce_tls. This parameter is ignored with
|
||||||
|
## - "smtpd_tls_wrappermode = yes".
|
||||||
|
#smtpd_use_tls=yes
|
||||||
|
smtp_tls_security_level=may
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
## - Aktiviert TLS für den Mailversand
|
||||||
|
## -
|
||||||
|
## - may:
|
||||||
|
## - Opportunistic TLS: announce STARTTLS support to SMTP clients,
|
||||||
|
## - but do not require that clients use TLS encryption.
|
||||||
|
# smtp_use_tls=yes
|
||||||
|
smtpd_tls_security_level=may
|
||||||
|
|
||||||
|
## - 0 Disable logging of TLS activity.
|
||||||
|
## - 1 Log TLS handshake and certificate information.
|
||||||
|
## - 2 Log levels during TLS negotiation.
|
||||||
|
## - 3 Log hexadecimal and ASCII dump of TLS negotiation process.
|
||||||
|
## - 4 Also log hexadecimal and ASCII dump of complete transmission after STARTTLS.
|
||||||
|
## -
|
||||||
|
smtpd_tls_loglevel = 1
|
||||||
|
smtp_tls_loglevel = 1
|
||||||
|
|
||||||
|
smtpd_tls_cert_file = $_TLS_CERT_FILE
|
||||||
|
smtpd_tls_key_file = $_TLS_KEY_FILE
|
||||||
|
|
||||||
|
## - File with DH parameters that the Postfix SMTP server should use with EDH ciphers.
|
||||||
|
## -
|
||||||
|
## - Dont't forget to create it, e.g with openssl:
|
||||||
|
## - openssl gendh -out /etc/postfix/ssl/dh_1024.pem -2 1024
|
||||||
|
## -
|
||||||
|
#smtpd_tls_dh1024_param_file = /etc/postfix/ssl/dh_1024.pem
|
||||||
|
## - also possible to use 2048 key with that parameter
|
||||||
|
## -
|
||||||
|
smtpd_tls_dh1024_param_file = /etc/postfix/ssl/dh_2048.pem
|
||||||
|
|
||||||
|
## - File with DH parameters that the Postfix SMTP server should use with EDH ciphers.
|
||||||
|
## -
|
||||||
|
## - Dont't forget to create it, e.g with openssl:
|
||||||
|
## - openssl gendh -out /etc/postfix/ssl/dh_512.pem -2 512
|
||||||
|
## -
|
||||||
|
smtpd_tls_dh512_param_file = /etc/postfix/ssl/dh_512.pem
|
||||||
|
|
||||||
|
|
||||||
|
## - File containing CA certificates of root CAs trusted to sign either remote SMTP
|
||||||
|
## - server certificates or intermediate CA certificates. These are loaded into
|
||||||
|
## - memory !! BEFORE !! the smtp(8) client enters the chroot jail.
|
||||||
|
## -
|
||||||
|
smtp_tls_CAfile = $_TLS_CA_FILE
|
||||||
|
|
||||||
|
## - Directory with PEM format certificate authority certificates that the Postfix SMTP
|
||||||
|
## - client uses to verify a remote SMTP server certificate. Don't forget to create the
|
||||||
|
## - necessary "hash" links with, for example, "
|
||||||
|
## - $OPENSSL_HOME/bin/c_rehash /etc/postfix/certs".
|
||||||
|
## -
|
||||||
|
## - !! Note !!
|
||||||
|
## - To use this option in chroot mode, this directory (or a copy) must be inside
|
||||||
|
## - the chroot jail.
|
||||||
|
## -
|
||||||
|
## - Note that a chrooted daemon resolves all filenames relative to the Postfix
|
||||||
|
## - queue directory (/var/spool/postfix)
|
||||||
|
## -
|
||||||
|
#smtpd_tls_CApath = /etc/postfix/certs
|
||||||
|
|
||||||
|
|
||||||
|
# Disable SSLv2 SSLv3 - Postfix SMTP server
|
||||||
|
#
|
||||||
|
# List of TLS protocols that the Postfix SMTP server will exclude or
|
||||||
|
# include with opportunistic TLS encryption.
|
||||||
|
smtpd_tls_protocols = !SSLv2, !SSLv3
|
||||||
|
#
|
||||||
|
# The SSL/TLS protocols accepted by the Postfix SMTP server
|
||||||
|
# with mandatory TLS encryption.
|
||||||
|
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
|
||||||
|
|
||||||
|
|
||||||
|
# Disable SSLv2 SSLv3 - Postfix SMTP client
|
||||||
|
#
|
||||||
|
# List of TLS protocols that the Postfix SMTP client will exclude or
|
||||||
|
# include with opportunistic TLS encryption.
|
||||||
|
smtp_tls_protocols = !SSLv2, !SSLv3
|
||||||
|
#
|
||||||
|
# List of SSL/TLS protocols that the Postfix SMTP client will use
|
||||||
|
# with mandatory TLS encryption
|
||||||
|
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
|
||||||
|
|
||||||
|
|
||||||
|
## - Activate des "Ephemeral Elliptic Curve Diffie-Hellman" (EECDH) key exchange
|
||||||
|
## - openssl > 1.0
|
||||||
|
## -
|
||||||
|
smtpd_tls_eecdh_grade = strong
|
||||||
|
|
||||||
|
# standard list cryptographic algorithm
|
||||||
|
tls_preempt_cipherlist = yes
|
||||||
|
|
||||||
|
# Disable ciphers which are less than 256-bit:
|
||||||
|
#
|
||||||
|
#smtpd_tls_mandatory_ciphers = high
|
||||||
|
#
|
||||||
|
# opportunistic
|
||||||
|
smtpd_tls_ciphers = high
|
||||||
|
|
||||||
|
|
||||||
|
# Exclude ciphers
|
||||||
|
#smtpd_tls_exclude_ciphers =
|
||||||
|
# RC4
|
||||||
|
# aNULL
|
||||||
|
# SEED-SHA
|
||||||
|
# EXP
|
||||||
|
# MD5
|
||||||
|
smtpd_tls_exclude_ciphers =
|
||||||
|
aNULL
|
||||||
|
eNULL
|
||||||
|
EXPORT
|
||||||
|
DES
|
||||||
|
RC4
|
||||||
|
MD5
|
||||||
|
PSK
|
||||||
|
aECDH
|
||||||
|
EDH-DSS-DES-CBC3-SHA
|
||||||
|
EDH-RSA-DES-CDC3-SHA
|
||||||
|
KRB5-DE5, CBC3-SHA
|
||||||
|
|
||||||
|
|
||||||
|
smtpd_tls_session_cache_database = btree:\${data_directory}/smtpd_scache
|
||||||
|
smtp_tls_session_cache_database = btree:\${data_directory}/smtp_scache
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
if $_SASL_AUTH ; then
|
||||||
|
|
||||||
|
echo "[$_RELAY_HOST] ${_SASL_USER}@${_RELAY_HOST}:$_SASL_PASS" > /etc/postfix/sasl_passwd
|
||||||
|
chown root:root /etc/postfix/sasl_passwd
|
||||||
|
chmod 600 /etc/postfix/sasl_passwd
|
||||||
|
postmap /etc/postfix/sasl_passwd
|
||||||
|
chown root:root /etc/postfix/sasl_passwd.db
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
## - /etc/mailname
|
||||||
|
## -
|
||||||
|
echo $_HOSTNAME > /etc/mailname
|
||||||
|
|
||||||
|
## - /etc/aliases
|
||||||
|
## -
|
||||||
|
cat << EOF > /etc/aliases
|
||||||
|
# See man 5 aliases for format
|
||||||
|
mailer-daemon: postmaster
|
||||||
|
postmaster: root
|
||||||
|
nobody: root
|
||||||
|
hostmaster: root
|
||||||
|
usenet: root
|
||||||
|
news: root
|
||||||
|
webmaster: root
|
||||||
|
www: root
|
||||||
|
ftp: root
|
||||||
|
abuse: root
|
||||||
|
noc: root
|
||||||
|
security: root
|
||||||
|
|
||||||
|
root: $_ADMIN_EMAIL
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
## - create directory for certificates and copy certificates
|
||||||
|
## - and coresponding keys to /etc/postfix/ssl/
|
||||||
|
## -
|
||||||
|
mkdir -p /etc/postfix/ssl
|
||||||
|
|
||||||
|
|
||||||
|
## - generate DH parameters that the Postfix SMTP server should use
|
||||||
|
## - with EDH ciphers (length 512 and 1024
|
||||||
|
## -
|
||||||
|
if [ ! -f /etc/postfix/ssl/dh_512.pem ]; then
|
||||||
|
openssl gendh -out /etc/postfix/ssl/dh_512.pem -2 512
|
||||||
|
fi
|
||||||
|
if [ ! -f /etc/postfix/ssl/dh_1024.pem ]; then
|
||||||
|
openssl gendh -out /etc/postfix/ssl/dh_1024.pem -2 1024
|
||||||
|
fi
|
||||||
|
if [ ! -f /etc/postfix/ssl/dh_2048.pem ]; then
|
||||||
|
openssl gendh -out /etc/postfix/ssl/dh_2048.pem -2 2048
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -h "$_TLS_CERT_FILE" ]; then
|
||||||
|
ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem $_TLS_CERT_FILE
|
||||||
|
fi
|
||||||
|
if [ ! -h "$_TLS_KEY_FILE" ]; then
|
||||||
|
ln -s /etc/ssl/private/ssl-cert-snakeoil.key $_TLS_KEY_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
## - rebuld alias database
|
||||||
|
## -
|
||||||
|
newaliases
|
||||||
|
|
||||||
|
## - restart postfix
|
||||||
|
## -
|
||||||
|
if $systemd_exists ; then
|
||||||
|
systemctl restart postfix
|
||||||
|
else
|
||||||
|
/etc/init.d/postfix restart
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
## - Omitt logging into system.log
|
||||||
|
## -
|
||||||
|
cat << EOF >> /etc/rsyslog.d/postfix.conf
|
||||||
|
|
||||||
|
#
|
||||||
|
# Logging for the mail system. Split it up so that
|
||||||
|
# it is easy to write scripts to parse these files.
|
||||||
|
#
|
||||||
|
mail.info -/var/log/mail.info
|
||||||
|
mail.warn -/var/log/mail.warn
|
||||||
|
mail.err /var/log/mail.err
|
||||||
|
|
||||||
|
mail.* -/var/log/mail.log
|
||||||
|
& ~
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if $systemd_exists ; then
|
||||||
|
systemctl restart rsyslog
|
||||||
|
else
|
||||||
|
/etc/init.d/rsyslog restart
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
exit
|
725
BAK/install_postfix_base.sh.01
Executable file
725
BAK/install_postfix_base.sh.01
Executable file
@ -0,0 +1,725 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
_TLS_CERT_DIR=/etc/postfix/ssl
|
||||||
|
_TLS_CERT_FILE="${_TLS_CERT_DIR}/mailserver.crt"
|
||||||
|
_TLS_KEY_FILE="${_TLS_CERT_DIR}/mailserver.key"
|
||||||
|
|
||||||
|
_TLS_CA_FILE=/etc/ssl/certs/ca-certificates.crt
|
||||||
|
|
||||||
|
|
||||||
|
_HOSTNAME=o15.oopen.de
|
||||||
|
_IPV4=83.223.86.96
|
||||||
|
_EXT_IF_IP=83.223.86.96
|
||||||
|
|
||||||
|
## - Leave empty, if no IPv6 should be supported
|
||||||
|
## -
|
||||||
|
_IPV6=2a01:30:0:13:5054:ff:fe09:2318
|
||||||
|
#_IPV6=
|
||||||
|
|
||||||
|
_ADMIN_EMAIL=admin@oopen.de
|
||||||
|
|
||||||
|
_SASL_AUTH=false
|
||||||
|
_RELAY_HOST=b.mx.oopen.de
|
||||||
|
_SASL_USER=anw-urb
|
||||||
|
_SASL_PASS='OhPie2aethei'
|
||||||
|
|
||||||
|
|
||||||
|
# -------------
|
||||||
|
# --- Some functions
|
||||||
|
# -------------
|
||||||
|
echononl(){
|
||||||
|
echo X\\c > /tmp/shprompt$$
|
||||||
|
if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then
|
||||||
|
echo -e -n "$*\\c" 1>&2
|
||||||
|
else
|
||||||
|
echo -e -n "$*" 1>&2
|
||||||
|
fi
|
||||||
|
rm /tmp/shprompt$$
|
||||||
|
}
|
||||||
|
|
||||||
|
fatal(){
|
||||||
|
echo ""
|
||||||
|
echo -e "fataler Fehler: $*"
|
||||||
|
echo ""
|
||||||
|
echo -e "\t\033[31m\033[1mInstalllation wird abgebrochen\033[m\033[m"
|
||||||
|
echo ""
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
error(){
|
||||||
|
echo ""
|
||||||
|
echo -e "\t[ \033[31m\033[1mFehler\033[m ]: $*"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
warn (){
|
||||||
|
echo ""
|
||||||
|
echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
info (){
|
||||||
|
echo ""
|
||||||
|
echo -e "\t[ \033[32m\033[1mInfo\033[m ]: $*"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
echo_done() {
|
||||||
|
echo -e "\033[80G[ \033[32mdone\033[m ]"
|
||||||
|
}
|
||||||
|
echo_ok() {
|
||||||
|
echo -e "\033[80G[ \033[32mok\033[m ]"
|
||||||
|
}
|
||||||
|
echo_warning() {
|
||||||
|
echo -e "\033[80G[ \033[33m\033[1mwarn\033[m ]"
|
||||||
|
}
|
||||||
|
echo_failed(){
|
||||||
|
echo -e "\033[80G[ \033[1;31mfailed\033[m ]"
|
||||||
|
}
|
||||||
|
echo_skipped() {
|
||||||
|
echo -e "\033[80G[ \033[33m\033[1mskipped\033[m ]"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# - Is this a systemd system?
|
||||||
|
# -
|
||||||
|
if [[ "X`which systemd`" = "X" ]]; then
|
||||||
|
systemd_exists=false
|
||||||
|
else
|
||||||
|
systemd_exists=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
|
||||||
|
# - Deinstall debian exim4 packages
|
||||||
|
# -
|
||||||
|
echononl " Deinstall debian exim4 packages"
|
||||||
|
_installed_exim_packages=`dpkg -l | grep exim4 | grep -e "^i" | awk '{print$2}'`
|
||||||
|
for _pkg in $_installed_exim_packages ; do
|
||||||
|
installed_exim_packages="$installed_exim_packages $_pkg"
|
||||||
|
done
|
||||||
|
if [[ -n "$installed_exim_packages" ]] ; then
|
||||||
|
|
||||||
|
if `dpkg -l | grep bsd-mailx | grep -e "^i" > /dev/null 2>&1` ; then
|
||||||
|
installed_exim_packages="$installed_exim_packages bsd-mailx"
|
||||||
|
fi
|
||||||
|
|
||||||
|
apt-get remove --purge -qq -y $installed_exim_packages > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# - Install Postfix from debian packages system
|
||||||
|
# -
|
||||||
|
echononl " Install Postfix from debian packages system"
|
||||||
|
_needed_packages="postfix postfix-pcre libsasl2-modules bsd-mailx haveged"
|
||||||
|
for _pkg in $_needed_packages ; do
|
||||||
|
if `dpkg -l | grep $_pkg | grep -e "^i" > /dev/null 2>&1` ; then
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
needed_packages="$needed_packages $_pkg"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ -n "$needed_packages" ]]; then
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get -y install $needed_packages > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Backup existing postfix configuration file
|
||||||
|
# -
|
||||||
|
echononl " Backup existing postfix configuration file"
|
||||||
|
if [[ -f "/etc/postfix/main.cf" ]]; then
|
||||||
|
cp -a /etc/postfix/main.cf /etc/postfix/main.cf.`date +%Y%m%d-%H%M`
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Creeate new postfix configuration file
|
||||||
|
# -
|
||||||
|
echononl " Creeate new postfix configuration file"
|
||||||
|
cat <<EOF > /etc/postfix/main.cf
|
||||||
|
# ============ Basic settings ============
|
||||||
|
|
||||||
|
# Debian specific: Specifying a file name will cause the first
|
||||||
|
# line of that file to be used as the name. The Debian default
|
||||||
|
# is /etc/mailname.
|
||||||
|
#myorigin = /etc/mailname
|
||||||
|
myorigin = /etc/mailname
|
||||||
|
|
||||||
|
smtpd_banner = \$myhostname ESMTP \$mail_name (Debian/GNU)
|
||||||
|
biff = no
|
||||||
|
|
||||||
|
# appending .domain is the MUA's job.
|
||||||
|
append_dot_mydomain = no
|
||||||
|
|
||||||
|
# Uncomment the next line to generate "delayed mail" warnings
|
||||||
|
#delay_warning_time = 4h
|
||||||
|
|
||||||
|
readme_directory = /usr/share/doc/postfix
|
||||||
|
html_directory = /usr/share/doc/postfix/html
|
||||||
|
|
||||||
|
## - The Internet protocols Postfix will attempt to use when making
|
||||||
|
## - or accepting connections.
|
||||||
|
## - DEFAULT: ipv4
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [ -n "$_IPV6" ]; then
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
inet_protocols = ipv4, ipv6
|
||||||
|
|
||||||
|
#inet_interfaces = all
|
||||||
|
|
||||||
|
inet_interfaces = 127.0.0.1
|
||||||
|
$_IPV4
|
||||||
|
$_IPV6
|
||||||
|
|
||||||
|
myhostname = $_HOSTNAME
|
||||||
|
|
||||||
|
mydestination =
|
||||||
|
$_HOSTNAME
|
||||||
|
localhost
|
||||||
|
|
||||||
|
## - The list of "trusted" SMTP clients that have more
|
||||||
|
## - privileges than "strangers"
|
||||||
|
## -
|
||||||
|
mynetworks =
|
||||||
|
127.0.0.0/8
|
||||||
|
[::ffff:127.0.0.0]/104
|
||||||
|
[::1]/128
|
||||||
|
${_IPV4}/32
|
||||||
|
[${_IPV6}]/128
|
||||||
|
|
||||||
|
smtp_bind_address = $_IPV4
|
||||||
|
smtp_bind_address6 = $_IPV6
|
||||||
|
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
inet_protocols = ipv4
|
||||||
|
|
||||||
|
#inet_interfaces = all
|
||||||
|
inet_interfaces =
|
||||||
|
127.0.0.1
|
||||||
|
$_IPV4
|
||||||
|
|
||||||
|
myhostname = $_HOSTNAME
|
||||||
|
|
||||||
|
mydestination =
|
||||||
|
$_HOSTNAME
|
||||||
|
localhost
|
||||||
|
|
||||||
|
## - The list of "trusted" SMTP clients that have more
|
||||||
|
## - privileges than "strangers"
|
||||||
|
## -
|
||||||
|
mynetworks =
|
||||||
|
127.0.0.0/8
|
||||||
|
${_IPV4}/32
|
||||||
|
|
||||||
|
smtp_bind_address = $_IPV4
|
||||||
|
#smtp_bind_address6 = $_IPV6
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
|
||||||
|
## - The method to generate the default value for the mynetworks parameter.
|
||||||
|
## -
|
||||||
|
## - mynetworks_style = host" when Postfix should "trust" only the local machine
|
||||||
|
## - mynetworks_style = subnet (default value) "when Postfix should "trust" SMTP
|
||||||
|
## - clients in the same IP subnetworks as the local machine.
|
||||||
|
## - mynetworks_style = class" when Postfix should "trust" SMTP clients in the same
|
||||||
|
## - IP class A/B/C networks as the local machine.
|
||||||
|
## -
|
||||||
|
#mynetworks_style = host
|
||||||
|
|
||||||
|
|
||||||
|
## - The maximal size of any local(8) individual mailbox or maildir file,
|
||||||
|
## - or zero (no limit). In fact, this limits the size of any file that is
|
||||||
|
## - written to upon local delivery, including files written by external
|
||||||
|
## - commands that are executed by the local(8) delivery agent.
|
||||||
|
## -
|
||||||
|
mailbox_size_limit = 0
|
||||||
|
|
||||||
|
## - The maximal size in bytes of a message, including envelope information.
|
||||||
|
## -
|
||||||
|
## - we user 50MB
|
||||||
|
## -
|
||||||
|
message_size_limit = 52480000
|
||||||
|
|
||||||
|
## - The system-wide recipient address extension delimiter
|
||||||
|
## -
|
||||||
|
recipient_delimiter = +
|
||||||
|
|
||||||
|
## - The alias databases that are used for local(8) delivery.
|
||||||
|
## -
|
||||||
|
alias_maps =
|
||||||
|
hash:/etc/aliases
|
||||||
|
|
||||||
|
## - The alias databases for local(8) delivery that are updated
|
||||||
|
## - with "newaliases" or with "sendmail -bi".
|
||||||
|
## -
|
||||||
|
alias_database =
|
||||||
|
hash:/etc/aliases
|
||||||
|
|
||||||
|
|
||||||
|
## - The maximal time a message is queued before it is sent back as
|
||||||
|
## - undeliverable. Defaults to 5d (5 days)
|
||||||
|
## - Specify 0 when mail delivery should be tried only once.
|
||||||
|
## -
|
||||||
|
maximal_queue_lifetime = 3d
|
||||||
|
bounce_queue_lifetime = \$maximal_queue_lifetime
|
||||||
|
|
||||||
|
## - delay_warning_time (default: 0h)
|
||||||
|
## -
|
||||||
|
## - The time after which the sender receives a copy of the message
|
||||||
|
## - headers of mail that is still queued. To enable this feature,
|
||||||
|
## - specify a non-zero time value (an integral value plus an optional
|
||||||
|
## - one-letter suffix that specifies the time unit).
|
||||||
|
## - Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
|
||||||
|
## - The default time unit is h (hours).
|
||||||
|
delay_warning_time = 1d
|
||||||
|
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if $_SASL_AUTH ; then
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
|
||||||
|
# ============ Relay parameters ============
|
||||||
|
|
||||||
|
#relayhost =
|
||||||
|
|
||||||
|
|
||||||
|
# ============ SASL authentication ============
|
||||||
|
|
||||||
|
# Enable SASL authentication
|
||||||
|
smtp_sasl_auth_enable = yes
|
||||||
|
|
||||||
|
# Forwarding to the ip-adress of host b.mx.oopen.de
|
||||||
|
relayhost = [b.mx.oopen.de]
|
||||||
|
|
||||||
|
# File including login data
|
||||||
|
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
|
||||||
|
|
||||||
|
# Force using a (TLS) security connection
|
||||||
|
# obsulete - use smtp_tls_security_level instead
|
||||||
|
#smtp_use_tls = yes
|
||||||
|
#smtp_tls_enforce_peername = no
|
||||||
|
smtp_tls_security_level = encrypt
|
||||||
|
|
||||||
|
# Disallow methods that allow anonymous authentication.
|
||||||
|
smtp_sasl_security_options = noanonymous
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ============ TLS parameters ============
|
||||||
|
|
||||||
|
## - Aktiviert TLS für den Mailempfang
|
||||||
|
## -
|
||||||
|
## - may:
|
||||||
|
## - Opportunistic TLS. Use TLS if this is supported by the remote
|
||||||
|
## - SMTP server, otherwise use plaintext
|
||||||
|
## -
|
||||||
|
## - This overrides the obsolete parameters smtpd_use_tls and
|
||||||
|
## - smtpd_enforce_tls. This parameter is ignored with
|
||||||
|
## - "smtpd_tls_wrappermode = yes".
|
||||||
|
#smtpd_use_tls=yes
|
||||||
|
smtp_tls_security_level=encrypt
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
else
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
|
||||||
|
# ============ Relay parameters ============
|
||||||
|
|
||||||
|
relayhost =
|
||||||
|
|
||||||
|
|
||||||
|
# ============ TLS parameters ============
|
||||||
|
|
||||||
|
## - Aktiviert TLS für den Mailempfang
|
||||||
|
## -
|
||||||
|
## - may:
|
||||||
|
## - Opportunistic TLS. Use TLS if this is supported by the remote
|
||||||
|
## - SMTP server, otherwise use plaintext
|
||||||
|
## -
|
||||||
|
## - This overrides the obsolete parameters smtpd_use_tls and
|
||||||
|
## - smtpd_enforce_tls. This parameter is ignored with
|
||||||
|
## - "smtpd_tls_wrappermode = yes".
|
||||||
|
#smtpd_use_tls=yes
|
||||||
|
smtp_tls_security_level=may
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
## - Aktiviert TLS für den Mailversand
|
||||||
|
## -
|
||||||
|
## - may:
|
||||||
|
## - Opportunistic TLS: announce STARTTLS support to SMTP clients,
|
||||||
|
## - but do not require that clients use TLS encryption.
|
||||||
|
# smtp_use_tls=yes
|
||||||
|
smtpd_tls_security_level=may
|
||||||
|
|
||||||
|
## - 0 Disable logging of TLS activity.
|
||||||
|
## - 1 Log TLS handshake and certificate information.
|
||||||
|
## - 2 Log levels during TLS negotiation.
|
||||||
|
## - 3 Log hexadecimal and ASCII dump of TLS negotiation process.
|
||||||
|
## - 4 Also log hexadecimal and ASCII dump of complete transmission after STARTTLS.
|
||||||
|
## -
|
||||||
|
smtpd_tls_loglevel = 1
|
||||||
|
smtp_tls_loglevel = 1
|
||||||
|
|
||||||
|
smtpd_tls_cert_file = $_TLS_CERT_FILE
|
||||||
|
smtpd_tls_key_file = $_TLS_KEY_FILE
|
||||||
|
|
||||||
|
## - File with DH parameters that the Postfix SMTP server should use with EDH ciphers.
|
||||||
|
## -
|
||||||
|
## - Dont't forget to create it, e.g with openssl:
|
||||||
|
## - openssl gendh -out /etc/postfix/ssl/dh_1024.pem -2 1024
|
||||||
|
## -
|
||||||
|
#smtpd_tls_dh1024_param_file = /etc/postfix/ssl/dh_1024.pem
|
||||||
|
## - also possible to use 2048 key with that parameter
|
||||||
|
## -
|
||||||
|
smtpd_tls_dh1024_param_file = /etc/postfix/ssl/dh_2048.pem
|
||||||
|
|
||||||
|
## - File with DH parameters that the Postfix SMTP server should use with EDH ciphers.
|
||||||
|
## -
|
||||||
|
## - Dont't forget to create it, e.g with openssl:
|
||||||
|
## - openssl gendh -out /etc/postfix/ssl/dh_512.pem -2 512
|
||||||
|
## -
|
||||||
|
smtpd_tls_dh512_param_file = /etc/postfix/ssl/dh_512.pem
|
||||||
|
|
||||||
|
|
||||||
|
## - File containing CA certificates of root CAs trusted to sign either remote SMTP
|
||||||
|
## - server certificates or intermediate CA certificates. These are loaded into
|
||||||
|
## - memory !! BEFORE !! the smtp(8) client enters the chroot jail.
|
||||||
|
## -
|
||||||
|
smtp_tls_CAfile = $_TLS_CA_FILE
|
||||||
|
|
||||||
|
## - Directory with PEM format certificate authority certificates that the Postfix SMTP
|
||||||
|
## - client uses to verify a remote SMTP server certificate. Don't forget to create the
|
||||||
|
## - necessary "hash" links with, for example, "
|
||||||
|
## - $OPENSSL_HOME/bin/c_rehash /etc/postfix/certs".
|
||||||
|
## -
|
||||||
|
## - !! Note !!
|
||||||
|
## - To use this option in chroot mode, this directory (or a copy) must be inside
|
||||||
|
## - the chroot jail.
|
||||||
|
## -
|
||||||
|
## - Note that a chrooted daemon resolves all filenames relative to the Postfix
|
||||||
|
## - queue directory (/var/spool/postfix)
|
||||||
|
## -
|
||||||
|
#smtpd_tls_CApath = /etc/postfix/certs
|
||||||
|
|
||||||
|
|
||||||
|
# Disable SSLv2 SSLv3 - Postfix SMTP server
|
||||||
|
#
|
||||||
|
# List of TLS protocols that the Postfix SMTP server will exclude or
|
||||||
|
# include with opportunistic TLS encryption.
|
||||||
|
smtpd_tls_protocols = !SSLv2, !SSLv3
|
||||||
|
#
|
||||||
|
# The SSL/TLS protocols accepted by the Postfix SMTP server
|
||||||
|
# with mandatory TLS encryption.
|
||||||
|
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
|
||||||
|
|
||||||
|
|
||||||
|
# Disable SSLv2 SSLv3 - Postfix SMTP client
|
||||||
|
#
|
||||||
|
# List of TLS protocols that the Postfix SMTP client will exclude or
|
||||||
|
# include with opportunistic TLS encryption.
|
||||||
|
smtp_tls_protocols = !SSLv2, !SSLv3
|
||||||
|
#
|
||||||
|
# List of SSL/TLS protocols that the Postfix SMTP client will use
|
||||||
|
# with mandatory TLS encryption
|
||||||
|
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
|
||||||
|
|
||||||
|
|
||||||
|
## - Activate des "Ephemeral Elliptic Curve Diffie-Hellman" (EECDH) key exchange
|
||||||
|
## - openssl > 1.0
|
||||||
|
## -
|
||||||
|
smtpd_tls_eecdh_grade = strong
|
||||||
|
|
||||||
|
# standard list cryptographic algorithm
|
||||||
|
tls_preempt_cipherlist = yes
|
||||||
|
|
||||||
|
# Disable ciphers which are less than 256-bit:
|
||||||
|
#
|
||||||
|
#smtpd_tls_mandatory_ciphers = high
|
||||||
|
#
|
||||||
|
# opportunistic
|
||||||
|
smtpd_tls_ciphers = high
|
||||||
|
|
||||||
|
|
||||||
|
# Exclude ciphers
|
||||||
|
#smtpd_tls_exclude_ciphers =
|
||||||
|
# RC4
|
||||||
|
# aNULL
|
||||||
|
# SEED-SHA
|
||||||
|
# EXP
|
||||||
|
# MD5
|
||||||
|
smtpd_tls_exclude_ciphers =
|
||||||
|
aNULL
|
||||||
|
eNULL
|
||||||
|
EXPORT
|
||||||
|
DES
|
||||||
|
RC4
|
||||||
|
MD5
|
||||||
|
PSK
|
||||||
|
aECDH
|
||||||
|
EDH-DSS-DES-CBC3-SHA
|
||||||
|
EDH-RSA-DES-CDC3-SHA
|
||||||
|
KRB5-DE5, CBC3-SHA
|
||||||
|
|
||||||
|
|
||||||
|
smtpd_tls_session_cache_database = btree:\${data_directory}/smtpd_scache
|
||||||
|
smtp_tls_session_cache_database = btree:\${data_directory}/smtp_scache
|
||||||
|
|
||||||
|
EOF
|
||||||
|
echo_ok
|
||||||
|
|
||||||
|
echononl " Configure SASL authentification"
|
||||||
|
if $_SASL_AUTH ; then
|
||||||
|
|
||||||
|
_failed=false
|
||||||
|
echo "[$_RELAY_HOST] ${_SASL_USER}@${_RELAY_HOST}:$_SASL_PASS" > /etc/postfix/sasl_passwd
|
||||||
|
if [[ "$?" != "0" ]]; then
|
||||||
|
error "Setting \"/etc/postfix/sasl_passwd\" failed! "
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
chown root:root /etc/postfix/sasl_passwd
|
||||||
|
if [[ "$?" != "0" ]]; then
|
||||||
|
error "Setting ownership of \"/etc/postfix/sasl_passwd\" failed! "
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
chmod 600 /etc/postfix/sasl_passwd
|
||||||
|
if [[ "$?" != "0" ]]; then
|
||||||
|
error "Setting permissions on \"/etc/postfix/sasl_passwd\" failed! "
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
postmap /etc/postfix/sasl_passwd
|
||||||
|
chown root:root /etc/postfix/sasl_passwd.db
|
||||||
|
if [[ "$?" != "0" ]]; then
|
||||||
|
error "Creating \"/etc/postfix/sasl_passwd\" failed! "
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
chown root:root /etc/postfix/sasl_passwd.db
|
||||||
|
if [[ "$?" != "0" ]]; then
|
||||||
|
error "Setting ownership of \"/etc/postfix/sasl_passwd.db\" failed! "
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
if $_failed ; then
|
||||||
|
echo_failed
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
## - /etc/mailname
|
||||||
|
## -
|
||||||
|
echononl " Set \"/etc/mailname\""
|
||||||
|
echo $_HOSTNAME > /etc/mailname
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
|
||||||
|
## - /etc/aliases
|
||||||
|
## -
|
||||||
|
echononl " Adjust \"/etc/aliases\""
|
||||||
|
cat << EOF > /etc/aliases
|
||||||
|
# See man 5 aliases for format
|
||||||
|
mailer-daemon: postmaster
|
||||||
|
postmaster: root
|
||||||
|
nobody: root
|
||||||
|
hostmaster: root
|
||||||
|
usenet: root
|
||||||
|
news: root
|
||||||
|
webmaster: root
|
||||||
|
www: root
|
||||||
|
ftp: root
|
||||||
|
abuse: root
|
||||||
|
noc: root
|
||||||
|
security: root
|
||||||
|
|
||||||
|
root: $_ADMIN_EMAIL
|
||||||
|
EOF
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
## - create directory for certificates and copy certificates
|
||||||
|
## - and coresponding keys to /etc/postfix/ssl/
|
||||||
|
## -
|
||||||
|
echononl " Create directory for certificates \"/etc/postfix/ssl\""
|
||||||
|
if [[ -d "/etc/postfix/ssl" ]] ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
mkdir -p /etc/postfix/ssl
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
## - generate DH parameters that the Postfix SMTP server should use
|
||||||
|
## - with EDH ciphers (length 512 and 1024
|
||||||
|
## -
|
||||||
|
echononl " Generate DH key length=512 \"/etc/postfix/ssl/dh_512.pem\""
|
||||||
|
if [ ! -f /etc/postfix/ssl/dh_512.pem ]; then
|
||||||
|
openssl gendh -out /etc/postfix/ssl/dh_512.pem -2 512 > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
echononl " Generate DH key length=1024 \"/etc/postfix/ssl/dh_1024.pem\""
|
||||||
|
if [ ! -f /etc/postfix/ssl/dh_1024.pem ]; then
|
||||||
|
openssl gendh -out /etc/postfix/ssl/dh_1024.pem -2 1024 > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
echononl " Generate DH key length=2048 \"/etc/postfix/ssl/dh_2048.pem\""
|
||||||
|
if [ ! -f /etc/postfix/ssl/dh_2048.pem ]; then
|
||||||
|
openssl gendh -out /etc/postfix/ssl/dh_2048.pem -2 2048 > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
echononl " Create Symlink \"$_TLS_CERT_FILE\""
|
||||||
|
if [ ! -h "$_TLS_CERT_FILE" ]; then
|
||||||
|
ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem $_TLS_CERT_FILE
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
echononl " Create Symlink \"$_TLS_KEY_FILE\""
|
||||||
|
if [ ! -h "$_TLS_KEY_FILE" ]; then
|
||||||
|
ln -s /etc/ssl/private/ssl-cert-snakeoil.key $_TLS_KEY_FILE
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
## - rebuld alias database
|
||||||
|
## -
|
||||||
|
echononl " Rebuld alias database"
|
||||||
|
newaliases > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
|
||||||
|
## - restart postfix
|
||||||
|
## -
|
||||||
|
echononl " Restart postfix"
|
||||||
|
if $systemd_exists ; then
|
||||||
|
systemctl restart postfix > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
/etc/init.d/postfix restart > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
## - Omitt logging into system.log
|
||||||
|
## -
|
||||||
|
echononl " Create \"/etc/rsyslog.d/postfix.conf\""
|
||||||
|
cat << EOF >> /etc/rsyslog.d/postfix.conf
|
||||||
|
|
||||||
|
#
|
||||||
|
# Logging for the mail system. Split it up so that
|
||||||
|
# it is easy to write scripts to parse these files.
|
||||||
|
#
|
||||||
|
mail.info -/var/log/mail.info
|
||||||
|
mail.warn -/var/log/mail.warn
|
||||||
|
mail.err /var/log/mail.err
|
||||||
|
|
||||||
|
mail.* -/var/log/mail.log
|
||||||
|
& ~
|
||||||
|
EOF
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl " Restart rsyslog daemon"
|
||||||
|
if $systemd_exists ; then
|
||||||
|
systemctl restart rsyslog > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
/etc/init.d/rsyslog restart > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
exit
|
1120
BAK/install_postfix_relay.sh
Executable file
1120
BAK/install_postfix_relay.sh
Executable file
File diff suppressed because it is too large
Load Diff
1011
BAK/install_postfix_relay.sh.00
Executable file
1011
BAK/install_postfix_relay.sh.00
Executable file
File diff suppressed because it is too large
Load Diff
1441
DOC/amavis/amavis_clamav_sa.install
Normal file
1441
DOC/amavis/amavis_clamav_sa.install
Normal file
File diff suppressed because it is too large
Load Diff
3
DOC/postfix/etc_postgrey_whitelist_clients.local
Normal file
3
DOC/postfix/etc_postgrey_whitelist_clients.local
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# For Office 365 - servers:
|
||||||
|
##/.*outbound.protection.outlook.com$/
|
||||||
|
/^mail-.*\.outbound\.protection\.outlook\.com$/
|
461
DOC/postfix/postfix_base_mailsystem.install
Normal file
461
DOC/postfix/postfix_base_mailsystem.install
Normal file
@ -0,0 +1,461 @@
|
|||||||
|
## ------------------------------------ ## ## - - ##
|
||||||
|
## - install postfix base system - ##
|
||||||
|
## - - ##
|
||||||
|
## - supports ipv6 - ##
|
||||||
|
## - - ##
|
||||||
|
## ------------------------------------ ##
|
||||||
|
|
||||||
|
_TLS_CERT_DIR=/etc/postfix/ssl
|
||||||
|
_TLS_CERT_FILE="${_TLS_CERT_DIR}/mailserver.crt"
|
||||||
|
_TLS_KEY_FILE="${_TLS_CERT_DIR}/mailserver.key"
|
||||||
|
|
||||||
|
_TLS_CA_FILE=/etc/ssl/certs/ca-certificates.crt
|
||||||
|
|
||||||
|
|
||||||
|
_HOSTNAME=<hostname>
|
||||||
|
_IPV4=<ipv4-address>
|
||||||
|
## - Leave empty, if no IPv6 should be supported
|
||||||
|
## -
|
||||||
|
#_IPV6=<ipv6-address>
|
||||||
|
_IPV6=
|
||||||
|
|
||||||
|
_ADMIN_EMAIL=<admin_email>
|
||||||
|
|
||||||
|
_SASL_AUTH=<true|false>
|
||||||
|
_RELAY_HOST=b.mx.oopen.de
|
||||||
|
_SASL_USER=<sasl_user>
|
||||||
|
_SASL_PASS='sasl_password'
|
||||||
|
|
||||||
|
|
||||||
|
## - remove exim4 and related if installed and you plan
|
||||||
|
## - to install an alternative mailer
|
||||||
|
## -
|
||||||
|
apt-get remove --purge bsd-mailx exim4 exim4-base exim4-config \
|
||||||
|
exim4-daemon-light mailx
|
||||||
|
|
||||||
|
|
||||||
|
apt-get install postfix postfix-pcre libsasl2-modules bsd-mailx haveged
|
||||||
|
|
||||||
|
if $_SASL_AUTH ; then
|
||||||
|
apt-get install libsasl2-modules
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp -a /etc/postfix/main.cf /etc/postfix/main.cf.ORIG
|
||||||
|
|
||||||
|
|
||||||
|
cat <<EOF > /etc/postfix/main.cf
|
||||||
|
# ============ Basic settings ============
|
||||||
|
|
||||||
|
# Debian specific: Specifying a file name will cause the first
|
||||||
|
# line of that file to be used as the name. The Debian default
|
||||||
|
# is /etc/mailname.
|
||||||
|
#myorigin = /etc/mailname
|
||||||
|
myorigin = /etc/mailname
|
||||||
|
|
||||||
|
smtpd_banner = \$myhostname ESMTP \$mail_name (Debian/GNU)
|
||||||
|
biff = no
|
||||||
|
|
||||||
|
# appending .domain is the MUA's job.
|
||||||
|
append_dot_mydomain = no
|
||||||
|
|
||||||
|
# Uncomment the next line to generate "delayed mail" warnings
|
||||||
|
#delay_warning_time = 4h
|
||||||
|
|
||||||
|
readme_directory = /usr/share/doc/postfix
|
||||||
|
html_directory = /usr/share/doc/postfix/html
|
||||||
|
|
||||||
|
## - The Internet protocols Postfix will attempt to use when making
|
||||||
|
## - or accepting connections.
|
||||||
|
## - DEFAULT: ipv4
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [ -n "$_IPV6" ]; then
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
inet_protocols = ipv4, ipv6
|
||||||
|
|
||||||
|
#inet_interfaces = all
|
||||||
|
inet_interfaces = 127.0.0.1
|
||||||
|
$_IPV4
|
||||||
|
$_IPV6
|
||||||
|
|
||||||
|
myhostname = $_HOSTNAME
|
||||||
|
|
||||||
|
mydestination =
|
||||||
|
$_HOSTNAME
|
||||||
|
localhost
|
||||||
|
|
||||||
|
## - The list of "trusted" SMTP clients that have more
|
||||||
|
## - privileges than "strangers"
|
||||||
|
## -
|
||||||
|
mynetworks =
|
||||||
|
127.0.0.0/8
|
||||||
|
[::ffff:127.0.0.0]/104
|
||||||
|
[::1]/128
|
||||||
|
${_IPV4}/32
|
||||||
|
[${_IPV6}]/128
|
||||||
|
|
||||||
|
smtp_bind_address = $_IPV4
|
||||||
|
smtp_bind_address6 = $_IPV6
|
||||||
|
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
inet_protocols = ipv4
|
||||||
|
|
||||||
|
#inet_interfaces = all
|
||||||
|
inet_interfaces =
|
||||||
|
127.0.0.1
|
||||||
|
$_IPV4
|
||||||
|
|
||||||
|
myhostname = $_HOSTNAME
|
||||||
|
|
||||||
|
mydestination =
|
||||||
|
$_HOSTNAME
|
||||||
|
localhost
|
||||||
|
|
||||||
|
## - The list of "trusted" SMTP clients that have more
|
||||||
|
## - privileges than "strangers"
|
||||||
|
## -
|
||||||
|
mynetworks =
|
||||||
|
127.0.0.0/8
|
||||||
|
${_IPV4}/32
|
||||||
|
|
||||||
|
smtp_bind_address = $_IPV4
|
||||||
|
#smtp_bind_address6 = $_IPV6
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
|
||||||
|
## - The method to generate the default value for the mynetworks parameter.
|
||||||
|
## -
|
||||||
|
## - mynetworks_style = host" when Postfix should "trust" only the local machine
|
||||||
|
## - mynetworks_style = subnet (default value) "when Postfix should "trust" SMTP
|
||||||
|
## - clients in the same IP subnetworks as the local machine.
|
||||||
|
## - mynetworks_style = class" when Postfix should "trust" SMTP clients in the same
|
||||||
|
## - IP class A/B/C networks as the local machine.
|
||||||
|
## -
|
||||||
|
#mynetworks_style = host
|
||||||
|
|
||||||
|
|
||||||
|
## - The maximal size of any local(8) individual mailbox or maildir file,
|
||||||
|
## - or zero (no limit). In fact, this limits the size of any file that is
|
||||||
|
## - written to upon local delivery, including files written by external
|
||||||
|
## - commands that are executed by the local(8) delivery agent.
|
||||||
|
## -
|
||||||
|
mailbox_size_limit = 0
|
||||||
|
|
||||||
|
## - The maximal size in bytes of a message, including envelope information.
|
||||||
|
## -
|
||||||
|
## - we user 50MB
|
||||||
|
## -
|
||||||
|
message_size_limit = 52480000
|
||||||
|
|
||||||
|
## - The system-wide recipient address extension delimiter
|
||||||
|
## -
|
||||||
|
recipient_delimiter = +
|
||||||
|
|
||||||
|
## - The alias databases that are used for local(8) delivery.
|
||||||
|
## -
|
||||||
|
alias_maps =
|
||||||
|
hash:/etc/aliases
|
||||||
|
|
||||||
|
## - The alias databases for local(8) delivery that are updated
|
||||||
|
## - with "newaliases" or with "sendmail -bi".
|
||||||
|
## -
|
||||||
|
alias_database =
|
||||||
|
hash:/etc/aliases
|
||||||
|
|
||||||
|
|
||||||
|
## - The maximal time a message is queued before it is sent back as
|
||||||
|
## - undeliverable. Defaults to 5d (5 days)
|
||||||
|
## - Specify 0 when mail delivery should be tried only once.
|
||||||
|
## -
|
||||||
|
maximal_queue_lifetime = 3d
|
||||||
|
bounce_queue_lifetime = \$maximal_queue_lifetime
|
||||||
|
|
||||||
|
## - delay_warning_time (default: 0h)
|
||||||
|
## -
|
||||||
|
## - The time after which the sender receives a copy of the message
|
||||||
|
## - headers of mail that is still queued. To enable this feature,
|
||||||
|
## - specify a non-zero time value (an integral value plus an optional
|
||||||
|
## - one-letter suffix that specifies the time unit).
|
||||||
|
## - Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
|
||||||
|
## - The default time unit is h (hours).
|
||||||
|
delay_warning_time = 1d
|
||||||
|
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if $_SASL_AUTH ; then
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
|
||||||
|
# ============ Relay parameters ============
|
||||||
|
|
||||||
|
#relayhost =
|
||||||
|
|
||||||
|
|
||||||
|
# ============ SASL authentication ============
|
||||||
|
|
||||||
|
# Enable SASL authentication
|
||||||
|
smtp_sasl_auth_enable = yes
|
||||||
|
|
||||||
|
# Forwarding to the ip-adress of host b.mx.oopen.de
|
||||||
|
relayhost = [b.mx.oopen.de]
|
||||||
|
|
||||||
|
# File including login data
|
||||||
|
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
|
||||||
|
|
||||||
|
# Force using a (TLS) security connection
|
||||||
|
# obsulete - use smtp_tls_security_level instead
|
||||||
|
#smtp_use_tls = yes
|
||||||
|
#smtp_tls_enforce_peername = no
|
||||||
|
smtp_tls_security_level = encrypt
|
||||||
|
|
||||||
|
# Disallow methods that allow anonymous authentication.
|
||||||
|
smtp_sasl_security_options = noanonymous
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ============ TLS parameters ============
|
||||||
|
|
||||||
|
## - Aktiviert TLS für den Mailempfang
|
||||||
|
## -
|
||||||
|
## - may:
|
||||||
|
## - Opportunistic TLS. Use TLS if this is supported by the remote
|
||||||
|
## - SMTP server, otherwise use plaintext
|
||||||
|
## -
|
||||||
|
## - This overrides the obsolete parameters smtpd_use_tls and
|
||||||
|
## - smtpd_enforce_tls. This parameter is ignored with
|
||||||
|
## - "smtpd_tls_wrappermode = yes".
|
||||||
|
#smtpd_use_tls=yes
|
||||||
|
smtp_tls_security_level=encrypt
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
else
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
|
||||||
|
# ============ Relay parameters ============
|
||||||
|
|
||||||
|
relayhost =
|
||||||
|
|
||||||
|
|
||||||
|
# ============ TLS parameters ============
|
||||||
|
|
||||||
|
## - Aktiviert TLS für den Mailempfang
|
||||||
|
## -
|
||||||
|
## - may:
|
||||||
|
## - Opportunistic TLS. Use TLS if this is supported by the remote
|
||||||
|
## - SMTP server, otherwise use plaintext
|
||||||
|
## -
|
||||||
|
## - This overrides the obsolete parameters smtpd_use_tls and
|
||||||
|
## - smtpd_enforce_tls. This parameter is ignored with
|
||||||
|
## - "smtpd_tls_wrappermode = yes".
|
||||||
|
#smtpd_use_tls=yes
|
||||||
|
smtp_tls_security_level=may
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
## - Aktiviert TLS für den Mailversand
|
||||||
|
## -
|
||||||
|
## - may:
|
||||||
|
## - Opportunistic TLS: announce STARTTLS support to SMTP clients,
|
||||||
|
## - but do not require that clients use TLS encryption.
|
||||||
|
# smtp_use_tls=yes
|
||||||
|
smtpd_tls_security_level=may
|
||||||
|
|
||||||
|
## - 0 Disable logging of TLS activity.
|
||||||
|
## - 1 Log TLS handshake and certificate information.
|
||||||
|
## - 2 Log levels during TLS negotiation.
|
||||||
|
## - 3 Log hexadecimal and ASCII dump of TLS negotiation process.
|
||||||
|
## - 4 Also log hexadecimal and ASCII dump of complete transmission after STARTTLS.
|
||||||
|
## -
|
||||||
|
smtpd_tls_loglevel = 1
|
||||||
|
smtp_tls_loglevel = 1
|
||||||
|
|
||||||
|
smtpd_tls_cert_file = $_TLS_CERT_FILE
|
||||||
|
smtpd_tls_key_file = $_TLS_KEY_FILE
|
||||||
|
|
||||||
|
## - File with DH parameters that the Postfix SMTP server should use with EDH ciphers.
|
||||||
|
## -
|
||||||
|
## - Dont't forget to create it, e.g with openssl:
|
||||||
|
## - openssl gendh -out /etc/postfix/ssl/dh_1024.pem -2 1024
|
||||||
|
## -
|
||||||
|
smtpd_tls_dh1024_param_file = /etc/postfix/ssl/dh_1024.pem
|
||||||
|
## - also possible to use 2048 key with that parameter
|
||||||
|
## -
|
||||||
|
#smtpd_tls_dh1024_param_file = /etc/postfix/ssl/dh_2048.pem
|
||||||
|
|
||||||
|
## - File with DH parameters that the Postfix SMTP server should use with EDH ciphers.
|
||||||
|
## -
|
||||||
|
## - Dont't forget to create it, e.g with openssl:
|
||||||
|
## - openssl gendh -out /etc/postfix/ssl/dh_512.pem -2 512
|
||||||
|
## -
|
||||||
|
smtpd_tls_dh512_param_file = /etc/postfix/ssl/dh_512.pem
|
||||||
|
|
||||||
|
|
||||||
|
## - File containing CA certificates of root CAs trusted to sign either remote SMTP
|
||||||
|
## - server certificates or intermediate CA certificates. These are loaded into
|
||||||
|
## - memory !! BEFORE !! the smtp(8) client enters the chroot jail.
|
||||||
|
## -
|
||||||
|
smtp_tls_CAfile = $_TLS_CA_FILE
|
||||||
|
|
||||||
|
## - Directory with PEM format certificate authority certificates that the Postfix SMTP
|
||||||
|
## - client uses to verify a remote SMTP server certificate. Don't forget to create the
|
||||||
|
## - necessary "hash" links with, for example, "
|
||||||
|
## - $OPENSSL_HOME/bin/c_rehash /etc/postfix/certs".
|
||||||
|
## -
|
||||||
|
## - !! Note !!
|
||||||
|
## - To use this option in chroot mode, this directory (or a copy) must be inside
|
||||||
|
## - the chroot jail.
|
||||||
|
## -
|
||||||
|
## - Note that a chrooted daemon resolves all filenames relative to the Postfix
|
||||||
|
## - queue directory (/var/spool/postfix)
|
||||||
|
## -
|
||||||
|
#smtpd_tls_CApath = /etc/postfix/certs
|
||||||
|
|
||||||
|
|
||||||
|
# Disable SSLv2 SSLv3 - Postfix SMTP server
|
||||||
|
#
|
||||||
|
# List of TLS protocols that the Postfix SMTP server will exclude or
|
||||||
|
# include with opportunistic TLS encryption.
|
||||||
|
smtpd_tls_protocols = !SSLv2, !SSLv3
|
||||||
|
#
|
||||||
|
# The SSL/TLS protocols accepted by the Postfix SMTP server
|
||||||
|
# with mandatory TLS encryption.
|
||||||
|
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
|
||||||
|
|
||||||
|
|
||||||
|
# Disable SSLv2 SSLv3 - Postfix SMTP client
|
||||||
|
#
|
||||||
|
# List of TLS protocols that the Postfix SMTP client will exclude or
|
||||||
|
# include with opportunistic TLS encryption.
|
||||||
|
smtp_tls_protocols = !SSLv2, !SSLv3
|
||||||
|
#
|
||||||
|
# List of SSL/TLS protocols that the Postfix SMTP client will use
|
||||||
|
# with mandatory TLS encryption
|
||||||
|
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
|
||||||
|
|
||||||
|
|
||||||
|
## - Activate des "Ephemeral Elliptic Curve Diffie-Hellman" (EECDH) key exchange
|
||||||
|
## - openssl > 1.0
|
||||||
|
## -
|
||||||
|
smtpd_tls_eecdh_grade = strong
|
||||||
|
|
||||||
|
# standard list cryptographic algorithm
|
||||||
|
tls_preempt_cipherlist = yes
|
||||||
|
|
||||||
|
# Disable ciphers which are less than 256-bit:
|
||||||
|
#
|
||||||
|
#smtpd_tls_mandatory_ciphers = high
|
||||||
|
#
|
||||||
|
# opportunistic
|
||||||
|
smtpd_tls_ciphers = high
|
||||||
|
|
||||||
|
|
||||||
|
# Exclude ciphers
|
||||||
|
#smtpd_tls_exclude_ciphers =
|
||||||
|
# RC4
|
||||||
|
# aNULL
|
||||||
|
# SEED-SHA
|
||||||
|
# EXP
|
||||||
|
# MD5
|
||||||
|
smtpd_tls_exclude_ciphers =
|
||||||
|
aNULL
|
||||||
|
eNULL
|
||||||
|
EXPORT
|
||||||
|
DES
|
||||||
|
RC4
|
||||||
|
MD5
|
||||||
|
PSK
|
||||||
|
aECDH
|
||||||
|
EDH-DSS-DES-CBC3-SHA
|
||||||
|
EDH-RSA-DES-CDC3-SHA
|
||||||
|
KRB5-DE5, CBC3-SHA
|
||||||
|
|
||||||
|
|
||||||
|
smtpd_tls_session_cache_database = btree:\${data_directory}/smtpd_scache
|
||||||
|
smtp_tls_session_cache_database = btree:\${data_directory}/smtp_scache
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if $_SASL_AUTH ; then
|
||||||
|
|
||||||
|
echo "[$_RELAY_HOST] ${_SASL_USER}@${_RELAY_HOST}:$_SASL_PASS" > /etc/postfix/sasl_passwd
|
||||||
|
chown root:root /etc/postfix/sasl_passwd
|
||||||
|
chmod 600 /etc/postfix/sasl_passwd
|
||||||
|
postmap /etc/postfix/sasl_passwd
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
## - create directory for certificates and copy certificates
|
||||||
|
## - and coresponding keys to /etc/postfix/ssl/
|
||||||
|
## -
|
||||||
|
mkdir -p /etc/postfix/ssl
|
||||||
|
cp <zertificates and keys to> /etc/postfix/ssl/
|
||||||
|
|
||||||
|
|
||||||
|
## - generate DH parameters that the Postfix SMTP server should use
|
||||||
|
## - with EDH ciphers (length 512 and 1024
|
||||||
|
## -
|
||||||
|
openssl gendh -out /etc/postfix/ssl/dh_512.pem -2 512
|
||||||
|
openssl gendh -out /etc/postfix/ssl/dh_1024.pem -2 1024
|
||||||
|
openssl gendh -out /etc/postfix/ssl/dh_2048.pem -2 2048
|
||||||
|
|
||||||
|
ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem $_TLS_CERT_FILE
|
||||||
|
ln -s /etc/ssl/private/ssl-cert-snakeoil.key $_TLS_KEY_FILE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## - /etc/mailname
|
||||||
|
## -
|
||||||
|
echo $_HOSTNAME > /etc/mailname
|
||||||
|
|
||||||
|
|
||||||
|
## - /etc/aliases
|
||||||
|
## -
|
||||||
|
cat << EOF > /etc/aliases
|
||||||
|
# See man 5 aliases for format
|
||||||
|
mailer-daemon: postmaster
|
||||||
|
postmaster: root
|
||||||
|
nobody: root
|
||||||
|
hostmaster: root
|
||||||
|
usenet: root
|
||||||
|
news: root
|
||||||
|
webmaster: root
|
||||||
|
www: root
|
||||||
|
ftp: root
|
||||||
|
abuse: root
|
||||||
|
noc: root
|
||||||
|
security: root
|
||||||
|
|
||||||
|
root: $_ADMIN_EMAIL
|
||||||
|
EOF
|
||||||
|
|
||||||
|
## - rebuld alias database
|
||||||
|
## -
|
||||||
|
newaliases
|
||||||
|
|
||||||
|
|
||||||
|
cat << EOF >> /etc/rsyslog.d/postfix.conf
|
||||||
|
|
||||||
|
#
|
||||||
|
# Logging for the mail system. Split it up so that
|
||||||
|
# it is easy to write scripts to parse these files.
|
||||||
|
#
|
||||||
|
mail.info -/var/log/mail.info
|
||||||
|
mail.warn -/var/log/mail.warn
|
||||||
|
mail.err /var/log/mail.err
|
||||||
|
|
||||||
|
mail.* -/var/log/mail.log
|
||||||
|
& ~
|
||||||
|
EOF
|
||||||
|
|
||||||
|
/etc/init.d/rsyslog restart
|
||||||
|
|
||||||
|
|
1706
DOC/postfix/postfix_mailsystem.install
Normal file
1706
DOC/postfix/postfix_mailsystem.install
Normal file
File diff suppressed because it is too large
Load Diff
190
DOC/postfix/postfix_sasl_cyrus_on_relayhost.txt
Normal file
190
DOC/postfix/postfix_sasl_cyrus_on_relayhost.txt
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
## - Configure a postfix server to act as relay host for
|
||||||
|
## - AUTENTiCATED clients
|
||||||
|
## -
|
||||||
|
## - see also Postfix SASL Howto:
|
||||||
|
## - http://www.postfix.org/SASL_README.html
|
||||||
|
## - http://www.synology-wiki.de/index.php/Mail-Relay_mit_Postfix
|
||||||
|
## -
|
||||||
|
|
||||||
|
|
||||||
|
## - Todo:
|
||||||
|
## - 1.) Configuring SASL authentication in the Postfix SMTP server
|
||||||
|
## - - Configuring Cyrus SASL - using accounts are stored in a Cyrus SASL
|
||||||
|
## - Berkeley DB database
|
||||||
|
## - 2.) Configuring SASL authentication in the Postfix SMTP/LMTP client
|
||||||
|
|
||||||
|
## - ------------------------------------------------------------- - ##
|
||||||
|
## - 1. Configuring SASL authentication at the Postfix SMTP server - ##
|
||||||
|
## - ------------------------------------------------------------- - ##
|
||||||
|
|
||||||
|
## -----------------------------
|
||||||
|
## - Create the sasldb2 Database
|
||||||
|
## -
|
||||||
|
## - To create and maintain the database, we will user the
|
||||||
|
## - command-line utility "saslpasswd2". So, we have to install
|
||||||
|
## - the packages sasl2-bin
|
||||||
|
## -
|
||||||
|
apt-get install sasl2-bin
|
||||||
|
|
||||||
|
|
||||||
|
## - The sasldb auxprop plugin authenticates SASL clients against credentials
|
||||||
|
## - that are stored in a Berkeley DB database. The database schema is specific
|
||||||
|
## - to Cyrus SASL. The database is usually located at /etc/sasldb2
|
||||||
|
## -
|
||||||
|
## - !!!!
|
||||||
|
## - NOTE: in chrooted postfix, thats if chroot in master.cf is not set (have
|
||||||
|
## - "-") or is set to yes (have "y"), the database "sasdb2" ist
|
||||||
|
## - searched in the chrooted path. In debian it is file
|
||||||
|
## - /var/spool/postfix/etc/sasldb2
|
||||||
|
## - !!!!
|
||||||
|
## -
|
||||||
|
|
||||||
|
|
||||||
|
## - Create a new account
|
||||||
|
## -
|
||||||
|
## - Note:
|
||||||
|
## - 1.) usernames of accounts are of the Form:
|
||||||
|
## - <username>@<domain> and NOT <username>
|
||||||
|
## -
|
||||||
|
## - 2.) The database-file defaults to "/etc/sasldb2". But on chrooted
|
||||||
|
## - postfix (as we have), the database file must placed to
|
||||||
|
## - /var/spool/postfix/etc/sasldb2 - on default debian postfix
|
||||||
|
## - install. So use flag "-f"
|
||||||
|
## -
|
||||||
|
saslpasswd2 -c -u b.mx.oopen.de <username> -f /var/spool/postfix/etc/sasldb2
|
||||||
|
|
||||||
|
## - Check with command-line utility "sasldblistusers2"
|
||||||
|
## -
|
||||||
|
sasldblistusers2 -f /var/spool/postfix/etc/sasldb2
|
||||||
|
|
||||||
|
|
||||||
|
## ------------------------------------------------
|
||||||
|
## - Configure and Enable Cyrus SASL authentication
|
||||||
|
|
||||||
|
|
||||||
|
## - in /etc/postfix/main.cf set:
|
||||||
|
## -
|
||||||
|
## - smtpd_sasl_type = cyrus
|
||||||
|
## -
|
||||||
|
## - # Define the name of the configuration file. Cyrus SASL add's the
|
||||||
|
## - # suffix ".conf". The location where Cyrus SASL searches for the named
|
||||||
|
## - # file depends on the Cyrus SASL version and the OS/distribution used.
|
||||||
|
## - # For debian it is: /etc/postfix/sasl/
|
||||||
|
## - smtpd_sasl_path = smtpd
|
||||||
|
## -
|
||||||
|
## - # enable SASL authentication
|
||||||
|
## - smtpd_sasl_auth_enable = yes
|
||||||
|
## -
|
||||||
|
## - # Disallow methods that allow anonymous authentication.
|
||||||
|
## - smtpd_sasl_security_options = noanonymous
|
||||||
|
## - smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
|
||||||
|
## -
|
||||||
|
## - # Do not accept SASL authentication over unencrypted connections
|
||||||
|
## - smtpd_tls_auth_only = yes
|
||||||
|
## -
|
||||||
|
vim /etc/postfix/main.cf
|
||||||
|
|
||||||
|
## - create /etc/postfix/sasl/smtpd.conf
|
||||||
|
## -
|
||||||
|
## - pwcheck_method: auxprop
|
||||||
|
## - auxprop_plugin: sasldb
|
||||||
|
## - mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
|
||||||
|
## -
|
||||||
|
## - Take care only to use provided login mechanisms
|
||||||
|
## - # saslpluginviewer -x AUXPROP_MECHS
|
||||||
|
## -
|
||||||
|
vim /etc/postfix/sasl/smtpd.conf
|
||||||
|
|
||||||
|
|
||||||
|
## - To allow (dynamic) ip-adresses to relay, even if they ar blacklistet
|
||||||
|
## - you can use permit_sasl_authenticated in postfix smtpd_relay_restrictions
|
||||||
|
## - BEFOR checking against blacklists
|
||||||
|
## -
|
||||||
|
## - in /etc/postfix/main.cf set:
|
||||||
|
## -
|
||||||
|
## - smtpd_recipient_restrictions =
|
||||||
|
## - ...
|
||||||
|
## - # permit trusted network mynetwork
|
||||||
|
## - permit_mynetworks,
|
||||||
|
## - # sasl authenticated user (we work as relayhost for some office networks)
|
||||||
|
## - permit_sasl_authenticated,
|
||||||
|
## - # dont' accept misconfigured Mail
|
||||||
|
## - reject_non_fqdn_recipient,
|
||||||
|
## - reject_unknown_sender_domain,
|
||||||
|
## - reject_unknown_recipient_domain,
|
||||||
|
## - reject_unlisted_recipient,
|
||||||
|
## - # RBL check - !! comment out if postcreens postscreen_dnsbl_sites is in use
|
||||||
|
## - permit_dnswl_client dnswl.oopen.de,
|
||||||
|
## - #reject_rbl_client zen.spamhaus.org,
|
||||||
|
## - reject_rbl_client ix.dnsbl.manitu.net,
|
||||||
|
## - reject_rbl_client bl.spamcop.net,
|
||||||
|
## - reject_rbl_client dnsbl.njabl.org,
|
||||||
|
## - # Policyd-Weight
|
||||||
|
## - ...
|
||||||
|
## -
|
||||||
|
vim /etc/postfix/main.cf
|
||||||
|
|
||||||
|
|
||||||
|
## - --------------------------------------------------------------- - ##
|
||||||
|
## - Configuring SASL authentication in the Postfix SMTP/LMTP client - ##
|
||||||
|
## - --------------------------------------------------------------- - ##
|
||||||
|
|
||||||
|
|
||||||
|
## - Notice: you have to install Pluggable Authentication Modules for SASL
|
||||||
|
## - for debian: install package libsasl2-modules
|
||||||
|
## -
|
||||||
|
apt-get install libsasl2-modules
|
||||||
|
|
||||||
|
|
||||||
|
## - Edit file /etc/postfix/main.cf and set:
|
||||||
|
## -
|
||||||
|
## - # Enable SASL authentication
|
||||||
|
## - smtp_sasl_auth_enable = yes
|
||||||
|
## -
|
||||||
|
## - # Forwarding to the ip-adress of host b.mx.oopen.de
|
||||||
|
## - relayhost = [b.mx.oopen.de]
|
||||||
|
## -
|
||||||
|
## - # File including login data
|
||||||
|
## - smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
|
||||||
|
## -
|
||||||
|
## - # Force using a (TLS) security connection
|
||||||
|
## - # obsulete - use smtp_tls_security_level instead
|
||||||
|
## - #smtp_use_tls = yes
|
||||||
|
## - #smtp_tls_enforce_peername = no
|
||||||
|
## - smtp_tls_security_level = encrypt
|
||||||
|
## -
|
||||||
|
## - # Disallow methods that allow anonymous authentication.
|
||||||
|
## - smtp_sasl_security_options = noanonymous
|
||||||
|
## -
|
||||||
|
vim /etc/postfix/main.cf
|
||||||
|
|
||||||
|
|
||||||
|
## - Enter SASL account data into file /etc/postfix/sasl_passwd
|
||||||
|
## -
|
||||||
|
## - <relayhost> <username>:<password>
|
||||||
|
## -
|
||||||
|
## - Note: if relayhost is configured as above, username is of the form
|
||||||
|
## - <username>@<domain>
|
||||||
|
## -
|
||||||
|
vim /etc/postfix/sasl_passwd
|
||||||
|
|
||||||
|
## - Important
|
||||||
|
## -
|
||||||
|
## - Keep the SASL client password file in /etc/postfix, and make the file
|
||||||
|
## - read+write only for root to protect the username/password combinations against
|
||||||
|
## - other users. The Postfix SMTP client will still be able to read the SASL
|
||||||
|
## - client passwords. It opens the file as user root before it drops privileges,
|
||||||
|
## - and before entering an optional chroot jail.
|
||||||
|
## -
|
||||||
|
chown root:root /etc/postfix/sasl_passwd
|
||||||
|
chmod 600 /etc/postfix/sasl_passwd
|
||||||
|
|
||||||
|
## - Create databasefile of /etc/postfix/sasl_passwd
|
||||||
|
## -
|
||||||
|
postmap /etc/postfix/sasl_passwd
|
||||||
|
|
||||||
|
|
||||||
|
## - Reload postfix
|
||||||
|
## -
|
||||||
|
/etc/init.d/postfix reload
|
||||||
|
|
29
DOC/postfix/whitelist_email_domain_postgrey.txt
Normal file
29
DOC/postfix/whitelist_email_domain_postgrey.txt
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
## - Empfänger Domains oder E-Mailadressen vom Greylisting
|
||||||
|
## -ausschliessen
|
||||||
|
|
||||||
|
## - Dazu zu sind Einträge in der whitelist_recipients nötig.
|
||||||
|
## - Das ist die Whitelist für die Empfänger, die dort eingetragenen
|
||||||
|
## - Domains, Postfächer oder E-Mail-Adressen werden vom Greylisting
|
||||||
|
## - ausgeschlossen.
|
||||||
|
## -
|
||||||
|
## - Die whitelist_recipients sind unter /etc/postgrey zu finden.
|
||||||
|
## -
|
||||||
|
vim /etc/postgrey/whitelist_recipients
|
||||||
|
|
||||||
|
## - Beispiel /etc/postgrey/whitelist_recipients:
|
||||||
|
## -
|
||||||
|
## - # postgrey whitelist for mail recipients
|
||||||
|
## - # --------------------------------------
|
||||||
|
## - # put this file in /etc/postgrey or specify its path
|
||||||
|
## - # with --whitelist-recipients=xxx
|
||||||
|
## -
|
||||||
|
## - postmaster@
|
||||||
|
## - abuse@
|
||||||
|
## -
|
||||||
|
## - # Domain und E-Mail-Adresse vom Greylisting ausschließen
|
||||||
|
## - oopen.de
|
||||||
|
## - wolle@k8h.de
|
||||||
|
## -
|
||||||
|
## - # Diese Einträge wären ueberflüssig
|
||||||
|
## - #ckubu-adm@oopen.de
|
||||||
|
## - #argus@oopen.de
|
185
DOC/postfix/whitelist_host_ip_address.txt
Normal file
185
DOC/postfix/whitelist_host_ip_address.txt
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
## - To whitelist a server ther a multiple possibilities
|
||||||
|
## -
|
||||||
|
|
||||||
|
## -----
|
||||||
|
## - 1.)
|
||||||
|
## -
|
||||||
|
## - To whitelist a server (name or ip-adress) or network , create the file
|
||||||
|
## - /etc/postfix/rbl_override
|
||||||
|
## - where you list all IP addresses or host names
|
||||||
|
## - (one per line!) that you want to whitelist:
|
||||||
|
## -
|
||||||
|
## - 1.2.3.4 OK
|
||||||
|
## - mail.freemailer.tld OK
|
||||||
|
## - 194.25.134/24 OK
|
||||||
|
## - ...
|
||||||
|
## -
|
||||||
|
vim /etc/postfix/rbl_override
|
||||||
|
|
||||||
|
## - After you've created/modified that file, you must run:
|
||||||
|
## -
|
||||||
|
postmap btree:/etc/postfix/rbl_override
|
||||||
|
#postmap /etc/postfix/rbl_override
|
||||||
|
|
||||||
|
## - Next open
|
||||||
|
## - /etc/postfix/main.cf
|
||||||
|
## - and search for the smtpd_recipient_restrictions parameter.
|
||||||
|
## - Add check_client_access hash:/etc/postfix/rbl_override to
|
||||||
|
## - that parameter, after reject_unauth_destination, but before
|
||||||
|
## - the first blacklist.
|
||||||
|
## -
|
||||||
|
## - smtpd_recipient_restrictions =
|
||||||
|
## - ...
|
||||||
|
## - permit_sasl_authenticated,
|
||||||
|
## - check_client_access btree:/etc/postfix/rbl_override,
|
||||||
|
## - #check_client_access hash:/etc/postfix/rbl_override,
|
||||||
|
## - reject_rbl_client zen.spamhaus.org,
|
||||||
|
## - ...
|
||||||
|
|
||||||
|
|
||||||
|
## - Now restart postfix:
|
||||||
|
## -
|
||||||
|
/etc/init.d/postfix restart
|
||||||
|
|
||||||
|
|
||||||
|
## ----
|
||||||
|
## - Notice:
|
||||||
|
## - there are also whitelist dns service, like list.dnswl.org
|
||||||
|
## - see: http://www.dnswl.org/
|
||||||
|
## - requesting such a service works the same as requesting a
|
||||||
|
## - blacklist server like
|
||||||
|
## -
|
||||||
|
## - for example the server 194.25.134.17 (one mailserver from t-online)
|
||||||
|
## - is blacklisted at bl.spamcop.net. that means the request
|
||||||
|
## -
|
||||||
|
## - chris@sol:~$ dig 17.134.25.194.bl.spamcop.net
|
||||||
|
## -
|
||||||
|
## - results in an ANSWER SECTION like
|
||||||
|
## -
|
||||||
|
## - 17.134.25.194.bl.spamcop.net. 2100 IN A 127.0.0.2
|
||||||
|
## -
|
||||||
|
## - ( or using host command:
|
||||||
|
## - chris@sol:~$ host 17.134.25.194.bl.spamcop.net
|
||||||
|
## - 17.134.25.194.bl.spamcop.net has address 127.0.0.2 )
|
||||||
|
## -
|
||||||
|
## - in contrast to "not found: 3(NXDOMAIN)" in case of a not blacklistet one
|
||||||
|
## -
|
||||||
|
## -
|
||||||
|
## - That t-online server is also (white-)listed at the at list.dnswl.org and
|
||||||
|
## - so, the request
|
||||||
|
## -
|
||||||
|
## - chris@sol:~$ dig 17.134.25.194.list.dnswl.org
|
||||||
|
## -
|
||||||
|
## - results in an ANSWER SECTION like:
|
||||||
|
## -
|
||||||
|
## - 17.134.25.194.list.dnswl.org. 12506 IN A 127.0.5.0
|
||||||
|
## -
|
||||||
|
## - or rather
|
||||||
|
## - chris@sol:~$ host 17.134.25.194.list.dnswl.org
|
||||||
|
## - 17.134.25.194.list.dnswl.org has address 127.0.5.0
|
||||||
|
## -
|
||||||
|
## -
|
||||||
|
## -----
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## -----
|
||||||
|
## - 2.)
|
||||||
|
## -
|
||||||
|
## - You can question more than one blacklist server an also whitelist server,
|
||||||
|
## - weight the single result and make a decision after getting the all-overresult
|
||||||
|
## -
|
||||||
|
## - Do so, use parameters "postscreen_dnsbl_sites and"
|
||||||
|
## - "postscreen_dnsbl_threshold".
|
||||||
|
## -
|
||||||
|
## -
|
||||||
|
## - Example configuration:
|
||||||
|
## -
|
||||||
|
## - postscreen_dnsbl_sites =
|
||||||
|
## - one.blacklist.server.com*2
|
||||||
|
## - another.blacklist.server.com
|
||||||
|
## - third.blacklist.server.com
|
||||||
|
## - list.dnswl.org*-3
|
||||||
|
## - postscreen_dnsbl_threshold=1 # (the default value)
|
||||||
|
## -
|
||||||
|
## - if the requested incomming-ip-adress matches the first blacklist server,
|
||||||
|
## - you get a result of "2" (because the entry for that blacklict server is
|
||||||
|
## - weighted with 2).
|
||||||
|
## - if the requested ip-address matches the second or the third blacklist
|
||||||
|
## - server the result is each with "1"
|
||||||
|
## - if the requested ip-address matches the whitelist server, the result
|
||||||
|
## - is "-3"
|
||||||
|
## -
|
||||||
|
## - assuming all servers matches, than the all over result is "2+1+1-3=1".
|
||||||
|
## - because 1 is equal or grater than "1" (the value of the parameter of
|
||||||
|
## - "postscreen_dnsbl_threshold"), the concerning the concerning network
|
||||||
|
## - connection will be dropped.
|
||||||
|
## -
|
||||||
|
## - assuming the first and second blacklist server and also the whitelist
|
||||||
|
## - server matches the concerning the all over result is "2+1-3=0".
|
||||||
|
## - Because 0 is lower then 1 (the value of the parameter
|
||||||
|
## - "postscreen_dnsbl_threshold"). the connection will be accepted (at that
|
||||||
|
## - point)
|
||||||
|
## -
|
||||||
|
## -
|
||||||
|
## - See "man postconf" or site
|
||||||
|
## - http://www.postfix.org/postconf.5.html for advanced usage
|
||||||
|
## -
|
||||||
|
## -----
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## -----
|
||||||
|
## - 3.)
|
||||||
|
## -
|
||||||
|
## - you can use postfix conf parameter "permit_dnswl_client"
|
||||||
|
## - in main.cf
|
||||||
|
## -
|
||||||
|
## - here is an example using list.dnswl.org
|
||||||
|
## -
|
||||||
|
## - smtpd_recipient_restrictions =
|
||||||
|
## - ...
|
||||||
|
## - permit_sasl_authenticated,
|
||||||
|
## - permit_dnswl_client list.dnswl.org,
|
||||||
|
## - reject_rbl_client someblacklist.example.com,
|
||||||
|
## - reject_rbl_client moreblacklist.example.com,
|
||||||
|
## - permit_mynetworks,
|
||||||
|
## - ...
|
||||||
|
## -
|
||||||
|
## - To override only for "low", "med" and "hi" (see
|
||||||
|
## - http://www.dnswl.org/tech):
|
||||||
|
## -
|
||||||
|
## - smtpd_recipient_restrictions =
|
||||||
|
## - ...
|
||||||
|
## - permit_sasl_authenticated,
|
||||||
|
## - permit_dnswl_client list.dnswl.org=127.0.[0..255].[1..3],
|
||||||
|
## - reject_rbl_client someblacklist.example.com,
|
||||||
|
## - permit_mynetworks,
|
||||||
|
## - reject_unauth_destination
|
||||||
|
## -
|
||||||
|
## -----
|
||||||
|
|
||||||
|
## - Notice:
|
||||||
|
## -
|
||||||
|
## - I have configured some white list entries d.c.b.a.dnswl.oopen.de.
|
||||||
|
## - see file /opt/tinydns/root/zonefiles/dnswl.oopen.de.zone on
|
||||||
|
## - a.ns.oopen.de
|
||||||
|
## -
|
||||||
|
## - i.e. to avoid blacklisting t-online servers 194.25.134.*, i added
|
||||||
|
## - the followig entry
|
||||||
|
## - +*.134.25.194.dnswl.oopen.de:127.0.0.2:4300
|
||||||
|
## -
|
||||||
|
## - i added also a concerning TXT record (not needed):
|
||||||
|
## - '*.134.25.194.dnswl.oopen.de:T-Online:4300
|
||||||
|
## -
|
||||||
|
## - concernin entry in smtpd_recipient_restrictions of main.cf:
|
||||||
|
## -
|
||||||
|
## - ...
|
||||||
|
## - # RBL check - !! comment out if postcreens postscreen_dnsbl_sites is in use
|
||||||
|
## - # Whitelist (configured on a.ns.oopen.de
|
||||||
|
## - # in /opt/tinydns/root/zonefiles/dnswl.oopen.de.zone )
|
||||||
|
## - permit_dnswl_client dnswl.oopen.de,
|
||||||
|
## - # Blacklists
|
||||||
|
## - reject_rbl_client zen.spamhaus.org,
|
||||||
|
## - reject_rbl_client ix.dnsbl.manitu.net,
|
||||||
|
## - ...
|
58
DOC/roundcube/Environments/postfixadmin.env.a.mx.oopen.de
Normal file
58
DOC/roundcube/Environments/postfixadmin.env.a.mx.oopen.de
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
## - Postfixadmin environment for server
|
||||||
|
## -
|
||||||
|
## - a.mx.oopen.de (adm.oopen.de)
|
||||||
|
## -
|
||||||
|
|
||||||
|
## -------------------------------------
|
||||||
|
## - a.mx.oopen.de (adm.oopen.de)
|
||||||
|
|
||||||
|
HOSTNAME=adm.oopen.de
|
||||||
|
DOMAIN=oopen.de
|
||||||
|
ADMIN_EMAIL="admin\@oopen.de"
|
||||||
|
|
||||||
|
APACHE_CONF_DIR=/usr/local/apache2/conf
|
||||||
|
APACHE_VHOST_DIR=/usr/local/apache2/conf/vhosts
|
||||||
|
APACHE_BASE_WEBDIR=/var/www
|
||||||
|
APACHE_LOG_DIR=/var/log/apache2
|
||||||
|
|
||||||
|
APACHE_USER=www-data
|
||||||
|
APACHE_GROUP=www-data
|
||||||
|
|
||||||
|
_use_mod_php=false
|
||||||
|
|
||||||
|
APACHE_SERVER_CERT=server.crt
|
||||||
|
APACHE_SERVER_KEY=server.key
|
||||||
|
|
||||||
|
## - Leave empty if not needed
|
||||||
|
## -
|
||||||
|
CERT_ChainFile=sub.class2.server.ca.pem
|
||||||
|
|
||||||
|
|
||||||
|
## - adm.oopen.de
|
||||||
|
IPV4=83.223.86.91
|
||||||
|
IPV6=2a01:30:0:13:2f7:50ff:fed2:cef7
|
||||||
|
|
||||||
|
#_pf_admin_version=2.91
|
||||||
|
_pf_admin_version=3.0
|
||||||
|
|
||||||
|
#_db_type='mysql'
|
||||||
|
_db_type='pgsql'
|
||||||
|
|
||||||
|
_db_name='postfix'
|
||||||
|
_db_user='postfix'
|
||||||
|
_db_pass='FKt4z55FxMZp'
|
||||||
|
#_db_host='localhost'
|
||||||
|
_db_host='/var/run/postgresql'
|
||||||
|
|
||||||
|
# _encrypt=md5crypt
|
||||||
|
_encrypt=cleartext
|
||||||
|
|
||||||
|
_spam_folder=Spam
|
||||||
|
|
||||||
|
_autoreply_domain='autoreply.oopen.de'
|
||||||
|
vacation_user=vacation
|
||||||
|
vacation_group=vacation
|
||||||
|
|
||||||
|
deleted_maildirs="/var/deleted-maildirs"
|
||||||
|
deleted_maildomains="/var/deleted-maildomains"
|
||||||
|
|
60
DOC/roundcube/Environments/postfixadmin.env.c.mx.oopen.de
Normal file
60
DOC/roundcube/Environments/postfixadmin.env.c.mx.oopen.de
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
## - Postfixadmin environment for server
|
||||||
|
## -
|
||||||
|
## - c.mx.oopen.de (adm.initiativenserver.de)
|
||||||
|
## -
|
||||||
|
|
||||||
|
## -------------------------------
|
||||||
|
## - c.mx.oopen.de (adm.initiativenserver.de)
|
||||||
|
|
||||||
|
HOSTNAME=adm.initiativenserver.de
|
||||||
|
DOMAIN=initiativenserver.de
|
||||||
|
ADMIN_EMAIL="admin\@initiativenserver.de"
|
||||||
|
|
||||||
|
APACHE_CONF_DIR=/usr/local/apache2/conf
|
||||||
|
APACHE_VHOST_DIR=/usr/local/apache2/conf/vhosts
|
||||||
|
APACHE_BASE_WEBDIR=/var/www
|
||||||
|
APACHE_LOG_DIR=/var/log/apache2
|
||||||
|
|
||||||
|
APACHE_USER=www-data
|
||||||
|
APACHE_GROUP=www-data
|
||||||
|
|
||||||
|
_use_mod_php=false
|
||||||
|
|
||||||
|
APACHE_SERVER_CERT=server.crt
|
||||||
|
APACHE_SERVER_KEY=server.key
|
||||||
|
|
||||||
|
## - Leave empty if not needed
|
||||||
|
## -
|
||||||
|
CERT_ChainFile=SSL123_CA_Bundle.pem
|
||||||
|
|
||||||
|
|
||||||
|
IPV4=83.223.85.101
|
||||||
|
IPV6=2a01:30:1fff:3::101
|
||||||
|
|
||||||
|
_pf_admin_version=code-1676-trunk
|
||||||
|
|
||||||
|
#_db_type='pgsql'
|
||||||
|
_db_type='mysql'
|
||||||
|
_db_name='postfix'
|
||||||
|
_db_user='postfix'
|
||||||
|
_db_pass='AeB4kohyie5rahJ7'
|
||||||
|
#_db_host='/var/run/postgresql'
|
||||||
|
_db_host='localhost'
|
||||||
|
|
||||||
|
_mysql_rootuser=root
|
||||||
|
_mysql_rootpass=buz111
|
||||||
|
|
||||||
|
|
||||||
|
# _encrypt=md5crypt
|
||||||
|
_encrypt=cleartext
|
||||||
|
|
||||||
|
#_spam_folder=Spam
|
||||||
|
_spam_folder=Junk
|
||||||
|
|
||||||
|
_autoreply_domain='autoreply.initiativenserver.de'
|
||||||
|
vacation_user=vacation
|
||||||
|
vacation_group=vacation
|
||||||
|
|
||||||
|
deleted_maildirs="/var/deleted-maildirs"
|
||||||
|
deleted_maildomains="/var/deleted-maildomains"
|
||||||
|
|
@ -0,0 +1,65 @@
|
|||||||
|
## - Postfixadmin environment for server
|
||||||
|
## -
|
||||||
|
## - adm.interventionistische-linke.org
|
||||||
|
## -
|
||||||
|
|
||||||
|
## --------------------------------------------------------------------------
|
||||||
|
## - mail.interventionistische-linke.org (adm.interventionistische-linke.org)
|
||||||
|
|
||||||
|
HOSTNAME=adm.interventionistische-linke.org
|
||||||
|
DOMAIN=interventionistische-linke.org
|
||||||
|
ADMIN_EMAIL="support\@interventionistische-linke.org"
|
||||||
|
|
||||||
|
APACHE_CONF_DIR=/usr/local/apache2/conf
|
||||||
|
APACHE_VHOST_DIR=/usr/local/apache2/conf/vhosts
|
||||||
|
APACHE_BASE_WEBDIR=/var/www
|
||||||
|
APACHE_LOG_DIR=/var/log/apache2
|
||||||
|
|
||||||
|
APACHE_USER=www-data
|
||||||
|
APACHE_GROUP=www-data
|
||||||
|
|
||||||
|
_use_mod_php=false
|
||||||
|
|
||||||
|
APACHE_SERVER_CERT=server.crt
|
||||||
|
APACHE_SERVER_KEY=server.key
|
||||||
|
|
||||||
|
## - Leave empty if not needed
|
||||||
|
## -
|
||||||
|
CERT_ChainFile=sub.class2.server.ca.pem
|
||||||
|
|
||||||
|
IPV4=83.223.85.215
|
||||||
|
IPV6=2a01:30:1fff:5::215
|
||||||
|
|
||||||
|
_pf_admin_version=2.91
|
||||||
|
|
||||||
|
#_db_type='mysql'
|
||||||
|
_db_type='pgsql'
|
||||||
|
|
||||||
|
_db_name='postfix'
|
||||||
|
_db_user='postfix'
|
||||||
|
_db_pass='NcXxt7sf7bfV'
|
||||||
|
#_db_host='localhost'
|
||||||
|
_db_host='/var/run/postgresql'
|
||||||
|
|
||||||
|
_encrypt=md5crypt
|
||||||
|
#_encrypt=cleartext
|
||||||
|
|
||||||
|
_spam_folder=Spam
|
||||||
|
|
||||||
|
_autoreply_domain='autoreply.interventionistische-linke.org'
|
||||||
|
vacation_user=vacation
|
||||||
|
vacation_group=vacation
|
||||||
|
|
||||||
|
deleted_maildirs="/data/deleted-maildirs"
|
||||||
|
deleted_maildomains="/data/deleted-maildomains"
|
||||||
|
|
||||||
|
_welcome_email="
|
||||||
|
Hallo,
|
||||||
|
|
||||||
|
Deine neue E-Mail Adresse ist eingerichtet.
|
||||||
|
|
||||||
|
- IL - Interventionistische Linke
|
||||||
|
|
||||||
|
--
|
||||||
|
e: support@interventionistische-linke.org"
|
||||||
|
|
68
DOC/roundcube/Environments/postfixadmin.env.mx.warenform.de
Normal file
68
DOC/roundcube/Environments/postfixadmin.env.mx.warenform.de
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
## - Postfixadmin environment for server
|
||||||
|
## -
|
||||||
|
## - mx.warenform.de (adm.warenform.de)
|
||||||
|
## -
|
||||||
|
|
||||||
|
## -------------------------------------
|
||||||
|
## - mx.warenform.de (adm.warenform.de)
|
||||||
|
|
||||||
|
HOSTNAME=adm.warenform.de
|
||||||
|
DOMAIN=warenform.de
|
||||||
|
ADMIN_EMAIL="admin\@warenform.de"
|
||||||
|
|
||||||
|
APACHE_CONF_DIR=/usr/local/apache2/conf
|
||||||
|
APACHE_VHOST_DIR=/usr/local/apache2/conf/vhosts
|
||||||
|
APACHE_BASE_WEBDIR=/var/www
|
||||||
|
APACHE_LOG_DIR=/var/log/apache2
|
||||||
|
|
||||||
|
APACHE_USER=www-data
|
||||||
|
APACHE_GROUP=www-data
|
||||||
|
|
||||||
|
_use_mod_php=false
|
||||||
|
|
||||||
|
APACHE_SERVER_CERT=server.crt
|
||||||
|
APACHE_SERVER_KEY=server.key
|
||||||
|
|
||||||
|
## - Leave empty if not needed
|
||||||
|
## -
|
||||||
|
CERT_ChainFile=SSL123_CA_Bundle.pem
|
||||||
|
|
||||||
|
IPV4=83.223.85.154
|
||||||
|
IPV6=2a01:30:1fff:6::154
|
||||||
|
|
||||||
|
#_pf_admin_version=2.3.7
|
||||||
|
_pf_admin_version=2.91
|
||||||
|
|
||||||
|
#_db_type='mysql'
|
||||||
|
_db_type='pgsql'
|
||||||
|
|
||||||
|
_db_name='postfix'
|
||||||
|
_db_user='postfix'
|
||||||
|
_db_pass='CbX8vg347Vvm'
|
||||||
|
#_db_host='localhost'
|
||||||
|
_db_host='/var/run/postgresql'
|
||||||
|
|
||||||
|
# _encrypt=md5crypt
|
||||||
|
_encrypt=cleartext
|
||||||
|
|
||||||
|
_spam_folder=Spam
|
||||||
|
|
||||||
|
_autoreply_domain='autoreply.warenform.de'
|
||||||
|
vacation_user=vacation
|
||||||
|
vacation_group=vacation
|
||||||
|
|
||||||
|
deleted_maildirs="/var/deleted-maildirs"
|
||||||
|
deleted_maildomains="/var/deleted-maildomains"
|
||||||
|
|
||||||
|
_welcome_email="
|
||||||
|
Hallo,
|
||||||
|
|
||||||
|
Ihre neue E-Mail Adresse ist eingerichtet.
|
||||||
|
|
||||||
|
Das WARENFORM-Team
|
||||||
|
|
||||||
|
--
|
||||||
|
WARENFORM | Phone: +49 30 / 61 65 17 52 -0
|
||||||
|
Dresdner Str. 11 | Fax: +49 30 / 61 65 17 52 -66
|
||||||
|
D-10999 Berlin | http://www.warenform.net"
|
||||||
|
|
65
DOC/roundcube/Environments/postfixadmin.env.rage.so36.net
Normal file
65
DOC/roundcube/Environments/postfixadmin.env.rage.so36.net
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
## - Postfixadmin environment for server
|
||||||
|
## -
|
||||||
|
## - rage.so36.net (adm.so36.net)
|
||||||
|
## -
|
||||||
|
|
||||||
|
## -------------------------------
|
||||||
|
## - rage.so36.net (adm.so36.net)
|
||||||
|
|
||||||
|
HOSTNAME=adm.so36.net
|
||||||
|
DOMAIN=so36.net
|
||||||
|
ADMIN_EMAIL="support\@so36.net"
|
||||||
|
|
||||||
|
APACHE_CONF_DIR=/etc/apache2
|
||||||
|
APACHE_VHOST_DIR=/etc/apache2/sites-available
|
||||||
|
APACHE_BASE_WEBDIR=/var/www
|
||||||
|
APACHE_LOG_DIR=/var/log/apache2
|
||||||
|
|
||||||
|
APACHE_USER=www-data
|
||||||
|
APACHE_GROUP=www-data
|
||||||
|
|
||||||
|
_use_mod_php=false
|
||||||
|
|
||||||
|
APACHE_SERVER_CERT=server.crt
|
||||||
|
APACHE_SERVER_KEY=server.key
|
||||||
|
|
||||||
|
## - Leave empty if not needed
|
||||||
|
## -
|
||||||
|
CERT_ChainFile=sub.class2.server.ca.pem
|
||||||
|
|
||||||
|
IPV4=83.223.73.193
|
||||||
|
IPV6=2a01:30:1fff:fd00::193
|
||||||
|
|
||||||
|
_pf_admin_version=2.3.7
|
||||||
|
|
||||||
|
#_db_type='mysql'
|
||||||
|
_db_type='pgsql'
|
||||||
|
|
||||||
|
_db_name='postfix'
|
||||||
|
_db_user='postfix'
|
||||||
|
_db_pass='9jKqFHNGrgFb'
|
||||||
|
#_db_host='localhost'
|
||||||
|
_db_host='/var/run/postgresql'
|
||||||
|
|
||||||
|
_encrypt=md5crypt
|
||||||
|
#_encrypt=cleartext
|
||||||
|
|
||||||
|
_spam_folder=Spam
|
||||||
|
|
||||||
|
_autoreply_domain='autoreply.so36.net'
|
||||||
|
vacation_user=vacation
|
||||||
|
vacation_group=vacation
|
||||||
|
|
||||||
|
deleted_maildirs="/data/deleted-maildirs"
|
||||||
|
deleted_maildomains="/data/deleted-maildomains"
|
||||||
|
|
||||||
|
_welcome_email="
|
||||||
|
Hallo,
|
||||||
|
|
||||||
|
Deine neue E-Mail Adresse ist eingerichtet.
|
||||||
|
|
||||||
|
- so36.NET
|
||||||
|
|
||||||
|
--
|
||||||
|
e: support@so36.net"
|
||||||
|
|
@ -0,0 +1,69 @@
|
|||||||
|
## - Rounfcube environment for server
|
||||||
|
## -
|
||||||
|
## - c.mx.oopen.de (webmail.initiativenserver.de)
|
||||||
|
## -
|
||||||
|
|
||||||
|
## - webmail.initiativenserver.de
|
||||||
|
## -
|
||||||
|
SRC_BASE_DIR=/usr/local/src/mailsystem
|
||||||
|
SRC_ARCHIVE_DIR=${SRC_BASE_DIR}/tarballs
|
||||||
|
|
||||||
|
ROUNDCUBE_VERSION=1.1.3
|
||||||
|
|
||||||
|
SPAM_FOLDER_NAME=Junk
|
||||||
|
|
||||||
|
WEBSITE=webmail.initiativenserver.de
|
||||||
|
|
||||||
|
IPV4=83.223.85.101
|
||||||
|
IPV6=2a01:30:1fff:3::101
|
||||||
|
|
||||||
|
WEBMASTER_EMAIL=admin@oopen.de
|
||||||
|
WEBMAIL_BASEDIR=/var/www/webmail.initiativenserver.de
|
||||||
|
WEBMAIL_TMPDIR=${WEBMAIL_BASEDIR}/temp
|
||||||
|
|
||||||
|
WEBSERVER_USER=www-data
|
||||||
|
WEBSERVER_GROUP=www-data
|
||||||
|
|
||||||
|
APACHE_LOG_DIR=${WEBMAIL_BASEDIR}/logs
|
||||||
|
|
||||||
|
APACHE_SERVER_CERT=server.crt
|
||||||
|
APACHE_SERVER_KEY=server.key
|
||||||
|
|
||||||
|
## - Leave empty if not needed
|
||||||
|
## -
|
||||||
|
CERT_ChainFile=sub.class2.server.ca.pem
|
||||||
|
|
||||||
|
|
||||||
|
## - apache installed from debian package system ?
|
||||||
|
## -
|
||||||
|
_apache_debian=false
|
||||||
|
|
||||||
|
## - if installed from source, specify vhost directory
|
||||||
|
## -
|
||||||
|
_vhost_dir=/usr/local/apache2/conf/vhosts
|
||||||
|
_apache_cert_dir=/usr/local/apache2/conf
|
||||||
|
|
||||||
|
if $_apache_debian ; then
|
||||||
|
_vhost_dir=/etc/apache2/sites-available
|
||||||
|
_apache_cert_dir=/etc/apache2
|
||||||
|
fi
|
||||||
|
|
||||||
|
_SSLCertificateChainFile=""
|
||||||
|
if [ -n "$CERT_ChainFile" ];then
|
||||||
|
_SSLCertificateChainFile="SSLCertificateChainFile ${_apache_cert_dir}/$CERT_ChainFile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
_autoreply_domain=autoreply.oopen.de
|
||||||
|
|
||||||
|
#_db_type=pgsql
|
||||||
|
_db_type=mysql
|
||||||
|
|
||||||
|
_db_host=localhost
|
||||||
|
_db_user=roundcube
|
||||||
|
_db_pass=re6Xe8Fereejai3D
|
||||||
|
|
||||||
|
#_mysql_rootuser=root
|
||||||
|
#_mysql_rootpass=<root-pass>
|
||||||
|
## -
|
||||||
|
## - END: webmail.initiativenserver.de
|
||||||
|
|
@ -0,0 +1,69 @@
|
|||||||
|
## - Rounfcube environment for server
|
||||||
|
## -
|
||||||
|
## - webmail.interventionistische-linke.org (webmail.interventionistische-linke.org)
|
||||||
|
## -
|
||||||
|
|
||||||
|
## - webmail.interventionistische-linke.org
|
||||||
|
## -
|
||||||
|
SRC_BASE_DIR=/usr/local/src/mailsystem
|
||||||
|
SRC_ARCHIVE_DIR=${SRC_BASE_DIR}/tarballs
|
||||||
|
|
||||||
|
ROUNDCUBE_VERSION=1.1.3
|
||||||
|
|
||||||
|
SPAM_FOLDER_NAME=SPAM
|
||||||
|
|
||||||
|
WEBSITE=webmail.interventionistische-linke.org
|
||||||
|
|
||||||
|
IPV4=83.223.73.211
|
||||||
|
IPV6=2a01:30:1fff:fd00::194
|
||||||
|
|
||||||
|
WEBMASTER_EMAIL=admin@oopen.de
|
||||||
|
WEBMAIL_BASEDIR=/var/www/webmail.interventionistische-linke.org
|
||||||
|
WEBMAIL_TMPDIR=${WEBMAIL_BASEDIR}/temp
|
||||||
|
|
||||||
|
WEBSERVER_USER=www-data
|
||||||
|
WEBSERVER_GROUP=www-data
|
||||||
|
|
||||||
|
APACHE_LOG_DIR=${WEBMAIL_BASEDIR}/logs
|
||||||
|
|
||||||
|
APACHE_SERVER_CERT=server.crt
|
||||||
|
APACHE_SERVER_KEY=server.key
|
||||||
|
|
||||||
|
## - Leave empty if not needed
|
||||||
|
## -
|
||||||
|
CERT_ChainFile=sub.class2.server.ca.pem
|
||||||
|
|
||||||
|
|
||||||
|
## - apache installed from debian package system ?
|
||||||
|
## -
|
||||||
|
_apache_debian=true
|
||||||
|
|
||||||
|
## - if installed from source, specify vhost directory
|
||||||
|
## -
|
||||||
|
_vhost_dir=/usr/local/apache2/conf/vhosts
|
||||||
|
_apache_cert_dir=/usr/local/apache2/conf
|
||||||
|
|
||||||
|
if $_apache_debian ; then
|
||||||
|
_vhost_dir=/etc/apache2/sites-available
|
||||||
|
_apache_cert_dir=/etc/apache2
|
||||||
|
fi
|
||||||
|
|
||||||
|
_SSLCertificateChainFile=""
|
||||||
|
if [ -n "$CERT_ChainFile" ];then
|
||||||
|
_SSLCertificateChainFile="SSLCertificateChainFile ${_apache_cert_dir}/$CERT_ChainFile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
_autoreply_domain=autoreply.interventionistische-linke.org
|
||||||
|
|
||||||
|
_db_type=pgsql
|
||||||
|
#_db_type=mysql
|
||||||
|
|
||||||
|
_db_host=localhost
|
||||||
|
_db_user=roundcube
|
||||||
|
_db_pass=MjXQJpR9SvcX
|
||||||
|
|
||||||
|
#_mysql_rootuser=root
|
||||||
|
#_mysql_rootpass=<root-pass>
|
||||||
|
## -
|
||||||
|
## - END: webmail.interventionistische-linke.org
|
||||||
|
|
74
DOC/roundcube/Environments/roundcube.env.webmail.oopen.de
Normal file
74
DOC/roundcube/Environments/roundcube.env.webmail.oopen.de
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
## - Rounfcube environment for server
|
||||||
|
## -
|
||||||
|
## - a.mx.oopen.de (webmail.oopen.de)
|
||||||
|
## -
|
||||||
|
|
||||||
|
## ----------------------
|
||||||
|
## - webmail.oopen.de
|
||||||
|
## -
|
||||||
|
SRC_BASE_DIR=/usr/local/src/mailsystem
|
||||||
|
SRC_ARCHIVE_DIR=${SRC_BASE_DIR}/tarballs
|
||||||
|
|
||||||
|
ROUNDCUBE_VERSION=1.2.2
|
||||||
|
|
||||||
|
SPAM_FOLDER_NAME=Spam
|
||||||
|
|
||||||
|
WEBSITE=webmail.oopen.de
|
||||||
|
|
||||||
|
IPV4=83.223.86.91
|
||||||
|
IPV6=2a01:30:0:13:2f7:50ff:fed2:cef7
|
||||||
|
|
||||||
|
WEBMASTER_EMAIL=admin@oopen.de
|
||||||
|
WEBMAIL_BASEDIR=/var/www/webmail.oopen.de
|
||||||
|
WEBMAIL_TMPDIR=${WEBMAIL_BASEDIR}/temp
|
||||||
|
|
||||||
|
WEBSERVER_USER=www-data
|
||||||
|
WEBSERVER_GROUP=www-data
|
||||||
|
|
||||||
|
APACHE_LOG_DIR=${WEBMAIL_BASEDIR}/logs
|
||||||
|
|
||||||
|
#APACHE_SERVER_CERT=webmail.oopen.de-bundle.crt
|
||||||
|
#APACHE_SERVER_KEY=webmail.oopen.de.key
|
||||||
|
APACHE_SERVER_CERT=server-bundle.crt
|
||||||
|
APACHE_SERVER_KEY=server.key
|
||||||
|
|
||||||
|
_use_mod_php=false
|
||||||
|
|
||||||
|
## - Leave empty if not needed
|
||||||
|
## -
|
||||||
|
#CERT_ChainFile=
|
||||||
|
|
||||||
|
|
||||||
|
## - apache installed from debian package system ?
|
||||||
|
## -
|
||||||
|
_apache_debian=false
|
||||||
|
|
||||||
|
## - if installed from source, specify vhost directory
|
||||||
|
## -
|
||||||
|
_vhost_dir=/usr/local/apache2/conf/vhosts
|
||||||
|
_apache_cert_dir=/usr/local/apache2/conf
|
||||||
|
|
||||||
|
if $_apache_debian ; then
|
||||||
|
_vhost_dir=/etc/apache2/sites-available
|
||||||
|
_apache_cert_dir=/etc/apache2
|
||||||
|
fi
|
||||||
|
|
||||||
|
_SSLCertificateChainFile=""
|
||||||
|
if [ -n "$CERT_ChainFile" ];then
|
||||||
|
_SSLCertificateChainFile="SSLCertificateChainFile ${_apache_cert_dir}/$CERT_ChainFile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
_autoreply_domain=autoreply.oopen.de
|
||||||
|
|
||||||
|
_db_type=pgsql
|
||||||
|
#_db_type=mysql
|
||||||
|
|
||||||
|
_db_host=localhost
|
||||||
|
_db_user=roundcube
|
||||||
|
_db_pass=3Dsz3j5R
|
||||||
|
_db_name=roundcubemail
|
||||||
|
|
||||||
|
#_mysql_rootuser=root
|
||||||
|
#_mysql_rootpass=<root-pass>
|
||||||
|
## -
|
||||||
|
## - END: webmail.oopen.de
|
69
DOC/roundcube/Environments/roundcube.env.webmail.so36.net
Normal file
69
DOC/roundcube/Environments/roundcube.env.webmail.so36.net
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
## - Rounfcube environment for server
|
||||||
|
## -
|
||||||
|
## - rage.so36.net (webmail.so36.net)
|
||||||
|
## -
|
||||||
|
|
||||||
|
## - webmail.oopen.de
|
||||||
|
## -
|
||||||
|
SRC_BASE_DIR=/usr/local/src/mailsystem
|
||||||
|
SRC_ARCHIVE_DIR=${SRC_BASE_DIR}/tarballs
|
||||||
|
|
||||||
|
ROUNDCUBE_VERSION=1.1.3
|
||||||
|
|
||||||
|
SPAM_FOLDER_NAME=SPAM
|
||||||
|
|
||||||
|
WEBSITE=webmail.so36.net
|
||||||
|
|
||||||
|
IPV4=83.223.73.211
|
||||||
|
IPV6=2a01:30:1fff:fd00::194
|
||||||
|
|
||||||
|
WEBMASTER_EMAIL=roots@so36.net
|
||||||
|
WEBMAIL_BASEDIR=/var/www/webmail.so36.net
|
||||||
|
WEBMAIL_TMPDIR=${WEBMAIL_BASEDIR}/temp
|
||||||
|
|
||||||
|
WEBSERVER_USER=www-data
|
||||||
|
WEBSERVER_GROUP=www-data
|
||||||
|
|
||||||
|
APACHE_LOG_DIR=${WEBMAIL_BASEDIR}/logs
|
||||||
|
|
||||||
|
APACHE_SERVER_CERT=server.crt
|
||||||
|
APACHE_SERVER_KEY=server.key
|
||||||
|
|
||||||
|
## - Leave empty if not needed
|
||||||
|
## -
|
||||||
|
CERT_ChainFile=sub.class2.server.ca.pem
|
||||||
|
|
||||||
|
|
||||||
|
## - apache installed from debian package system ?
|
||||||
|
## -
|
||||||
|
_apache_debian=true
|
||||||
|
|
||||||
|
## - if installed from source, specify vhost directory
|
||||||
|
## -
|
||||||
|
_vhost_dir=/usr/local/apache2/conf/vhosts
|
||||||
|
_apache_cert_dir=/usr/local/apache2/conf
|
||||||
|
|
||||||
|
if $_apache_debian ; then
|
||||||
|
_vhost_dir=/etc/apache2/sites-available
|
||||||
|
_apache_cert_dir=/etc/apache2
|
||||||
|
fi
|
||||||
|
|
||||||
|
_SSLCertificateChainFile=""
|
||||||
|
if [ -n "$CERT_ChainFile" ];then
|
||||||
|
_SSLCertificateChainFile="SSLCertificateChainFile ${_apache_cert_dir}/$CERT_ChainFile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
_autoreply_domain=autoreply.so36.net
|
||||||
|
|
||||||
|
_db_type=pgsql
|
||||||
|
#_db_type=mysql
|
||||||
|
|
||||||
|
_db_host=localhost
|
||||||
|
_db_user=roundcube
|
||||||
|
_db_pass=MjXQJpR9SvcX
|
||||||
|
|
||||||
|
#_mysql_rootuser=root
|
||||||
|
#_mysql_rootpass=<root-pass>
|
||||||
|
## -
|
||||||
|
## - END: webmail.so36.net
|
||||||
|
|
@ -0,0 +1,72 @@
|
|||||||
|
## - Rounfcube environment for server
|
||||||
|
## -
|
||||||
|
## - mx.warenform.de (webmail.warenform.de)
|
||||||
|
## -
|
||||||
|
|
||||||
|
## ----------------------
|
||||||
|
## - webmail.warenform.de
|
||||||
|
## -
|
||||||
|
SRC_BASE_DIR=/usr/local/src/mailsystem
|
||||||
|
SRC_ARCHIVE_DIR=${SRC_BASE_DIR}/tarballs
|
||||||
|
|
||||||
|
#ROUNDCUBE_VERSION=0.9.5
|
||||||
|
ROUNDCUBE_VERSION=1.0.1
|
||||||
|
|
||||||
|
SPAM_FOLDER_NAME=SPAM
|
||||||
|
|
||||||
|
WEBSITE=webmail.warenform.de
|
||||||
|
|
||||||
|
IPV4=83.223.85.154
|
||||||
|
IPV6=2a01:30:1fff:6::154
|
||||||
|
|
||||||
|
WEBMASTER_EMAIL=admin@warenform.de
|
||||||
|
WEBMAIL_BASEDIR=/var/www/webmail.warenform.de
|
||||||
|
WEBMAIL_TMPDIR=${WEBMAIL_BASEDIR}/temp
|
||||||
|
|
||||||
|
WEBSERVER_USER=www-data
|
||||||
|
WEBSERVER_GROUP=www-data
|
||||||
|
|
||||||
|
APACHE_LOG_DIR=/var/log/apache2
|
||||||
|
|
||||||
|
APACHE_SERVER_CERT=server.crt
|
||||||
|
APACHE_SERVER_KEY=server.key
|
||||||
|
|
||||||
|
_use_mod_php=false
|
||||||
|
|
||||||
|
## - Leave empty if not needed
|
||||||
|
## -
|
||||||
|
CERT_ChainFile=SSL123_CA_Bundle.pem
|
||||||
|
|
||||||
|
|
||||||
|
## - apache installed from debian package system ?
|
||||||
|
## -
|
||||||
|
_apache_debian=false
|
||||||
|
|
||||||
|
## - if installed from source, specify vhost directory
|
||||||
|
## -
|
||||||
|
_vhost_dir=/usr/local/apache2/conf/vhosts
|
||||||
|
_apache_cert_dir=/usr/local/apache2/conf
|
||||||
|
|
||||||
|
if $_apache_debian ; then
|
||||||
|
_vhost_dir=/etc/apache2/sites-available
|
||||||
|
_apache_cert_dir=/etc/apache2
|
||||||
|
fi
|
||||||
|
|
||||||
|
_SSLCertificateChainFile=""
|
||||||
|
if [ -n "$CERT_ChainFile" ];then
|
||||||
|
_SSLCertificateChainFile="SSLCertificateChainFile ${_apache_cert_dir}/$CERT_ChainFile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
_autoreply_domain=autoreply.warenform.de
|
||||||
|
|
||||||
|
_db_type=pgsql
|
||||||
|
#_db_type=mysql
|
||||||
|
|
||||||
|
_db_host=localhost
|
||||||
|
_db_user=roundcube
|
||||||
|
_db_pass=Hoo5heis
|
||||||
|
_db_name=roundcubemail
|
||||||
|
|
||||||
|
#_mysql_rootuser=root
|
||||||
|
#_mysql_rootpass=<root-pass>
|
||||||
|
|
@ -0,0 +1,69 @@
|
|||||||
|
## - Rounfcube environment for server
|
||||||
|
## -
|
||||||
|
## - c.mx.oopen.de (webmail2.initiativenserver.de)
|
||||||
|
## -
|
||||||
|
|
||||||
|
## - webmail2.initiativenserver.de
|
||||||
|
## -
|
||||||
|
SRC_BASE_DIR=/usr/local/src/mailsystem
|
||||||
|
SRC_ARCHIVE_DIR=${SRC_BASE_DIR}/tarballs
|
||||||
|
|
||||||
|
ROUNDCUBE_VERSION=1.1.3
|
||||||
|
|
||||||
|
SPAM_FOLDER_NAME=Junk
|
||||||
|
|
||||||
|
WEBSITE=webmail2.initiativenserver.de
|
||||||
|
|
||||||
|
IPV4=83.223.85.101
|
||||||
|
IPV6=2a01:30:1fff:3::101
|
||||||
|
|
||||||
|
WEBMASTER_EMAIL=admin@oopen.de
|
||||||
|
WEBMAIL_BASEDIR=/var/www/webmail2.initiativenserver.de
|
||||||
|
WEBMAIL_TMPDIR=${WEBMAIL_BASEDIR}/temp
|
||||||
|
|
||||||
|
WEBSERVER_USER=www-data
|
||||||
|
WEBSERVER_GROUP=www-data
|
||||||
|
|
||||||
|
APACHE_LOG_DIR=${WEBMAIL_BASEDIR}/logs
|
||||||
|
|
||||||
|
APACHE_SERVER_CERT=server.crt
|
||||||
|
APACHE_SERVER_KEY=server.key
|
||||||
|
|
||||||
|
## - Leave empty if not needed
|
||||||
|
## -
|
||||||
|
CERT_ChainFile=sub.class2.server.ca.pem
|
||||||
|
|
||||||
|
|
||||||
|
## - apache installed from debian package system ?
|
||||||
|
## -
|
||||||
|
_apache_debian=false
|
||||||
|
|
||||||
|
## - if installed from source, specify vhost directory
|
||||||
|
## -
|
||||||
|
_vhost_dir=/usr/local/apache2/conf/vhosts
|
||||||
|
_apache_cert_dir=/usr/local/apache2/conf
|
||||||
|
|
||||||
|
if $_apache_debian ; then
|
||||||
|
_vhost_dir=/etc/apache2/sites-available
|
||||||
|
_apache_cert_dir=/etc/apache2
|
||||||
|
fi
|
||||||
|
|
||||||
|
_SSLCertificateChainFile=""
|
||||||
|
if [ -n "$CERT_ChainFile" ];then
|
||||||
|
_SSLCertificateChainFile="SSLCertificateChainFile ${_apache_cert_dir}/$CERT_ChainFile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
_autoreply_domain=autoreply.oopen.de
|
||||||
|
|
||||||
|
#_db_type=pgsql
|
||||||
|
_db_type=mysql
|
||||||
|
|
||||||
|
_db_host=localhost
|
||||||
|
_db_user=roundcube
|
||||||
|
_db_pass=re6Xe8Fereejai3D
|
||||||
|
|
||||||
|
#_mysql_rootuser=root
|
||||||
|
#_mysql_rootpass=<root-pass>
|
||||||
|
## -
|
||||||
|
## - END: webmail2.initiativenserver.de
|
||||||
|
|
72
DOC/roundcube/Environments/roundcube.env.webmail2.oopen.de
Normal file
72
DOC/roundcube/Environments/roundcube.env.webmail2.oopen.de
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
## - Rounfcube environment for server
|
||||||
|
## -
|
||||||
|
## - a.mx.oopen.de (webmail2.oopen.de)
|
||||||
|
## -
|
||||||
|
|
||||||
|
## ----------------------
|
||||||
|
## - webmail2.oopen.de
|
||||||
|
## -
|
||||||
|
SRC_BASE_DIR=/usr/local/src/mailsystem
|
||||||
|
SRC_ARCHIVE_DIR=${SRC_BASE_DIR}/tarballs
|
||||||
|
|
||||||
|
ROUNDCUBE_VERSION=1.1.4
|
||||||
|
|
||||||
|
SPAM_FOLDER_NAME=Spam
|
||||||
|
|
||||||
|
WEBSITE=webmail2.oopen.de
|
||||||
|
|
||||||
|
IPV4=83.223.85.165
|
||||||
|
IPV6=2a01:30:1fff:9::165
|
||||||
|
|
||||||
|
WEBMASTER_EMAIL=admin@oopen.de
|
||||||
|
WEBMAIL_BASEDIR=/var/www/webmail2.oopen.de
|
||||||
|
WEBMAIL_TMPDIR=${WEBMAIL_BASEDIR}/temp
|
||||||
|
|
||||||
|
WEBSERVER_USER=www-data
|
||||||
|
WEBSERVER_GROUP=www-data
|
||||||
|
|
||||||
|
APACHE_LOG_DIR=${WEBMAIL_BASEDIR}/logs
|
||||||
|
|
||||||
|
APACHE_SERVER_CERT=wildcard.oopen.de-bundle.crt
|
||||||
|
APACHE_SERVER_KEY=wildcard.oopen.de.key
|
||||||
|
|
||||||
|
_use_mod_php=false
|
||||||
|
|
||||||
|
## - Leave empty if not needed
|
||||||
|
## -
|
||||||
|
#CERT_ChainFile=
|
||||||
|
|
||||||
|
|
||||||
|
## - apache installed from debian package system ?
|
||||||
|
## -
|
||||||
|
_apache_debian=false
|
||||||
|
|
||||||
|
## - if installed from source, specify vhost directory
|
||||||
|
## -
|
||||||
|
_vhost_dir=/usr/local/apache2/conf/vhosts
|
||||||
|
_apache_cert_dir=/usr/local/apache2/conf
|
||||||
|
|
||||||
|
if $_apache_debian ; then
|
||||||
|
_vhost_dir=/etc/apache2/sites-available
|
||||||
|
_apache_cert_dir=/etc/apache2
|
||||||
|
fi
|
||||||
|
|
||||||
|
_SSLCertificateChainFile=""
|
||||||
|
if [ -n "$CERT_ChainFile" ];then
|
||||||
|
_SSLCertificateChainFile="SSLCertificateChainFile ${_apache_cert_dir}/$CERT_ChainFile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
_autoreply_domain=autoreply.oopen.de
|
||||||
|
|
||||||
|
_db_type=pgsql
|
||||||
|
#_db_type=mysql
|
||||||
|
|
||||||
|
_db_host=localhost
|
||||||
|
_db_user=roundcube
|
||||||
|
_db_pass=3Dsz3j5R
|
||||||
|
_db_name=roundcubemail2
|
||||||
|
|
||||||
|
#_mysql_rootuser=root
|
||||||
|
#_mysql_rootpass=<root-pass>
|
||||||
|
## -
|
||||||
|
## - END: webmail2.oopen.de
|
@ -0,0 +1,71 @@
|
|||||||
|
## - Rounfcube environment for server
|
||||||
|
## -
|
||||||
|
## - mx.warenform.de (webmail2.warenform.de)
|
||||||
|
## -
|
||||||
|
|
||||||
|
## ----------------------
|
||||||
|
## - webmail.warenform.de
|
||||||
|
## -
|
||||||
|
SRC_BASE_DIR=/usr/local/src/mailsystem
|
||||||
|
SRC_ARCHIVE_DIR=${SRC_BASE_DIR}/tarballs
|
||||||
|
|
||||||
|
ROUNDCUBE_VERSION=1.1.1
|
||||||
|
|
||||||
|
SPAM_FOLDER_NAME=SPAM
|
||||||
|
|
||||||
|
WEBSITE=webmail2.warenform.de
|
||||||
|
|
||||||
|
IPV4=83.223.85.154
|
||||||
|
IPV6=2a01:30:1fff:6::154
|
||||||
|
|
||||||
|
WEBMASTER_EMAIL=admin@warenform.de
|
||||||
|
WEBMAIL_BASEDIR=/var/www/webmail2.warenform.de
|
||||||
|
WEBMAIL_TMPDIR=${WEBMAIL_BASEDIR}/temp
|
||||||
|
|
||||||
|
WEBSERVER_USER=www-data
|
||||||
|
WEBSERVER_GROUP=www-data
|
||||||
|
|
||||||
|
APACHE_LOG_DIR=/var/log/apache2
|
||||||
|
|
||||||
|
APACHE_SERVER_CERT=server.crt
|
||||||
|
APACHE_SERVER_KEY=server.key
|
||||||
|
|
||||||
|
_use_mod_php=false
|
||||||
|
|
||||||
|
## - Leave empty if not needed
|
||||||
|
## -
|
||||||
|
#CERT_ChainFile=SSL123_CA_Bundle.pem
|
||||||
|
|
||||||
|
|
||||||
|
## - apache installed from debian package system ?
|
||||||
|
## -
|
||||||
|
_apache_debian=false
|
||||||
|
|
||||||
|
## - if installed from source, specify vhost directory
|
||||||
|
## -
|
||||||
|
_vhost_dir=/usr/local/apache2/conf/vhosts
|
||||||
|
_apache_cert_dir=/usr/local/apache2/conf
|
||||||
|
|
||||||
|
if $_apache_debian ; then
|
||||||
|
_vhost_dir=/etc/apache2/sites-available
|
||||||
|
_apache_cert_dir=/etc/apache2
|
||||||
|
fi
|
||||||
|
|
||||||
|
_SSLCertificateChainFile=""
|
||||||
|
if [ -n "$CERT_ChainFile" ];then
|
||||||
|
_SSLCertificateChainFile="SSLCertificateChainFile ${_apache_cert_dir}/$CERT_ChainFile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
_autoreply_domain=autoreply.warenform.de
|
||||||
|
|
||||||
|
_db_type=pgsql
|
||||||
|
#_db_type=mysql
|
||||||
|
|
||||||
|
_db_host=localhost
|
||||||
|
_db_user=roundcube
|
||||||
|
_db_pass=Hoo5heis
|
||||||
|
_db_name=roundcubemail2
|
||||||
|
|
||||||
|
#_mysql_rootuser=root
|
||||||
|
#_mysql_rootpass=<root-pass>
|
||||||
|
|
2122
DOC/roundcube/roundcube.install
Normal file
2122
DOC/roundcube/roundcube.install
Normal file
File diff suppressed because it is too large
Load Diff
12
DOC/roundcube/roundcube.reset_admin.txt
Normal file
12
DOC/roundcube/roundcube.reset_admin.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
## - To reset Plugin Manager ‘superadmin’ account do the following
|
||||||
|
## -
|
||||||
|
|
||||||
|
- Logout from Roundcube and close your browser to make sure all sessions are ended.
|
||||||
|
|
||||||
|
- Delete the [md5-hash].myrc file in the root of the Roundcube installation folder.
|
||||||
|
|
||||||
|
- DROP table ‘plugin_manager’ from roundcube SQL database.
|
||||||
|
|
||||||
|
- Remove entry ‘myrc_plugin_manager’ from ‘system’ table.
|
||||||
|
|
||||||
|
- Login to Roundcube.
|
805
DOC/roundcube/roundcube_plugin.install
Normal file
805
DOC/roundcube/roundcube_plugin.install
Normal file
@ -0,0 +1,805 @@
|
|||||||
|
|
||||||
|
## ----------------------
|
||||||
|
## - webmail.warenform.de
|
||||||
|
## -
|
||||||
|
|
||||||
|
. roundcube.env.webmail.warenform.de
|
||||||
|
|
||||||
|
## -
|
||||||
|
## - END: webmail.warenform.de
|
||||||
|
## ----------------------------
|
||||||
|
|
||||||
|
## ----------------------
|
||||||
|
## - webmail2.warenform.de
|
||||||
|
## -
|
||||||
|
|
||||||
|
. roundcube.env.webmail2.warenform.de
|
||||||
|
|
||||||
|
## -
|
||||||
|
## - END: webmail.warenform.de
|
||||||
|
## ----------------------------
|
||||||
|
|
||||||
|
## ----------------------
|
||||||
|
## - webmail.so36.net
|
||||||
|
## -
|
||||||
|
|
||||||
|
. roundcube.env.webmail.so36.net
|
||||||
|
|
||||||
|
## -
|
||||||
|
## - END: webmail.so36.net
|
||||||
|
## ----------------------------
|
||||||
|
|
||||||
|
## ----------------------
|
||||||
|
## - webmail.interventionistische-linke.org
|
||||||
|
## -
|
||||||
|
|
||||||
|
. roundcube.env.webmail.interventionistische-linke.org
|
||||||
|
|
||||||
|
## -
|
||||||
|
## - END: webmail.interventionistische-linke.org
|
||||||
|
## ----------------------------
|
||||||
|
|
||||||
|
## ----------------------
|
||||||
|
## - webmail.initiativenserver.de
|
||||||
|
## -
|
||||||
|
|
||||||
|
. roundcube.env.webmail.initiativenserver.de
|
||||||
|
|
||||||
|
## -
|
||||||
|
## - END: webmail.interventionistische-linke.org
|
||||||
|
## ----------------------------
|
||||||
|
|
||||||
|
## ----------------------
|
||||||
|
## - webmail2.initiativenserver.de
|
||||||
|
## -
|
||||||
|
|
||||||
|
. roundcube.env.webmail2.initiativenserver.de
|
||||||
|
|
||||||
|
## -
|
||||||
|
## - END: webmail.interventionistische-linke.org
|
||||||
|
## ----------------------------
|
||||||
|
|
||||||
|
## ----------------------
|
||||||
|
## - webmail2.oopen.de
|
||||||
|
## -
|
||||||
|
|
||||||
|
. roundcube.env.webmail2.oopen.de
|
||||||
|
|
||||||
|
## -
|
||||||
|
## - END: webmail.oopen.de
|
||||||
|
## ----------------------------
|
||||||
|
|
||||||
|
## ----------------------
|
||||||
|
## - webmail.oopen.de
|
||||||
|
## -
|
||||||
|
|
||||||
|
. roundcube.env.webmail.oopen.de
|
||||||
|
|
||||||
|
## -
|
||||||
|
## - END: webmail.oopen.de
|
||||||
|
## ----------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## ----------------------------------------------- #
|
||||||
|
## --- integrate jqueryui plugin for roundcube --- #
|
||||||
|
## ----------------------------------------------- #
|
||||||
|
|
||||||
|
## - jqueryui plugin comes with roundcube core distribution. So you have
|
||||||
|
## - only to register it.
|
||||||
|
|
||||||
|
## - register jqueryui plugin with roundcube
|
||||||
|
## -
|
||||||
|
## - edit $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/config/config.inc.php
|
||||||
|
## -
|
||||||
|
## - add "login_lang" to array plugins
|
||||||
|
## - $config['plugins'] = array('jqueryui');
|
||||||
|
## -
|
||||||
|
vim $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/config/config.inc.php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## ----------------------------------------------- #
|
||||||
|
## --- integrate password plugin for roundcube --- #
|
||||||
|
## ----------------------------------------------- #
|
||||||
|
|
||||||
|
cp $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/password/config.inc.php.dist \
|
||||||
|
$WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/password/config.inc.php
|
||||||
|
|
||||||
|
## - edit $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/password/config.inc.php
|
||||||
|
## -
|
||||||
|
## - adjust:
|
||||||
|
## -
|
||||||
|
## - $config['password_driver'] = 'sql';
|
||||||
|
## - $config['password_confirm_current'] = true;
|
||||||
|
## -
|
||||||
|
## - $config['password_minimum_length'] = 8;
|
||||||
|
## - $config['password_require_nonalpha'] = true;
|
||||||
|
## -
|
||||||
|
## - NOTE: The database configuration data from POSTFIX Dateabase are needed !!
|
||||||
|
## - Put in your database credentials
|
||||||
|
## -
|
||||||
|
## - $config['password_db_dsn'] = '${_db_type}://${_db_user}:${_db_pass}@localhost/${_db_name}';
|
||||||
|
## -
|
||||||
|
## - $config['password_query'] = 'UPDATE mailbox SET password=%p WHERE username=%u';
|
||||||
|
## -
|
||||||
|
vim $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/password/config.inc.php
|
||||||
|
|
||||||
|
## - register password plugin with roundcube
|
||||||
|
## -
|
||||||
|
## - edit $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/config/config.inc.php
|
||||||
|
## -
|
||||||
|
## - add "password" to array plugins
|
||||||
|
## - $config['plugins'] = array('jqueryui', 'password');
|
||||||
|
## -
|
||||||
|
vim $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/config/config.inc.php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## --------------------------------------------------- #
|
||||||
|
## --- Install vacation plugin bhusigen rc-vacation -- #
|
||||||
|
## --------------------------------------------------- #
|
||||||
|
|
||||||
|
## - see: https://github.com/bhuisgen/rc-vacation/
|
||||||
|
|
||||||
|
## - requirements, if using datepicker:
|
||||||
|
## - - plugin jqueryui
|
||||||
|
|
||||||
|
## - Download from site https://github.com/bhuisgen/rc-vacation/ and
|
||||||
|
## - store archive in $WEBMAIL_BASEDIR
|
||||||
|
## -
|
||||||
|
cd $WEBMAIL_BASEDIR
|
||||||
|
rm rc-vacation-master.zip
|
||||||
|
wget -O rc-vacation-master.zip https://github.com/bhuisgen/rc-vacation/archive/master.zip
|
||||||
|
|
||||||
|
cd $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins
|
||||||
|
unzip $WEBMAIL_BASEDIR/rc-vacation-master.zip
|
||||||
|
ln -s rc-vacation-master $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/vacation
|
||||||
|
|
||||||
|
cp $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/vacation/config.inc.php.dist \
|
||||||
|
$WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/vacation/config.inc.php
|
||||||
|
|
||||||
|
if [ "$_db_type" = "pgsql" ];then
|
||||||
|
|
||||||
|
## -------------------------------------------------------------- ##
|
||||||
|
## - !! That (very long) part concerns to PostgeSQL Database !! - ##
|
||||||
|
## -------------------------------------------------------------- ##
|
||||||
|
|
||||||
|
## - Note: In the following sql statements set the correct AUTOREPLY domain !!
|
||||||
|
## - Also chnage the database parameters as yor needs
|
||||||
|
## -
|
||||||
|
## - edit configuration $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/vacation/config.inc.php
|
||||||
|
## -
|
||||||
|
## - $rcmail_config['vacation_gui_vacationdate'] = TRUE;
|
||||||
|
## - $rcmail_config['vacation_subject_default'] = 'Re: $SUBJECT';
|
||||||
|
## -
|
||||||
|
## - $rcmail_config['vacation_gui_vacationforwarder'] = FALSE;
|
||||||
|
## -
|
||||||
|
## - $rcmail_config['vacation_dateformat'] = 'Y-m-d' ;
|
||||||
|
## - $rcmail_config['vacation_jquery_calendar'] = TRUE;
|
||||||
|
## - $rcmail_config['vacation_jquery_dateformat'] = 'yy-m-d';
|
||||||
|
## -
|
||||||
|
## - $rcmail_config['vacation_forwarder_multiple'] = FALSE;
|
||||||
|
## - $rcmail_config['vacation_forwarder_separator'] = ',';
|
||||||
|
## -
|
||||||
|
## - $rcmail_config['vacation_driver'] = 'sql';
|
||||||
|
## -
|
||||||
|
## - #configure your database connection to POSTFIX database
|
||||||
|
## - $rcmail_config['vacation_sql_dsn'] = '${_db_type}://${_db_user}:${_db_pass}@localhost/${_db_name}';
|
||||||
|
## -
|
||||||
|
## -
|
||||||
|
## - # !! NOTE: You have to create postgres function udf_forwarders_out and
|
||||||
|
## - # udf_forwarders_in to get the following SQL statements working
|
||||||
|
## - #
|
||||||
|
## -
|
||||||
|
## - // read data queries
|
||||||
|
## - $rcmail_config['vacation_sql_read'] =
|
||||||
|
## - array(
|
||||||
|
## - "SELECT
|
||||||
|
## - subject AS vacation_subject,
|
||||||
|
## - body AS vacation_message,
|
||||||
|
## - date(activefrom) AS vacation_start,
|
||||||
|
## - date(activeuntil) AS vacation_end,
|
||||||
|
## - CASE WHEN vacation.active = TRUE THEN true ELSE false END AS vacation_enable,
|
||||||
|
## - udf_forwarders_out(%username,'$_autoreply_domain',',') AS vacation_forwarder
|
||||||
|
## - FROM vacation,alias
|
||||||
|
## - WHERE email=%username AND address=%username AND vacation.domain=%email_domain;"
|
||||||
|
## - );
|
||||||
|
## -
|
||||||
|
## -
|
||||||
|
## - // write data queries
|
||||||
|
## - /* !! Wichtig:
|
||||||
|
## - Nur wenn rcmail_config['vacation_gui_vacationforwarder'] = FALSE
|
||||||
|
## -
|
||||||
|
## - NOTE: interval_time wird statisch gesetzt auf 86400 (1 Tag)
|
||||||
|
## - */
|
||||||
|
## - $rcmail_config['vacation_sql_write'] =
|
||||||
|
## - array("DELETE FROM vacation WHERE email=%email AND domain=%email_domain;",
|
||||||
|
## - "DELETE from vacation_notification WHERE on_vacation=%email;",
|
||||||
|
## - "INSERT INTO vacation (email,domain,subject,body,activefrom,activeuntil,interval_time,created,active) " .
|
||||||
|
## - "VALUES (%email,%email_domain,%vacation_subject,%vacation_message," .
|
||||||
|
## - "to_timestamp(%vacation_start - extract(timezone from current_timestamp))," .
|
||||||
|
## - "to_timestamp(%vacation_end + 86399 - extract(timezone from current_timestamp))," .
|
||||||
|
## - "86400,NOW(),udf_set_active(%vacation_enable));",
|
||||||
|
## - "UPDATE alias SET goto = udf_forwarders_in(udf_forwarders_out(%email,'$_autoreply_domain',',')," .
|
||||||
|
## - "%email,'$_autoreply_domain',',',udf_set_active(%vacation_enable))" .
|
||||||
|
## - ", modified = NOW() " .
|
||||||
|
## - " WHERE address = %email"
|
||||||
|
## -
|
||||||
|
## - );
|
||||||
|
## -
|
||||||
|
## - /* !! Wichtig:
|
||||||
|
## - Nur wenn rcmail_config['vacation_gui_vacationforwarder'] = TRUE
|
||||||
|
## -
|
||||||
|
## - NOTE: interval_time wird statisch gesetzt auf 86400 (1 Tag)
|
||||||
|
## - */
|
||||||
|
## - /*
|
||||||
|
## - $rcmail_config['vacation_sql_write'] =
|
||||||
|
## - array("DELETE FROM vacation WHERE email=%email AND domain=%email_domain;",
|
||||||
|
## - "DELETE from vacation_notification WHERE on_vacation=%email;",
|
||||||
|
## - "INSERT INTO vacation (email,domain,subject,body,activefrom,activeuntil,interval_time,created,active) " .
|
||||||
|
## - "VALUES (%email,%email_domain,%vacation_subject,%vacation_message," .
|
||||||
|
## - "to_timestamp(%vacation_start - extract(timezone from current_timestamp))," .
|
||||||
|
## - "to_timestamp(%vacation_end + 86399 - extract(timezone from current_timestamp))," .
|
||||||
|
## - "86400,NOW(),udf_set_active(%vacation_enable));",
|
||||||
|
## - "UPDATE alias SET goto = udf_forwarders_in(%vacation_forwarder," .
|
||||||
|
## - "%email,'$_autoreply_domain',',',udf_set_active(%vacation_enable))" .
|
||||||
|
## - ", modified = NOW() " .
|
||||||
|
## - " WHERE address = %email"
|
||||||
|
## - );
|
||||||
|
## -
|
||||||
|
## - !! Notice !!
|
||||||
|
## - Replace '$_autoreply_domain' string with the true vaction domain.
|
||||||
|
## -
|
||||||
|
## - i.e for oopen.de: :1,$s/\$_autoreply_domain/autoreply.oopen.de/gc
|
||||||
|
## -
|
||||||
|
vim $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/vacation/config.inc.php
|
||||||
|
|
||||||
|
|
||||||
|
## - create postfix trigger function udf_forwarders_out:
|
||||||
|
## -
|
||||||
|
cat <<EOF > /tmp/postgres.forwarders_out.sql
|
||||||
|
CREATE LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE FUNCTION udf_forwarders_out(email_str text, vacation_domain text, list_seperator character) RETURNS text
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS \$\$
|
||||||
|
DECLARE
|
||||||
|
forward_str text;
|
||||||
|
local_email_part TEXT;
|
||||||
|
domain_email_part TEXT;
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
-- get list of forwarders
|
||||||
|
--
|
||||||
|
SELECT goto INTO forward_str FROM alias WHERE address=email_str;
|
||||||
|
|
||||||
|
-- entferne mailbox emailadresse
|
||||||
|
--
|
||||||
|
forward_str = replace(forward_str, email_str, '' );
|
||||||
|
|
||||||
|
-- entferne vacation adresse
|
||||||
|
--
|
||||||
|
local_email_part = substring(email_str, 1, position('@' in email_str) - 1);
|
||||||
|
domain_email_part = substring(email_str, position('@' in email_str) + 1 );
|
||||||
|
forward_str = replace(forward_str, local_email_part || '#' || domain_email_part || '@' || vacation_domain, '');
|
||||||
|
|
||||||
|
-- enferne doppelte seperatorzeichen
|
||||||
|
--
|
||||||
|
WHILE position( list_seperator || list_seperator in forward_str ) > 0 LOOP
|
||||||
|
forward_str = replace(forward_str, list_seperator || list_seperator , '');
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
-- entferne erstes zeichen wenn es das seperatorzeichen ist
|
||||||
|
--
|
||||||
|
IF substring(forward_str,1,1) = list_seperator THEN
|
||||||
|
forward_str = substring(forward_str from 2);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
|
||||||
|
-- entferne letztes zeichen wenn es das seperatorzeichen ist
|
||||||
|
--
|
||||||
|
IF substring(forward_str from char_length(forward_str)) = list_seperator THEN
|
||||||
|
forward_str = substring(forward_str, 1, char_length(forward_str) - 1);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
|
||||||
|
-- forward_str = substring(forward_str from char_length(forward_str));
|
||||||
|
|
||||||
|
RETURN forward_str;
|
||||||
|
END;
|
||||||
|
\$\$;
|
||||||
|
EOF
|
||||||
|
|
||||||
|
## - create function
|
||||||
|
## -
|
||||||
|
## - Note 1.
|
||||||
|
## - if datbase language plpgsql already exists, an error occurs. but you can
|
||||||
|
## - savely ignore that error
|
||||||
|
## -
|
||||||
|
## - Note 2.
|
||||||
|
## - if you create the function not as postfix database user, you have to
|
||||||
|
## - give the permission afterwards:
|
||||||
|
## - ALTER FUNCTION public.udf_forwarders_out(email_str text, vacation_domain text, list_seperator character) OWNER TO postfix;
|
||||||
|
## - But we will use the db postfix user (here also named postfix)
|
||||||
|
## -
|
||||||
|
psql -Upostfix postfix < /tmp/postgres.forwarders_out.sql
|
||||||
|
|
||||||
|
rm /tmp/postgres.forwarders_out.sql
|
||||||
|
|
||||||
|
|
||||||
|
## - create sql file for installing function udf_set_active:
|
||||||
|
## -
|
||||||
|
cat <<EOF > /tmp/postgres.set_active.sql
|
||||||
|
CREATE LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE FUNCTION udf_set_active(vacation_enable text) RETURNS boolean
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS \$\$
|
||||||
|
DECLARE
|
||||||
|
return_val boolean;
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
return_val = 't';
|
||||||
|
|
||||||
|
IF vacation_enable = '' THEN
|
||||||
|
return_val = 'f';
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF vacation_enable = '0' THEN
|
||||||
|
return_val = 'f';
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF lower(vacation_enable) = 'false' THEN
|
||||||
|
return_val = 'f';
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
RETURN return_val;
|
||||||
|
END;
|
||||||
|
\$\$;
|
||||||
|
EOF
|
||||||
|
|
||||||
|
## - create function udf_set_active
|
||||||
|
## -
|
||||||
|
## - Note 1.
|
||||||
|
## - if datbase language plpgsql already exists, an error occurs. but you can
|
||||||
|
## - savely ignore that error
|
||||||
|
## -
|
||||||
|
## - Note 2.
|
||||||
|
## - if you create the function not as postfix database user, you have to
|
||||||
|
## - give the permission afterwards:
|
||||||
|
## - ALTER FUNCTION public.udf_forwarders_in(forewarders_str text, email_str text, vacation_domain text, list_seperator character, vacation_enable boolean) OWNER TO postfix;
|
||||||
|
## - But we will use the db postfix user (here also named postfix)
|
||||||
|
## -
|
||||||
|
psql -Upostfix postfix < /tmp/postgres.set_active.sql
|
||||||
|
|
||||||
|
rm /tmp/postgres.set_active.sql
|
||||||
|
|
||||||
|
|
||||||
|
## - create postfix database function udf_forwarders_in:
|
||||||
|
## -
|
||||||
|
cat <<EOF > /tmp/postgres.forwarders_in.sql
|
||||||
|
CREATE LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE FUNCTION udf_forwarders_in(forewarders_str text, email_str text, vacation_domain text, list_seperator character, vacation_enable boolean) RETURNS text
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS \$\$
|
||||||
|
DECLARE
|
||||||
|
return_str text;
|
||||||
|
local_email_part TEXT;
|
||||||
|
domain_email_part TEXT;
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
return_str = email_str;
|
||||||
|
|
||||||
|
IF vacation_enable THEN
|
||||||
|
local_email_part = substring(email_str, 1, position('@' in email_str) - 1);
|
||||||
|
domain_email_part = substring(email_str, position('@' in email_str) + 1 );
|
||||||
|
return_str = return_str || list_seperator || local_email_part || '#' || domain_email_part || '@' || vacation_domain;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF char_length(forewarders_str) > 7 THEN
|
||||||
|
return_str = return_str || list_seperator || forewarders_str;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
RETURN return_str;
|
||||||
|
END;
|
||||||
|
\$\$;
|
||||||
|
EOF
|
||||||
|
|
||||||
|
## - create function udf_forwarders_in
|
||||||
|
## -
|
||||||
|
## - Note 1.
|
||||||
|
## - if datbase language plpgsql already exists, an error occurs. but you can
|
||||||
|
## - savely ignore that error
|
||||||
|
## -
|
||||||
|
## - Note 2.
|
||||||
|
## - if you create the function not as postfix database user, you have to
|
||||||
|
## - give the permission afterwards:
|
||||||
|
## - ALTER FUNCTION public.udf_forwarders_in(forewarders_str text, email_str text, vacation_domain text, list_seperator character, vacation_enable boolean) OWNER TO postfix;
|
||||||
|
## - But we will use the db postfix user (here also named postfix)
|
||||||
|
## -
|
||||||
|
psql -Upostfix postfix < /tmp/postgres.forwarders_in.sql
|
||||||
|
|
||||||
|
rm /tmp/postgres.forwarders_in.sql
|
||||||
|
|
||||||
|
elif [ "$_db_type" = "mysql" ];then
|
||||||
|
|
||||||
|
## ---------------------------------------------------------- ##
|
||||||
|
## - !! That (very long) part concerns to MySQL Database !! - ##
|
||||||
|
## ---------------------------------------------------------- ##
|
||||||
|
|
||||||
|
## - Note: In the following sql statements set the correct AUTOREPLY domain !!
|
||||||
|
## - Also chnage the database parameters as yor needs
|
||||||
|
## -
|
||||||
|
## - edit configuration $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/vacation/config.inc.php
|
||||||
|
## -
|
||||||
|
## - $rcmail_config['vacation_gui_vacationforwarder'] = FALSE;
|
||||||
|
## - $rcmail_config['vacation_forwarder_multiple'] = FALSE;
|
||||||
|
## - $rcmail_config['vacation_forwarder_separator'] = ',';
|
||||||
|
## -
|
||||||
|
## - $rcmail_config['vacation_driver'] = 'sql';
|
||||||
|
## -
|
||||||
|
## - #configure your database connection to POSTFIX database
|
||||||
|
## - $rcmail_config['vacation_sql_dsn'] = '${_db_type}://${_db_user}:${_db_pass}@localhost/${_db_name}';
|
||||||
|
## -
|
||||||
|
## - # !! NOTE: You have to create myql functions FORWARDERS_OUT and
|
||||||
|
## - # FORWARDERS_IN to get the following SQL read statement working
|
||||||
|
## - #
|
||||||
|
## -
|
||||||
|
## - // read data queries
|
||||||
|
## - /* - OLD: vcation.pl included in posfixadmin until version 2.3.7
|
||||||
|
## - $rcmail_config['vacation_sql_read'] =
|
||||||
|
## - array("SELECT subject AS vacation_subject, body AS vacation_message, " .
|
||||||
|
## - "vacation.active AS vacation_enable, FORWARDERS_OUT(%username,'$_autoreply_domain',',') AS vacation_forwarder FROM vacation,alias " .
|
||||||
|
## - "WHERE email=%username AND address=%username AND vacation.domain=%email_domain;"
|
||||||
|
## - );
|
||||||
|
## - *)
|
||||||
|
## - /* - NEW: vcation.pl included in posfixadmin since version 2.91 */
|
||||||
|
## - $rcmail_config['vacation_sql_read'] =
|
||||||
|
## - array("SELECT subject AS vacation_subject, body AS vacation_message," .
|
||||||
|
## - "UNIX_TIMESTAMP(activefrom) AS vacation_start," .
|
||||||
|
## - "UNIX_TIMESTAMP(activeuntil) AS vacation_end," .
|
||||||
|
## - "vacation.active AS vacation_enable," .
|
||||||
|
## - "FORWARDERS_OUT(%username,'$_autoreply_domain',',') AS vacation_forwarder " .
|
||||||
|
## - "FROM vacation,alias " .
|
||||||
|
## - "WHERE email=%username AND address=%username AND vacation.domain=%email_domain;"
|
||||||
|
## - );
|
||||||
|
## -
|
||||||
|
## -
|
||||||
|
## - // write data queries
|
||||||
|
## - /* !! Wichtig:
|
||||||
|
## - Nur wenn rcmail_config['vacation_gui_vacationforwarder'] = FALSE
|
||||||
|
## - */
|
||||||
|
## -
|
||||||
|
## - /* - OLD: vcation.pl included in posfixadmin until version 2.3.7
|
||||||
|
## - $rcmail_config['vacation_gui_vacationforwarder'] = FALSE;
|
||||||
|
## - $rcmail_config['vacation_sql_write'] =
|
||||||
|
## - array("DELETE FROM vacation WHERE email=%email AND " .
|
||||||
|
## - "domain=%email_domain;",
|
||||||
|
## - "DELETE from vacation_notification WHERE on_vacation=%email;",
|
||||||
|
## - "INSERT INTO vacation (email,domain,subject,body,created," .
|
||||||
|
## - "active) VALUES (%email,%email_domain,%vacation_subject," .
|
||||||
|
## - "%vacation_message,NOW(),%vacation_enable);",
|
||||||
|
## - "UPDATE alias SET goto = FORWARDERS_IN(FORWARDERS_OUT(%email,'$_autoreply_domain',',')," .
|
||||||
|
## - "%email,'$_autoreply_domain',',',%vacation_enable)" .
|
||||||
|
## - ", modified = NOW() " .
|
||||||
|
## - " WHERE address = %email"
|
||||||
|
## - );
|
||||||
|
## - /*
|
||||||
|
## -
|
||||||
|
## - /* - NEW: vcation.pl included in posfixadmin since version 2.91 */
|
||||||
|
## - /*
|
||||||
|
## - $rcmail_config['vacation_gui_vacationforwarder'] = FALSE;
|
||||||
|
## - $rcmail_config['vacation_sql_write'] =
|
||||||
|
## - array("DELETE FROM vacation WHERE email=%email AND domain=%email_domain;",
|
||||||
|
## - "DELETE from vacation_notification WHERE on_vacation=%email;",
|
||||||
|
## - "INSERT INTO vacation (email,domain,subject,body,activefrom,activeuntil,interval_time,created,active) " .
|
||||||
|
## - "VALUES (%email,%email_domain,%vacation_subject,%vacation_message," .
|
||||||
|
## - "CONCAT(DATE(FROM_UNIXTIME(%vacation_start)), ' 00:00:00')," .
|
||||||
|
## - "CONCAT(DATE(FROM_UNIXTIME(%vacation_end)), ' 23:59:59')," .
|
||||||
|
## - "86400,NOW(),%vacation_enable);",
|
||||||
|
## - "UPDATE alias SET goto = FORWARDERS_IN(FORWARDERS_OUT(%email,'$_autoreply_domain',',')," .
|
||||||
|
## - "%email,'$_autoreply_domain',',',%vacation_enable)" .
|
||||||
|
## - ", modified = NOW() " .
|
||||||
|
## - " WHERE address = %email"
|
||||||
|
## - );
|
||||||
|
## - */
|
||||||
|
## -
|
||||||
|
## - /* !! Wichtig:
|
||||||
|
## - Nur wenn rcmail_config['vacation_gui_vacationforwarder'] = TRUE
|
||||||
|
## - */
|
||||||
|
## -
|
||||||
|
## - /*
|
||||||
|
## -
|
||||||
|
## - /* - OLD: vcation.pl included in posfixadmin until version 2.3.7
|
||||||
|
## - $rcmail_config['vacation_gui_vacationforwarder'] = TRUE;
|
||||||
|
## - $rcmail_config['vacation_sql_write'] =
|
||||||
|
## - array("DELETE FROM vacation WHERE email=%email AND " .
|
||||||
|
## - "domain=%email_domain;",
|
||||||
|
## - "DELETE from vacation_notification WHERE on_vacation=%email;",
|
||||||
|
## - "INSERT INTO vacation (email,domain,subject,body,created," .
|
||||||
|
## - "active) VALUES (%email,%email_domain,%vacation_subject," .
|
||||||
|
## - "%vacation_message,NOW(),%vacation_enable);",
|
||||||
|
## - "UPDATE alias SET goto = FORWARDERS_IN(%vacation_forwarder," .
|
||||||
|
## - "%email,'$_autoreply_domain',',',%vacation_enable)" .
|
||||||
|
## - ", modified = NOW() " .
|
||||||
|
## - " WHERE address = %email"
|
||||||
|
## - );
|
||||||
|
## - */
|
||||||
|
## -
|
||||||
|
## - /* - NEW: vcation.pl included in posfixadmin since version 2.91 */
|
||||||
|
## - $rcmail_config['vacation_gui_vacationforwarder'] = TRUE;
|
||||||
|
## - $rcmail_config['vacation_sql_write'] =
|
||||||
|
## - array("DELETE FROM vacation WHERE email=%email AND domain=%email_domain;",
|
||||||
|
## - "DELETE from vacation_notification WHERE on_vacation=%email;",
|
||||||
|
## - "INSERT INTO vacation (email,domain,subject,body,activefrom,activeuntil,interval_time,created,active) " .
|
||||||
|
## - "VALUES (%email,%email_domain,%vacation_subject,%vacation_message," .
|
||||||
|
## - "CONCAT(DATE(FROM_UNIXTIME(%vacation_start)), ' 00:00:00')," .
|
||||||
|
## - "CONCAT(DATE(FROM_UNIXTIME(%vacation_end)), ' 23:59:59')," .
|
||||||
|
## - "86400,NOW(),%vacation_enable);",
|
||||||
|
## - "UPDATE alias SET goto = FORWARDERS_IN(%vacation_forwarder," .
|
||||||
|
## - "%email,'$_autoreply_domain',',',%vacation_enable)" .
|
||||||
|
## - ", modified = NOW() " .
|
||||||
|
## - " WHERE address = %email"
|
||||||
|
## - );
|
||||||
|
## -
|
||||||
|
## -
|
||||||
|
vim $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/vacation/config.inc.php
|
||||||
|
|
||||||
|
|
||||||
|
## - create function FORWARDERS_OUT:
|
||||||
|
## -
|
||||||
|
cat <<EOF > /tmp/FORWARDERS_OUT.sql
|
||||||
|
DROP FUNCTION IF EXISTS FORWARDERS_OUT ;
|
||||||
|
|
||||||
|
DELIMITER |
|
||||||
|
|
||||||
|
CREATE FUNCTION FORWARDERS_OUT (email_str TEXT, vacation_domain TEXT , list_seperator CHAR)
|
||||||
|
RETURNS TEXT
|
||||||
|
DETERMINISTIC
|
||||||
|
BEGIN
|
||||||
|
DECLARE forward_str TEXT;
|
||||||
|
DECLARE local_email_part TEXT;
|
||||||
|
DECLARE domain_email_part TEXT;
|
||||||
|
DECLARE first_char CHAR;
|
||||||
|
DECLARE last_char CHAR;
|
||||||
|
|
||||||
|
-- get list of forwarders
|
||||||
|
--
|
||||||
|
SELECT goto INTO forward_str FROM alias WHERE address=email_str;
|
||||||
|
|
||||||
|
-- entferne mailbox emailadresse
|
||||||
|
--
|
||||||
|
SET forward_str = REPLACE(forward_str, email_str, '' );
|
||||||
|
-- SELECT REPLACE(forward_str, email_str, '' ) INTO forward_str;
|
||||||
|
|
||||||
|
-- entferne vacation adresse
|
||||||
|
--
|
||||||
|
SET local_email_part = SUBSTRING(email_str,1, LOCATE('@',email_str) - 1);
|
||||||
|
SET domain_email_part = SUBSTRING(email_str, LOCATE('@',email_str) + 1, LENGTH(email_str));
|
||||||
|
SET forward_str = REPLACE(forward_str, CONCAT(local_email_part, "#" ,domain_email_part,"@", vacation_domain), '');
|
||||||
|
-- SELECT REPLACE(forward_str, CONCAT(list_seperator,list_seperator), list_seperator) INTO forward_str;
|
||||||
|
|
||||||
|
-- enferne doppelte seperatorzeichen
|
||||||
|
--
|
||||||
|
WHILE LOCATE(CONCAT(list_seperator,list_seperator) , forward_str) DO
|
||||||
|
SET forward_str = REPLACE(forward_str, CONCAT(list_seperator,list_seperator), list_seperator);
|
||||||
|
-- SELECT REPLACE(forward_str, CONCAT(list_seperator,list_seperator), list_seperator) INTO forward_str;
|
||||||
|
END WHILE ;
|
||||||
|
|
||||||
|
-- entferne erstes zeichen wenn es das seperatorzeichen ist
|
||||||
|
--
|
||||||
|
IF LEFT(forward_str,1) = list_seperator THEN
|
||||||
|
SET forward_str = SUBSTRING(forward_str FROM 2);
|
||||||
|
-- SELECT SUBSTRING(forward_str FROM 2) INTO forward_str;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
-- entferne letztes zeichen wenn es das seperatorzeichen ist
|
||||||
|
--
|
||||||
|
IF RIGHT(forward_str,1) = list_seperator THEN
|
||||||
|
SET forward_str = SUBSTRING(forward_str , 1, LENGTH(forward_str) - 1);
|
||||||
|
-- SELECT SUBSTRING(forward_str , 1, LENGTH(forward_str) - 1) INTO forward_str;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
RETURN forward_str;
|
||||||
|
END |
|
||||||
|
|
||||||
|
DELIMITER ;
|
||||||
|
EOF
|
||||||
|
|
||||||
|
## - create function
|
||||||
|
## -
|
||||||
|
## - Note 1.
|
||||||
|
## - Create function as postfix database user
|
||||||
|
## -
|
||||||
|
## - The postfix databaseuser wil need 'Super_priv'. At MySQL monitor
|
||||||
|
## - (as mysql admin user i.e. root) type:
|
||||||
|
## - UPDATE user SET Super_priv = 'Y' WHERE User = 'postfix';
|
||||||
|
## -
|
||||||
|
## - Note 2.
|
||||||
|
## - You can verify on mysql monitor (database postfix) with:
|
||||||
|
## - SHOW FUNCTION STATUS;
|
||||||
|
## - or see the code:
|
||||||
|
## - SHOW CREATE FUNCTION FORWARDERS_OUT;
|
||||||
|
## -
|
||||||
|
mysql -upostfix -p postfix < /tmp/FORWARDERS_OUT.sql
|
||||||
|
|
||||||
|
rm /tmp/FORWARDERS_OUT.sql
|
||||||
|
|
||||||
|
|
||||||
|
## - create database function FORWARDERS_IN:
|
||||||
|
## -
|
||||||
|
cat <<EOF > /tmp/FORWARDERS_IN.sql
|
||||||
|
DROP FUNCTION IF EXISTS FOWARDERS_IN ;
|
||||||
|
|
||||||
|
DELIMITER |
|
||||||
|
|
||||||
|
CREATE FUNCTION FORWARDERS_IN (forewarders_str TEXT,
|
||||||
|
email_str TEXT,
|
||||||
|
vacation_domain TEXT ,
|
||||||
|
list_seperator CHAR ,
|
||||||
|
vacation_enable BOOLEAN)
|
||||||
|
RETURNS TEXT
|
||||||
|
DETERMINISTIC
|
||||||
|
BEGIN
|
||||||
|
DECLARE return_str TEXT;
|
||||||
|
DECLARE local_email_part TEXT;
|
||||||
|
DECLARE domain_email_part TEXT;
|
||||||
|
|
||||||
|
|
||||||
|
SET return_str = email_str;
|
||||||
|
|
||||||
|
IF vacation_enable THEN
|
||||||
|
SET local_email_part = SUBSTRING(email_str,1, LOCATE('@',email_str) - 1);
|
||||||
|
SET domain_email_part = SUBSTRING(email_str, LOCATE('@',email_str) + 1, LENGTH(email_str));
|
||||||
|
SET return_str = CONCAT(return_str, list_seperator, local_email_part, "#" ,domain_email_part,"@", vacation_domain);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF LENGTH(forewarders_str) > 2 THEN
|
||||||
|
SET return_str = CONCAT(return_str, list_seperator, forewarders_str);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
RETURN return_str;
|
||||||
|
END |
|
||||||
|
|
||||||
|
DELIMITER ;
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
## - create function FOWARDERS_IN
|
||||||
|
## -
|
||||||
|
## - Note 1.
|
||||||
|
## - Create function as postfix database user
|
||||||
|
## -
|
||||||
|
## - The postfix databaseuser wil need 'Super_priv'. At MySQL monitor
|
||||||
|
## - (as mysql admin user i.e. root) type:
|
||||||
|
## - UPDATE user SET Super_priv = 'Y' WHERE User = 'postfix';
|
||||||
|
## -
|
||||||
|
## - Note 2.
|
||||||
|
## - You can verify on mysql monitor (database postfix) with:
|
||||||
|
## - SHOW FUNCTION STATUS;
|
||||||
|
## - or see the code:
|
||||||
|
## - SHOW CREATE FUNCTION FOWARDERS_IN;
|
||||||
|
## -
|
||||||
|
|
||||||
|
mysql -upostfix -p postfix < /tmp/FORWARDERS_IN.sql
|
||||||
|
|
||||||
|
rm /tmp/FORWARDERS_IN.sql
|
||||||
|
|
||||||
|
else
|
||||||
|
echo -e "\n\t[ ERROR ]: Unknown database type \"$_db_type\""
|
||||||
|
fo
|
||||||
|
|
||||||
|
|
||||||
|
## - register vacation plugin with roundcube
|
||||||
|
## -
|
||||||
|
## - edit $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/config/config.inc.php
|
||||||
|
## -
|
||||||
|
## - add "rc-vacation" to array plugins
|
||||||
|
## - $rcmail_config['plugins'] = array('jquery', 'password', 'vacation');
|
||||||
|
## -
|
||||||
|
vim $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/config/config.inc.php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## -------------------------------------------------------- #
|
||||||
|
## --- Install plugin language selector on login screen --- #
|
||||||
|
## -------------------------------------------------------- #
|
||||||
|
|
||||||
|
## - see: https://github.com/hassansin/roundcube-login-language/
|
||||||
|
|
||||||
|
## - Download from site https://github.com/hassansin/roundcube-login-language/ and
|
||||||
|
## - store archive in $WEBMAIL_BASEDIR
|
||||||
|
## -
|
||||||
|
cd $WEBMAIL_BASEDIR
|
||||||
|
rm login-language-master.zip
|
||||||
|
wget -O login-language-master.zip https://github.com/hassansin/roundcube-login-language/archive/master.zip
|
||||||
|
|
||||||
|
cd $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins
|
||||||
|
unzip $WEBMAIL_BASEDIR/login-language-master.zip
|
||||||
|
ln -s roundcube-login-language-master/ $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/login_lang
|
||||||
|
|
||||||
|
cp $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/login_lang/config.inc.php.dist \
|
||||||
|
$WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/login_lang/config.inc.php
|
||||||
|
|
||||||
|
|
||||||
|
## - edit config.php and set default language selection
|
||||||
|
## -
|
||||||
|
## - $config['language_dropdown_selected'] = 'de_DE';
|
||||||
|
## -
|
||||||
|
vim $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/login_lang/config.inc.php
|
||||||
|
|
||||||
|
|
||||||
|
## - register language selector plugin with roundcube
|
||||||
|
## -
|
||||||
|
## - edit $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/config/config.inc.php
|
||||||
|
## -
|
||||||
|
## - add "login_lang" to array plugins
|
||||||
|
## - $config['plugins'] = array('login_lang', 'jqueryui', 'password', 'vacation');
|
||||||
|
## -
|
||||||
|
vim $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/config/config.inc.php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## -------------------------------------------------- #
|
||||||
|
## --- integrate ContextMenu plugin for roundcube --- #
|
||||||
|
## -------------------------------------------------- #
|
||||||
|
|
||||||
|
## - see: https://github.com/JohnDoh/Roundcube-Plugin-Context-Menu
|
||||||
|
|
||||||
|
## - Download from site https://github.com/bhuisgen/rc-vacation/ and
|
||||||
|
## - store archive in $WEBMAIL_BASEDIR
|
||||||
|
## -
|
||||||
|
cd $WEBMAIL_BASEDIR
|
||||||
|
rm Roundcube-Plugin-Context-Menu-master.zip
|
||||||
|
wget -O Roundcube-Plugin-Context-Menu-master.zip https://github.com/JohnDoh/Roundcube-Plugin-Context-Menu/archive/master.zip
|
||||||
|
|
||||||
|
cd $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins
|
||||||
|
unzip $WEBMAIL_BASEDIR/Roundcube-Plugin-Context-Menu-master.zip
|
||||||
|
ln -s Roundcube-Plugin-Context-Menu-master $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/contextmenu
|
||||||
|
|
||||||
|
|
||||||
|
## - register ContextMenu plugin with roundcube
|
||||||
|
## -
|
||||||
|
## - edit $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/config/config.inc.php
|
||||||
|
## -
|
||||||
|
## - add "login_lang" to array plugins
|
||||||
|
## - $config['plugins'] = array('login_lang', 'jqueryui', 'password', 'vacation', 'contextmenu');
|
||||||
|
## -
|
||||||
|
vim $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/config/config.inc.php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## ---------------------------------- #
|
||||||
|
## --- Install plugin markasjunk2 --- #
|
||||||
|
## ---------------------------------- #
|
||||||
|
|
||||||
|
cd $WEBMAIL_BASEDIR
|
||||||
|
rm Roundcube-Plugin-Mark-as-Junk-2-master.zip
|
||||||
|
wget -O Roundcube-Plugin-Mark-as-Junk-2-master.zip https://github.com/JohnDoh/Roundcube-Plugin-Mark-as-Junk-2/archive/master.zip
|
||||||
|
|
||||||
|
cd $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins
|
||||||
|
unzip $WEBMAIL_BASEDIR/Roundcube-Plugin-Mark-as-Junk-2-master.zip
|
||||||
|
ln -s Roundcube-Plugin-Mark-as-Junk-2-master $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/markasjunk2
|
||||||
|
|
||||||
|
cp $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/markasjunk2/config.inc.php.dist \
|
||||||
|
$WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/plugins/markasjunk2/config.inc.php
|
||||||
|
|
||||||
|
|
||||||
|
## - register markasjunk2 plugin with roundcube
|
||||||
|
## -
|
||||||
|
## - edit $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/config/config.inc.php
|
||||||
|
## -
|
||||||
|
## - add "login_lang" to array plugins
|
||||||
|
## - $config['plugins'] = array('login_lang', 'jqueryui', 'password', 'vacation', 'contextmenu','markasjunk2');
|
||||||
|
## -
|
||||||
|
vim $WEBMAIL_BASEDIR/roundcubemail-${ROUNDCUBE_VERSION}/config/config.inc.php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
21
README.dovecot.systemd
Normal file
21
README.dovecot.systemd
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
|
||||||
|
Debian Jessie comes with systemd so you really should not use initscript anymore but
|
||||||
|
switch to systemd for starting dovecot. There is systemd service description file available
|
||||||
|
for you in case your vendor does not provide it in the package:
|
||||||
|
|
||||||
|
https://github.com/dovecot/core/blob/master/dovecot.service.in
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
> i use ./configure with
|
||||||
|
> --with-systemdsystemunitdir=/etc/systemd/system/ and that installs the
|
||||||
|
> systemd.service and socket
|
||||||
|
|
||||||
|
That's what I missed, thank you a lot. And service seems to handle
|
||||||
|
correctly restarts
|
||||||
|
|
||||||
|
Also use:
|
||||||
|
--with-rundir=/var/run/dovecot
|
||||||
|
|
||||||
|
--
|
51
README.install
Normal file
51
README.install
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
# - Install complete Mailsystem
|
||||||
|
# - ===========================
|
||||||
|
# -
|
||||||
|
# - postfix
|
||||||
|
# - vacation, postfixadmin
|
||||||
|
# - amavisd-new
|
||||||
|
# - dovecot
|
||||||
|
# - roundcube
|
||||||
|
# - opendekim
|
||||||
|
# -
|
||||||
|
# - Assuming the following services are installed (and running) correctly:
|
||||||
|
# - apache2 webservice
|
||||||
|
# - PHP engine
|
||||||
|
# - Let's encrypt (dehydrated - optional
|
||||||
|
# -
|
||||||
|
|
||||||
|
1.) Install Postfix
|
||||||
|
- run script 'install_postfix_advanced.sh'
|
||||||
|
if running the forst time, configuration file conf/install_postfix_advanced.conf
|
||||||
|
will be created automatically.
|
||||||
|
choose 'complete Mailserver (with mailboxes)'
|
||||||
|
|
||||||
|
|
||||||
|
2.) Install vacation and postfixadmin
|
||||||
|
- create configuration file 'install_postfixadmin.conf'
|
||||||
|
cp -a conf/install_postfixadmin.conf.sample conf/install_postfixadmin.conf
|
||||||
|
- adjust config file 'conf/install_postfixadmin.conf' to your needs
|
||||||
|
- run script 'install_postfixadmin.sh'
|
||||||
|
|
||||||
|
|
||||||
|
3.) Install AMaViS
|
||||||
|
- run script 'install_amavis.sh'.
|
||||||
|
if running the forst time, configuration file conf/install_amavis.sh.conf
|
||||||
|
will be created automatically.
|
||||||
|
|
||||||
|
|
||||||
|
4.) Install dovecot
|
||||||
|
- create configuration file 'install_update_dovecot.conf'
|
||||||
|
cp -a conf install_update_dovecot.conf.sample install_update_dovecot.conf
|
||||||
|
- adjust configuration file 'install_update_dovecot.conf' to your needs
|
||||||
|
- run script 'install_update_dovecot.sh'
|
||||||
|
|
||||||
|
5.) Install roundcube webmailer
|
||||||
|
- create configuration file 'install_upgrade_roundcube.conf'
|
||||||
|
sp -a install_upgrade_roundcube.conf.sample install_upgrade_roundcube.conf
|
||||||
|
- adjust config file 'install_upgrade_roundcube.conf' to your needs
|
||||||
|
run script 'install_roundcube.sh'.
|
||||||
|
|
||||||
|
|
||||||
|
6.) Install OpenDKIM
|
||||||
|
- run script 'install_opendkim.sh'.
|
17
conf/install_postfix_advanced.conf.sample
Normal file
17
conf/install_postfix_advanced.conf.sample
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# ----------------------------------------------------
|
||||||
|
# ---
|
||||||
|
# - Parameter Settings Postfix Bases System
|
||||||
|
# -
|
||||||
|
# - Note: You need not to create a configuration file,
|
||||||
|
# - the installation script will do that.
|
||||||
|
# ---
|
||||||
|
# ----------------------------------------------------
|
||||||
|
|
||||||
|
_HOSTNAME=
|
||||||
|
_IPV4=
|
||||||
|
_IPV6=
|
||||||
|
_ADMIN_EMAIL=
|
||||||
|
_SASL_AUTH=
|
||||||
|
_SASL_USER=
|
||||||
|
_SASL_PASS=
|
||||||
|
_RELAY_HOST=
|
17
conf/install_postfix_base.conf.sample
Normal file
17
conf/install_postfix_base.conf.sample
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# ----------------------------------------------------
|
||||||
|
# ---
|
||||||
|
# - Parameter Settings Postfix Bases System
|
||||||
|
# -
|
||||||
|
# - Note: You need not to create a configuration file,
|
||||||
|
# - the installation script will do that.
|
||||||
|
# ---
|
||||||
|
# ----------------------------------------------------
|
||||||
|
|
||||||
|
_HOSTNAME=
|
||||||
|
_IPV4=
|
||||||
|
_IPV6=
|
||||||
|
_ADMIN_EMAIL=
|
||||||
|
_SASL_AUTH=
|
||||||
|
_SASL_USER=
|
||||||
|
_SASL_PASS=
|
||||||
|
_RELAY_HOST=
|
260
conf/install_postfixadmin.conf.sample
Normal file
260
conf/install_postfixadmin.conf.sample
Normal file
@ -0,0 +1,260 @@
|
|||||||
|
# -----------------------------------------------
|
||||||
|
# - Configuration for postfixadmin install script
|
||||||
|
# -----------------------------------------------
|
||||||
|
|
||||||
|
# - Version of Postfix Admin
|
||||||
|
# -
|
||||||
|
PF_ADMIN_VERSION=
|
||||||
|
|
||||||
|
# - Name of the website - usualy 'webmail.<domain>.<tld>'
|
||||||
|
# -
|
||||||
|
WEBSITE_NAME=""
|
||||||
|
|
||||||
|
# - IPv4 Address
|
||||||
|
# -
|
||||||
|
IPV4=""
|
||||||
|
|
||||||
|
# - IPv6 Address
|
||||||
|
# -
|
||||||
|
IPV6=""
|
||||||
|
|
||||||
|
# - Is apache installed from debian package system ?
|
||||||
|
# -
|
||||||
|
# - Boolean, possible values are 'true', 'false'
|
||||||
|
# -
|
||||||
|
# - Defaults to 'false'
|
||||||
|
#
|
||||||
|
#APACHE_DEBIAN_INSTALLATION=""
|
||||||
|
|
||||||
|
# - Apache User
|
||||||
|
# -
|
||||||
|
# - If ommitted, script tries to determine the user under which user the webserver
|
||||||
|
# - is running. If that fails, parameter defaults to 'www-data'
|
||||||
|
# -
|
||||||
|
#HTTP_USER=""
|
||||||
|
|
||||||
|
# - Apache Group
|
||||||
|
# -
|
||||||
|
# - If ommitted, script tries to determine the user under which group the webserver
|
||||||
|
# - is running. If that fails, parameter defaults to 'www-data'
|
||||||
|
# -
|
||||||
|
#HTTP_GROUP=""
|
||||||
|
|
||||||
|
# - Webmasters E-Mail Address
|
||||||
|
# -
|
||||||
|
# - Defaults to 'admin@<domain>.<tld>'
|
||||||
|
# -
|
||||||
|
#WEBMASTER_EMAIL=""
|
||||||
|
|
||||||
|
# - Base Directory of Roundcube Website
|
||||||
|
# -
|
||||||
|
# - Note: it's not the 'DocumentRoot' directory, but the directory where
|
||||||
|
# - the 'DocumentRoot' Directory lives.
|
||||||
|
# -
|
||||||
|
# - Defaults to '/var/www/$WEBSITE_NAME'
|
||||||
|
# -
|
||||||
|
#WEBSITE_BASEDIR=""
|
||||||
|
|
||||||
|
# - Directory, where apache places the log-files for thw webmailers site.
|
||||||
|
# -
|
||||||
|
# - Defaults to '/var/log/apache2'
|
||||||
|
# -
|
||||||
|
#APACHE_LOG_DIR=""
|
||||||
|
|
||||||
|
# - Directory where certificate and key for the roundcube website
|
||||||
|
# - are stored.
|
||||||
|
# -
|
||||||
|
# - Example:
|
||||||
|
# - APACHE_CERT_DIR="/var/lib/dehydrated/certs/$WEBSITE_NAME"
|
||||||
|
# -
|
||||||
|
# - Defaults to
|
||||||
|
# - '/etc/apache2' if apache is installed from debian package system
|
||||||
|
# - '/usr/local/apache2/conf' otherwise
|
||||||
|
# -
|
||||||
|
APACHE_CERT_DIR=""
|
||||||
|
|
||||||
|
# - Certificate for the Rounfcube Website
|
||||||
|
# -
|
||||||
|
# - Example:
|
||||||
|
# - APACHE_SERVER_CERT="fullchain.pem"
|
||||||
|
# -
|
||||||
|
# - Defaults to 'server-bundle.crt'
|
||||||
|
# -
|
||||||
|
APACHE_SERVER_CERT=""
|
||||||
|
|
||||||
|
# - Key File for the Rounfcube Website
|
||||||
|
# -
|
||||||
|
# - Example:
|
||||||
|
# - APACHE_SERVER_KEY="privkey.pem"
|
||||||
|
# -
|
||||||
|
# - Defaults to 'server.key'
|
||||||
|
# -
|
||||||
|
APACHE_SERVER_KEY=""
|
||||||
|
|
||||||
|
# - Certification Chain File
|
||||||
|
# -
|
||||||
|
# - Deprecated since Apache 2.4 - Leave empty if not present
|
||||||
|
# -
|
||||||
|
#CERT_ChainFile=""
|
||||||
|
|
||||||
|
# - Type of PHP installation.
|
||||||
|
# -
|
||||||
|
# - Possible values are: 'php_fpm' , 'fcgid' , 'mod_php
|
||||||
|
# -
|
||||||
|
# - defaults to 'php_fpm''
|
||||||
|
# -
|
||||||
|
#PHP_TYPE=""
|
||||||
|
|
||||||
|
# - Directory where apache vhosts definitions live.
|
||||||
|
# -
|
||||||
|
# - Defaults to
|
||||||
|
# - '/etc/apache2/sites-available' if installed from debain package system
|
||||||
|
# - '/usr/local/apache2/conf/vhosts' otherwise
|
||||||
|
# -
|
||||||
|
#APACHE_VHOST_DIR=""
|
||||||
|
|
||||||
|
# - Hostname for vacation / absence messages
|
||||||
|
# -
|
||||||
|
# - Defaults to 'autoreply.<domain>.<tld>
|
||||||
|
# -
|
||||||
|
#AUTOREPLY_HOSTNAME=""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# - Is MySQL installed from debian package system?
|
||||||
|
# -
|
||||||
|
# - Only needed, if DB_TYPE is set to 'mysql'
|
||||||
|
# -
|
||||||
|
# - Defaults to 'false'
|
||||||
|
# -
|
||||||
|
#MYSQL_DEBIAN_INSTALLATION=""
|
||||||
|
|
||||||
|
# - mysql_credential_args (root access to MySQL Database)
|
||||||
|
# -
|
||||||
|
# - Example
|
||||||
|
# - mysql_credential_args="--login-path=local"
|
||||||
|
# - mysql_credential_args="--defaults-file=/etc/mysql/debian.cnf" (Debian default)
|
||||||
|
# - mysql_credential_args="--defaults-file=/usr/local/mysql/sys-maint.cnf"
|
||||||
|
# -
|
||||||
|
# - Defaults to:
|
||||||
|
# - '/etc/mysql/debian.cnf' if MySQL is installed from debian package system
|
||||||
|
# - '/usr/local/mysql/sys-maint.cnf' otherwise
|
||||||
|
# -
|
||||||
|
#MYSQL_CREDENTIALS=""
|
||||||
|
|
||||||
|
|
||||||
|
# - The wa passwords will be encrypted.
|
||||||
|
# -
|
||||||
|
# - $CONF['encrypt']
|
||||||
|
# -
|
||||||
|
# - Possible values:
|
||||||
|
# - md5crypt = internal postfix admin md5
|
||||||
|
# - md5 = md5 sum of the password
|
||||||
|
# - cleartext = clear text passwords
|
||||||
|
# - mysql_encrypt = useful for PAM integration
|
||||||
|
# -
|
||||||
|
# - authlib = support for courier-authlib style passwords - also set $CONF['authlib_default_flavor']
|
||||||
|
# - dovecot:CRYPT-METHOD = use dovecotpw -s 'CRYPT-METHOD'. Example: dovecot:CRAM-MD5
|
||||||
|
# - IMPORTANT:
|
||||||
|
# - - don't use dovecot:* methods that include the username in the hash - you won't be able
|
||||||
|
# - to login to PostfixAdmin in this case
|
||||||
|
# - - you'll need at least dovecot 2.1 for salted passwords ('doveadm pw' 2.0.x doesn't support the '-t' option)
|
||||||
|
# - - dovecot 2.0.0 - 2.0.7 is not supported
|
||||||
|
# -
|
||||||
|
ENCRYPTION_METHOD="cleartext"
|
||||||
|
#ENCRYPTION_METHOD="dovecot:CRAM-MD5"
|
||||||
|
|
||||||
|
# - If you use the dovecot encryption method: where is the dovecotpw binary located?
|
||||||
|
# -
|
||||||
|
# - Defaults to '/usr/local/dovecot/bin/doveadm pw'
|
||||||
|
# -
|
||||||
|
#DOVEADM_PW=""
|
||||||
|
|
||||||
|
# - Directory where deleted mailbox will be saved
|
||||||
|
# -
|
||||||
|
# - defaults to '/var/deleted-maildirs'
|
||||||
|
# -
|
||||||
|
#DELETED_MAILBOX_DIR=
|
||||||
|
|
||||||
|
# - Directory where deleted domains will be saved
|
||||||
|
# -
|
||||||
|
# - defaults to '/var/deleted-maildomains'
|
||||||
|
# -
|
||||||
|
#DELETED_DOMAINS_DIR=
|
||||||
|
|
||||||
|
# - Welcome Message
|
||||||
|
# - This message is send to every newly created mailbox.
|
||||||
|
# -
|
||||||
|
WELCOME_MESSAGE="
|
||||||
|
Hallo,
|
||||||
|
|
||||||
|
Ihre/Deine neue E-Mail Adresse ist eingerichtet.
|
||||||
|
|
||||||
|
O.OPEN
|
||||||
|
|
||||||
|
--
|
||||||
|
O.OPEN | Phone: +49 30 / 290 484 91
|
||||||
|
Erkelenzdamm 21 | Fax: +49 30 / 290 484 99
|
||||||
|
D-10999 Berlin | E-MAIL: oo@oopen.de
|
||||||
|
"
|
||||||
|
|
||||||
|
|
||||||
|
# ==========
|
||||||
|
# - Settings Postfix Database
|
||||||
|
# ==========
|
||||||
|
|
||||||
|
# - Type of Postfix database
|
||||||
|
# -
|
||||||
|
# - Possible values are 'pgsql' (PostgeSQL) or 'mysql' (MySQL)
|
||||||
|
# -
|
||||||
|
POSTFIX_DB_TYPE="pgsql"
|
||||||
|
|
||||||
|
# - Host of Postfix Database
|
||||||
|
# -
|
||||||
|
# - Defaults to 'localhost'
|
||||||
|
# -
|
||||||
|
#POSTFIX_DB_HOST=""
|
||||||
|
|
||||||
|
# - Unix socket where PostgreSQL is listening
|
||||||
|
# -
|
||||||
|
# - Only possible, for postgreSQL
|
||||||
|
# -
|
||||||
|
# - Defaults to '/var/run/postgresql'
|
||||||
|
# -
|
||||||
|
#POSTFIX_DB_SOCKET=""
|
||||||
|
|
||||||
|
# - Name of Postfix Database
|
||||||
|
# -
|
||||||
|
# - Defaults to 'postfix'
|
||||||
|
# -
|
||||||
|
#POSTFIX_DB_NAME=
|
||||||
|
|
||||||
|
# - User of Postfix Database
|
||||||
|
# -
|
||||||
|
# - used for setting $config['password_db_dsn']
|
||||||
|
# -
|
||||||
|
# - Defaults to 'postfix'
|
||||||
|
# -
|
||||||
|
#POSTFIX_DB_USER=""
|
||||||
|
|
||||||
|
# - Password of Postfix Database
|
||||||
|
# -
|
||||||
|
POSTFIX_DB_PASS=''
|
||||||
|
|
||||||
|
|
||||||
|
# ==========
|
||||||
|
# - vacation
|
||||||
|
# ==========
|
||||||
|
|
||||||
|
# - Vacation User
|
||||||
|
# -
|
||||||
|
# - Defaults to 'vacation'
|
||||||
|
# -
|
||||||
|
#VACATION_USER=""
|
||||||
|
|
||||||
|
# - Vacation Group
|
||||||
|
# -
|
||||||
|
# - Defaults to ''
|
||||||
|
# -
|
||||||
|
#VACATION_GROUP="vacation"
|
||||||
|
|
3734
install_amavis.sh
Executable file
3734
install_amavis.sh
Executable file
File diff suppressed because it is too large
Load Diff
610
install_opendkim.sh
Executable file
610
install_opendkim.sh
Executable file
@ -0,0 +1,610 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
clear
|
||||||
|
echo -e "\n \033[32mStart Installation of OpenDKIM..\033[m"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# -------------
|
||||||
|
# - Settings
|
||||||
|
# -------------
|
||||||
|
|
||||||
|
#_src_base_dir="$(realpath $(dirname $0))"
|
||||||
|
#conf_file="${_src_base_dir}/conf/install_opendkim.conf"
|
||||||
|
|
||||||
|
log_file="$(mktemp)"
|
||||||
|
|
||||||
|
_opendkim_packages="opendkim opendkim-tools"
|
||||||
|
|
||||||
|
opendkim_base_dir="/etc/opendkim"
|
||||||
|
opendkim_key_dir="${opendkim_base_dir}/keys"
|
||||||
|
opendkim_conf_file="/etc/opendkim.conf"
|
||||||
|
|
||||||
|
postfix_spool_dir="/var/spool/postfix"
|
||||||
|
|
||||||
|
opendkim_socket_dir="${postfix_spool_dir}/opendkim"
|
||||||
|
opendkim_socket_file="${opendkim_socket_dir}/opendkim.sock"
|
||||||
|
|
||||||
|
postfix_needs_restart=false
|
||||||
|
opendkim_needs_restart=false
|
||||||
|
|
||||||
|
# -------------
|
||||||
|
# --- Some functions
|
||||||
|
# -------------
|
||||||
|
echononl(){
|
||||||
|
echo X\\c > /tmp/shprompt$$
|
||||||
|
if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then
|
||||||
|
echo -e -n "$*\\c" 1>&2
|
||||||
|
else
|
||||||
|
echo -e -n "$*" 1>&2
|
||||||
|
fi
|
||||||
|
rm /tmp/shprompt$$
|
||||||
|
}
|
||||||
|
|
||||||
|
fatal(){
|
||||||
|
echo ""
|
||||||
|
echo -e "fatal error: $*"
|
||||||
|
echo ""
|
||||||
|
echo -e "\t\033[31m\033[1mInstalllation will be interrupted\033[m\033[m"
|
||||||
|
echo ""
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
error(){
|
||||||
|
echo ""
|
||||||
|
echo -e "\t[ \033[31m\033[1mFehler\033[m ]: $*"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
warn (){
|
||||||
|
echo ""
|
||||||
|
echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
info (){
|
||||||
|
echo ""
|
||||||
|
echo -e "\t[ \033[32m\033[1mInfo\033[m ]: $*"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
echo_done() {
|
||||||
|
echo -e "\033[80G[ \033[32mdone\033[m ]"
|
||||||
|
}
|
||||||
|
echo_ok() {
|
||||||
|
echo -e "\033[80G[ \033[32mok\033[m ]"
|
||||||
|
}
|
||||||
|
echo_warning() {
|
||||||
|
echo -e "\033[80G[ \033[33m\033[1mwarn\033[m ]"
|
||||||
|
}
|
||||||
|
echo_failed(){
|
||||||
|
echo -e "\033[80G[ \033[1;31mfailed\033[m ]"
|
||||||
|
}
|
||||||
|
echo_skipped() {
|
||||||
|
echo -e "\033[80G[ \033[37mskipped\033[m ]"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# -------------
|
||||||
|
# - Some pre-installation tasks
|
||||||
|
# -------------
|
||||||
|
|
||||||
|
# - Is 'systemd' supported on this system
|
||||||
|
# -
|
||||||
|
if [ "X`which systemd`" = "X" ]; then
|
||||||
|
SYSTEMD_EXISTS=false
|
||||||
|
else
|
||||||
|
SYSTEMD_EXISTS=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# =============
|
||||||
|
# - Start Installation
|
||||||
|
# =============
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# - Synchronise package index files with the repository
|
||||||
|
# -
|
||||||
|
echononl " Synchronise package index files with the repository.."
|
||||||
|
apt-get update > "$log_file" 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Install OpenDKIM
|
||||||
|
# -
|
||||||
|
echononl " Install needed debian packages.."
|
||||||
|
opendkim_packages=""
|
||||||
|
packages_installed=false
|
||||||
|
for _pkg in $_opendkim_packages ; do
|
||||||
|
if aptitude search "$_pkg" | grep " $_pkg " | grep -e "^i" > /dev/null 2>&1 ; then
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
opendkim_packages="$opendkim_packages $_pkg"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ -n "$opendkim_packages" ]]; then
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get -y install $opendkim_packages > /dev/null 2> "$log_file"
|
||||||
|
packages_installed=true
|
||||||
|
opendkim_needs_restart=true
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Add user 'postfix' to group 'opendkim'
|
||||||
|
# -
|
||||||
|
echononl " Add user 'postfix' to group 'opendkim'.."
|
||||||
|
if grep opendkim /etc/group | grep -q postfix 2> /dev/null ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
adduser postfix opendkim > "$log_file" 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Save configuration file from distribution
|
||||||
|
# -
|
||||||
|
echononl " Save configuration file from distribution"
|
||||||
|
if $packages_installed ; then
|
||||||
|
cp -a $opendkim_conf_file $opendkim_conf_file.ORIG 2> "$log_file"
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Create OpenDKIM configuration
|
||||||
|
# -
|
||||||
|
echononl " Create OpenDKIM configuration"
|
||||||
|
if [[ -f "$opendkim_conf_file" ]] \
|
||||||
|
&& grep -i -q -E "^\s*Socket\s+local:$opendkim_socket_file" "$opendkim_conf_file" \
|
||||||
|
&& grep -i -q -E "^\s*SigningTable.*${opendkim_base_dir}/signing.table" "$opendkim_conf_file" \
|
||||||
|
&& grep -i -q -E "^\s*KeyTable.*${opendkim_base_dir}/key.table" "$opendkim_conf_file" ; then
|
||||||
|
echo_skipped
|
||||||
|
warn "OpenDKIM seems already be configured."
|
||||||
|
else
|
||||||
|
cat <<EOF > $opendkim_conf_file 2> $log_file
|
||||||
|
# Datei $opendkim_conf_file
|
||||||
|
|
||||||
|
# OpenDKIM agiert als Mail Filter (= Milter) in den
|
||||||
|
# Modi signer (s) und verifier (v) und verwendet eine
|
||||||
|
# Socket-Datei zur Kommunikation (alternativ: lokaler Port)
|
||||||
|
Mode sv
|
||||||
|
# Socket local:/var/run/opendkim/opendkim.sock
|
||||||
|
# Socket local:$opendkim_socket_file
|
||||||
|
# Socket inet:12345@localhost
|
||||||
|
Socket local:$opendkim_socket_file
|
||||||
|
|
||||||
|
# OpenDKIM verwendet diesen Benutzer bzw.
|
||||||
|
# diese Gruppe
|
||||||
|
UserID opendkim:opendkim
|
||||||
|
UMask 002
|
||||||
|
PidFile /var/run/opendkim/opendkim.pid
|
||||||
|
|
||||||
|
# OpenDKIM bei Problemen neustarten,
|
||||||
|
# aber max. 10 mal pro Stunde
|
||||||
|
AutoRestart yes
|
||||||
|
AutoRestartRate 10/1h
|
||||||
|
|
||||||
|
# Logging (wenn alles funktioniert eventuell reduzieren)
|
||||||
|
Syslog yes
|
||||||
|
SyslogSuccess yes
|
||||||
|
LogWhy yes
|
||||||
|
|
||||||
|
# Verfahren, wie Header und Body durch
|
||||||
|
# OpenDKIM verarbeitet werden sollen.
|
||||||
|
Canonicalization relaxed/simple
|
||||||
|
|
||||||
|
# interne Mails nicht mit OpenDKIM verarbeiten
|
||||||
|
ExternalIgnoreList refile:${opendkim_base_dir}/trusted
|
||||||
|
InternalHosts refile:${opendkim_base_dir}/trusted
|
||||||
|
|
||||||
|
# welche Verschlüsselungs-Keys sollen für welche
|
||||||
|
# Domains verwendet werden
|
||||||
|
# (refile: für Dateien mit regulären Ausdrücke)
|
||||||
|
SigningTable refile:${opendkim_base_dir}/signing.table
|
||||||
|
KeyTable ${opendkim_base_dir}/key.table
|
||||||
|
|
||||||
|
# diesen Signatur-Algorithmus verwenden
|
||||||
|
SignatureAlgorithm rsa-sha256
|
||||||
|
|
||||||
|
# Always oversign From (sign using actual From and a null From to prevent
|
||||||
|
# malicious signatures header fields (From and/or others) between the signer
|
||||||
|
# and the verifier. From is oversigned by default in the Debian pacakge
|
||||||
|
# because it is often the identity key used by reputation systems and thus
|
||||||
|
# somewhat security sensitive.
|
||||||
|
OversignHeaders From
|
||||||
|
EOF
|
||||||
|
opendkim_needs_restart=true
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Assign ownership to the opendkim user and restrict tthe
|
||||||
|
# - file permissions:
|
||||||
|
# -
|
||||||
|
echononl " Assign ownership and file permissions.."
|
||||||
|
chmod u=rw,go=r $opendkim_conf_file 2> $log_file
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Create the directories to hold OpenDKIM’s data files, assign
|
||||||
|
# - ownership to the opendkim user, and restrict the file
|
||||||
|
# - permissions:
|
||||||
|
# -
|
||||||
|
echononl " Create directory '$opendkim_base_dir'"
|
||||||
|
if [[ -d "$opendkim_base_dir" ]] ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
opendkim_needs_restart=true
|
||||||
|
mkdir ${opendkim_base_dir} 2> $log_file
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echononl " Create directory '$opendkim_key_dir'"
|
||||||
|
if [[ -d "$opendkim_key_dir" ]] ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
opendkim_needs_restart=true
|
||||||
|
mkdir $opendkim_key_dir 2> $log_file
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echononl " Set ownership on directory '${opendkim_base_dir}' (recursive).."
|
||||||
|
chown -R opendkim:opendkim ${opendkim_base_dir} 2> $log_file
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
echononl " Set file-permission on $opendkim_key_dir"
|
||||||
|
chmod go-rw $opendkim_key_dir 2> $log_file
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Create empty files
|
||||||
|
# - ${opendkim_base_dir}/signing.table
|
||||||
|
# - ${opendkim_base_dir}/key.table
|
||||||
|
# -
|
||||||
|
echononl " Create empty file '${opendkim_base_dir}/signing.table'.."
|
||||||
|
if [[ -f "${opendkim_base_dir}/signing.table" ]] ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
touch ${opendkim_base_dir}/signing.table 2> $log_file
|
||||||
|
opendkim_needs_restart=true
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echononl " Create empty file '${opendkim_base_dir}/key.table'.."
|
||||||
|
if [[ -f "${opendkim_base_dir}/key.table" ]] ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
touch ${opendkim_base_dir}/key.table 2> $log_file
|
||||||
|
opendkim_needs_restart=true
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Create the trusted hosts file ${opendkim_base_dir}/trusted.hosts.
|
||||||
|
# -
|
||||||
|
echononl " Create trusted hosts file '${opendkim_base_dir}/trusted'.."
|
||||||
|
if [[ -f "${opendkim_base_dir}/trusted" ]] ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
cat <<EOF > ${opendkim_base_dir}/trusted 2> $log_file
|
||||||
|
127.0.0.1
|
||||||
|
::1
|
||||||
|
localhost
|
||||||
|
$(hostname -f)
|
||||||
|
EOF
|
||||||
|
opendkim_needs_restart=true
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Create the OpenDKIM socket directory in Postfix’s work area
|
||||||
|
# - and make sure it has the correct ownership:
|
||||||
|
# -
|
||||||
|
echononl " Create the OpenDKIM socket directory in Postfix’s work area.."
|
||||||
|
if [[ -d "${postfix_spool_dir}/opendkim" ]] ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
mkdir ${postfix_spool_dir}/opendkim 2> $log_file
|
||||||
|
opendkim_needs_restart=true
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
echononl " Set ownership on directory '${postfix_spool_dir}/opendkim'.."
|
||||||
|
chown opendkim:postfix ${postfix_spool_dir}/opendkim 2> $log_file
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Edit /etc/default/opendkim
|
||||||
|
# -
|
||||||
|
# - Set:
|
||||||
|
# - SOCKET="local:${postfix_spool_dir}/opendkim/opendkim.sock"
|
||||||
|
# -
|
||||||
|
echononl " Set 'SOCKET' at file /etc/default/opendkim.."
|
||||||
|
if grep -q -E "^\s*SOCKET" /etc/default/opendkim 2>/dev/null ; then
|
||||||
|
if grep -q -E "^\s*SOCKET.*local:$opendkim_socket_file" /etc/default/opendkim 2>/dev/null ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
perl -i -n -p -e "s#^\s*SOCKET=.*#SOCKET=\"local:$opendkim_socket_file\"#" /etc/default/opendkim 2> $log_file
|
||||||
|
opendkim_needs_restart=true
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
cat <<EOF >>/etc/default/opendkim 2> $log_file
|
||||||
|
SOCKET="local:$opendkim_socket_file"
|
||||||
|
EOF
|
||||||
|
opendkim_needs_restart=true
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Edit /etc/postfix/main.cf and add a section to activate
|
||||||
|
# - processing of e-mail through the OpenDKIM daemon:
|
||||||
|
# -
|
||||||
|
backup_date="$(date +%Y-%m-%d-%H%M)"
|
||||||
|
echononl " Backup existing postfix configuration (main.cf).."
|
||||||
|
cp -a /etc/postfix/main.cf /etc/postfix/main.cf.$backup_date 2> $log_file
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl " Activate processing of e-mail through the OpenDKIM daemon.."
|
||||||
|
if grep -q -E "milter_default_action\s*=\s*accept" /etc/postfix/main.cf ; then
|
||||||
|
echo_skipped
|
||||||
|
warn "Postfix (main.cf) seems already be configured for milters"
|
||||||
|
echononl " Delete previosly saved Postfix configuration.."
|
||||||
|
rm /etc/postfix/main.cf.$backup_date 2> $log_file
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf 2> $log_file
|
||||||
|
|
||||||
|
# ======= Milter configuration =======
|
||||||
|
|
||||||
|
# OpenDKIM
|
||||||
|
|
||||||
|
milter_default_action = accept
|
||||||
|
|
||||||
|
# Postfix ≥ 2.6 milter_protocol = 6, Postfix ≤ 2.5 milter_protocol = 2
|
||||||
|
milter_protocol = 6
|
||||||
|
|
||||||
|
# Note:
|
||||||
|
# We will sign AFTER sending through AmaVIS, just befor sending out. So
|
||||||
|
# set 'smtpd_milters =' to an emty string here and add to localhost:10025
|
||||||
|
# section in master.cf: 'smtpd_milters=local:/opendkim/opendkim.sock'
|
||||||
|
#
|
||||||
|
# If you want sign mails before sending through AmaVIS, set
|
||||||
|
# 'smtpd_milters = local:/opendkim/opendkim.sock' here and add to
|
||||||
|
# localhost:10025 section in master.cf: 'smtpd_milters='
|
||||||
|
#
|
||||||
|
#smtpd_milters = local:/opendkim/opendkim.sock
|
||||||
|
smtpd_milters =
|
||||||
|
non_smtpd_milters = local:/opendkim/opendkim.sock
|
||||||
|
EOF
|
||||||
|
postfix_needs_restart=true
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Prevent Postfix from setting the DKIM Header twice (one befor
|
||||||
|
# - and one after processing amavis
|
||||||
|
# -
|
||||||
|
# - To disable milter processing after amavis, add to your master.cf in
|
||||||
|
# - the after-amavis section:
|
||||||
|
# - 127.0.0.1:10025 inet n - - - - smtpd
|
||||||
|
# - [...]
|
||||||
|
# - -o smtpd_milters=
|
||||||
|
# -
|
||||||
|
# - If you want to run the milter after amavis, set in main.cf
|
||||||
|
# - smtpd_milters=
|
||||||
|
# - to an empty string and add the smtpd_milters configuration to master.cf
|
||||||
|
# - (after-section amavis) instead:
|
||||||
|
# - -o smtpd_milters=local:/opendkim/opendkim.sock
|
||||||
|
# -
|
||||||
|
echononl " Backup file '/etc/postfix/master.cf'.."
|
||||||
|
cp -a /etc/postfix/master.cf /etc/postfix/master.cf.$backup_date 2> $log_file
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
echononl " Adjust /etc/postfix/master.cf. Set DKIM after sending throuh AmaVIS.."
|
||||||
|
_found=false
|
||||||
|
_changed=false
|
||||||
|
tmp_master_file="/tmp/postfix_master.cf"
|
||||||
|
> $tmp_master_file
|
||||||
|
while IFS='' read -r _line || [[ -n $_line ]] ; do
|
||||||
|
|
||||||
|
if $_found && ! echo "$_line" | grep -i -q -E "^\s*-o" 2> /dev/null ; then
|
||||||
|
echo " -o smtpd_milters=local:/opendkim/opendkim.sock" >> "$tmp_master_file"
|
||||||
|
_changed=true
|
||||||
|
_found=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $_found && echo "$_line" | grep -i -q -E "^\s*-o\s+smtpd_milters=\s*" ; then
|
||||||
|
_found=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
if echo "$_line" | grep -i -q -E "^\s*(127.0.0.1|localhost):10025\s+inet\s+" 2> /dev/null ; then
|
||||||
|
_found=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$_line" >> "$tmp_master_file"
|
||||||
|
|
||||||
|
done < "/etc/postfix/master.cf"
|
||||||
|
if $_changed ; then
|
||||||
|
cp $tmp_master_file /etc/postfix/master.cf 2> $log_file
|
||||||
|
postfix_needs_restart=true
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
warn "Postfix (master.cf) seems already be configured."
|
||||||
|
echononl " Delete previosly saved file '/etc/postfix/master.cf'.."
|
||||||
|
rm /etc/postfix/master.cf.$backup_date 2> $log_file
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
rm -f $tmp_master_file
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# - Restart OpenDKIM
|
||||||
|
# -
|
||||||
|
echononl " Restart OpenDKIM.."
|
||||||
|
if $opendkim_needs_restart ; then
|
||||||
|
if $SYSTEMD_EXISTS ; then
|
||||||
|
systemctl restart opendkim > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
/etc/init.d/opendkim restart > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Restart Postfix so it starts using OpenDKIM when processing mail:
|
||||||
|
# -
|
||||||
|
echononl " Restart Postfix.."
|
||||||
|
if $postfix_needs_restart ; then
|
||||||
|
if $SYSTEMD_EXISTS ; then
|
||||||
|
systemctl restart postfix > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
/etc/init.d/postfix restart > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
rm -f "$log_file"
|
||||||
|
exit 0
|
1484
install_postfix_advanced.sh
Executable file
1484
install_postfix_advanced.sh
Executable file
File diff suppressed because it is too large
Load Diff
999
install_postfix_base.sh
Executable file
999
install_postfix_base.sh
Executable file
@ -0,0 +1,999 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
_TLS_CERT_DIR=/etc/postfix/ssl
|
||||||
|
_TLS_CERT_FILE="${_TLS_CERT_DIR}/mailserver.crt"
|
||||||
|
_TLS_KEY_FILE="${_TLS_CERT_DIR}/mailserver.key"
|
||||||
|
#
|
||||||
|
_TLS_CA_FILE=/etc/ssl/certs/ca-certificates.crt
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#_HOSTNAME=o15.oopen.de
|
||||||
|
#_IPV4=83.223.86.96
|
||||||
|
#_EXT_IF_IP=83.223.86.96
|
||||||
|
#
|
||||||
|
### - Leave empty, if no IPv6 should be supported
|
||||||
|
### -
|
||||||
|
#_IPV6=2a01:30:0:13:5054:ff:fe09:2318
|
||||||
|
##_IPV6=
|
||||||
|
#
|
||||||
|
#_ADMIN_EMAIL=admin@oopen.de
|
||||||
|
#
|
||||||
|
#_SASL_AUTH=false
|
||||||
|
#_RELAY_HOST=b.mx.oopen.de
|
||||||
|
#_SASL_USER=anw-urb
|
||||||
|
#_SASL_PASS='OhPie2aethei'
|
||||||
|
|
||||||
|
|
||||||
|
# -------------
|
||||||
|
# --- Some functions
|
||||||
|
# -------------
|
||||||
|
echononl(){
|
||||||
|
echo X\\c > /tmp/shprompt$$
|
||||||
|
if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then
|
||||||
|
echo -e -n "$*\\c" 1>&2
|
||||||
|
else
|
||||||
|
echo -e -n "$*" 1>&2
|
||||||
|
fi
|
||||||
|
rm /tmp/shprompt$$
|
||||||
|
}
|
||||||
|
|
||||||
|
fatal(){
|
||||||
|
echo ""
|
||||||
|
echo -e "fatal error: $*"
|
||||||
|
echo ""
|
||||||
|
echo -e "\t\033[31m\033[1mInstalllation will be interrupted\033[m\033[m"
|
||||||
|
echo ""
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
error(){
|
||||||
|
echo ""
|
||||||
|
echo -e "\t[ \033[31m\033[1mFehler\033[m ]: $*"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
warn (){
|
||||||
|
echo ""
|
||||||
|
echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
info (){
|
||||||
|
echo ""
|
||||||
|
echo -e "\t[ \033[32m\033[1mInfo\033[m ]: $*"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
echo_done() {
|
||||||
|
echo -e "\033[80G[ \033[32mdone\033[m ]"
|
||||||
|
}
|
||||||
|
echo_ok() {
|
||||||
|
echo -e "\033[80G[ \033[32mok\033[m ]"
|
||||||
|
}
|
||||||
|
echo_warning() {
|
||||||
|
echo -e "\033[80G[ \033[33m\033[1mwarn\033[m ]"
|
||||||
|
}
|
||||||
|
echo_failed(){
|
||||||
|
echo -e "\033[80G[ \033[1;31mfailed\033[m ]"
|
||||||
|
}
|
||||||
|
echo_skipped() {
|
||||||
|
echo -e "\033[80G[ \033[33m\033[1mskipped\033[m ]"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# - Is this a systemd system?
|
||||||
|
# -
|
||||||
|
if [[ "X`which systemd`" = "X" ]]; then
|
||||||
|
systemd_exists=false
|
||||||
|
else
|
||||||
|
systemd_exists=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
conf_dir=$(dirname $0)/conf
|
||||||
|
conf_file="${conf_dir}/install_postfix_base.conf"
|
||||||
|
|
||||||
|
if [[ -f "$conf_file" ]]; then
|
||||||
|
source $conf_file
|
||||||
|
fi
|
||||||
|
|
||||||
|
clear
|
||||||
|
echo -e "\033[21G\033[32mInstallation script for Postfix basic mailsystem \033[m"
|
||||||
|
echo
|
||||||
|
|
||||||
|
HOSTNAME=
|
||||||
|
echo ""
|
||||||
|
echo -e "\033[32m--\033[m"
|
||||||
|
echo ""
|
||||||
|
echo "Insert hostname"
|
||||||
|
echo ""
|
||||||
|
if [[ -n "$_HOSTNAME" ]]; then
|
||||||
|
echononl "hostname [${_HOSTNAME}]: "
|
||||||
|
read HOSTNAME
|
||||||
|
if [[ "X${HOSTNAME}" = "X" ]]; then
|
||||||
|
HOSTNAME=$_HOSTNAME
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
while [[ "X${HOSTNAME}" = "X" ]]; do
|
||||||
|
echononl "hostname: "
|
||||||
|
read HOSTNAME
|
||||||
|
if [[ "X${HOSTNAME}" = "X" ]]; then
|
||||||
|
echo -e "\n\t\033[33m\033[1mHostname is reqired\033[m\n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
IPV4=
|
||||||
|
echo ""
|
||||||
|
echo -e "\033[32m--\033[m"
|
||||||
|
echo ""
|
||||||
|
echo "Insert IPv4 address"
|
||||||
|
echo ""
|
||||||
|
if [[ -n "$_IPV4" ]]; then
|
||||||
|
echononl "IPv4 address [${_IPV4}]: "
|
||||||
|
read IPV4
|
||||||
|
if [[ "X${IPV4}" = "X" ]]; then
|
||||||
|
IPV4=$_IPV4
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
while [[ "X${IPV4}" = "X" ]]; do
|
||||||
|
echononl "IPv4 address: "
|
||||||
|
read IPV4
|
||||||
|
if [[ "X${IPV4}" = "X" ]]; then
|
||||||
|
echo -e "\n\t\033[33m\033[1mIPv4 address is reqired\033[m\n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
IPV6=
|
||||||
|
echo ""
|
||||||
|
echo -e "\033[32m--\033[m"
|
||||||
|
echo ""
|
||||||
|
echo "Insert IPv6 address"
|
||||||
|
echo "Type:"
|
||||||
|
echo -e "\t\033[33mNone\033[m if IPv6 is not suppoerted"
|
||||||
|
echo ""
|
||||||
|
if [[ -n "$_IPV6" ]]; then
|
||||||
|
[[ "X$_IPV6" = "Xdisabled" ]] && _IPV6=None
|
||||||
|
echononl "IPv6 address [${_IPV6}]: "
|
||||||
|
read IPV6
|
||||||
|
if [[ "X${IPV6}" = "X" ]]; then
|
||||||
|
IPV6=$_IPV6
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
while [[ "X${IPV6}" = "X" ]]; do
|
||||||
|
echononl "IPv6 address: "
|
||||||
|
read IPV6
|
||||||
|
if [[ "X${IPV6}" = "X" ]]; then
|
||||||
|
echo -e "\n\t\033[33m\033[1mIPv4 address is reqired\033[m\n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ "X$IPV6" = "Xnone" -o "X$IPV6" = "XNone" ]; then
|
||||||
|
IPV6=disabled
|
||||||
|
fi
|
||||||
|
|
||||||
|
ADMIN_EMAIL=
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
echo -e "\033[32m--\033[m"
|
||||||
|
echo ""
|
||||||
|
echo "Insert e-mail address where messages to local root should be forwarded"
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
if [[ -n "$_ADMIN_EMAIL" ]]; then
|
||||||
|
echononl "Admin e-mail address [$_ADMIN_EMAIL]: "
|
||||||
|
read ADMIN_EMAIL
|
||||||
|
if [[ "X${ADMIN_EMAIL}" = "X" ]]; then
|
||||||
|
ADMIN_EMAIL=$_ADMIN_EMAIL
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
while [[ "X${ADMIN_EMAIL}" = "X" ]]; do
|
||||||
|
echononl "Admin e-mail address: "
|
||||||
|
read ADMIN_EMAIL
|
||||||
|
if [[ "X${ADMIN_EMAIL}" = "X" ]]; then
|
||||||
|
echo -e "\n\t\033[33m\033[1mAdmin e-mail address is reqired\033[m\n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
SASL_AUTH=
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
echo -e "\033[32m--\033[m"
|
||||||
|
echo ""
|
||||||
|
echo "Should this System relay mails through another host using sasl auth?"
|
||||||
|
echo ""
|
||||||
|
if [[ -n "$_SASL_AUTH" ]]; then
|
||||||
|
if $_SASL_AUTH ; then
|
||||||
|
echononl "Relay mails using sasl auth? [yes]; "
|
||||||
|
read SASL_AUTH
|
||||||
|
if [[ "X${SASL_AUTH}" = "X" ]]; then
|
||||||
|
SASL_AUTH=true
|
||||||
|
else
|
||||||
|
SASL_AUTH=${SASL_AUTH,,}
|
||||||
|
if [ "X$SASL_AUTH" != "Xyes" -a "X$SASL_AUTH" != "Xno" ]; then
|
||||||
|
echononl "Wrong entry {yes/no]: "
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echononl "Relay mails using sasl auth? [no]; "
|
||||||
|
read SASL_AUTH
|
||||||
|
if [[ "X${SASL_AUTH}" = "X" ]]; then
|
||||||
|
SASL_AUTH=false
|
||||||
|
else
|
||||||
|
SASL_AUTH=${SASL_AUTH,,}
|
||||||
|
if [ "X$SASL_AUTH" != "Xyes" -a "X$SASL_AUTH" != "Xno" ]; then
|
||||||
|
echononl "Wrong entry [yes/no]: "
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echononl "Relay mails using sasl auth? (yes/no); "
|
||||||
|
while [[ "X${SASL_AUTH}" = "X" ]] ; do
|
||||||
|
read SASL_AUTH
|
||||||
|
SASL_AUTH=${SASL_AUTH,,}
|
||||||
|
if [ "X$SASL_AUTH" != "Xyes" -a "X$SASL_AUTH" != "Xno" ]; then
|
||||||
|
SASL_AUTH=
|
||||||
|
echononl "Wrong entry [yes/no]: "
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [[ "$SASL_AUTH" = "yes" ]] || $SASL_AUTH ; then
|
||||||
|
SASL_AUTH=true
|
||||||
|
|
||||||
|
SASL_USER=
|
||||||
|
echo ""
|
||||||
|
echo "Insert SASL user"
|
||||||
|
echo ""
|
||||||
|
if [[ -n "$_SASL_USER" ]];then
|
||||||
|
echononl "SASL user [$_SASL_USER]: "
|
||||||
|
read SASL_USER
|
||||||
|
if [[ "X${SASL_USER}" = "X" ]]; then
|
||||||
|
SASL_USER=$_SASL_USER
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
while [[ "X${SASL_USER}" = "X" ]]; do
|
||||||
|
echononl "SASL user: "
|
||||||
|
read SASL_USER
|
||||||
|
if [[ "X${SASL_USER}" = "X" ]]; then
|
||||||
|
echo -e "\n\t\033[33m\033[1mSASL user is reqired\033[m\n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
SASL_PASS=
|
||||||
|
echo ""
|
||||||
|
echo "Insert SASL pasword"
|
||||||
|
echo ""
|
||||||
|
if [[ -n "$_SASL_PASS" ]];then
|
||||||
|
echononl "SASL password [$_SASL_PASS]: "
|
||||||
|
read SASL_PASS
|
||||||
|
if [[ "X${SASL_PASS}" = "X" ]]; then
|
||||||
|
SASL_PASS=$_SASL_PASS
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
while [[ "X${SASL_PASS}" = "X" ]]; do
|
||||||
|
echononl "SASL password: "
|
||||||
|
read SASL_PASS
|
||||||
|
if [[ "X${SASL_PASS}" = "X" ]]; then
|
||||||
|
echo -e "\n\t\033[33m\033[1mSASL password is reqired\033[m\n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELAY_HOST=
|
||||||
|
echo ""
|
||||||
|
echo "Insert Relayhost"
|
||||||
|
echo ""
|
||||||
|
if [[ -n "$_RELAY_HOST" ]];then
|
||||||
|
echononl "Relayhost [$_RELAY_HOST]: "
|
||||||
|
read RELAY_HOST
|
||||||
|
if [[ "X${RELAY_HOST}" = "X" ]]; then
|
||||||
|
RELAY_HOST=$_RELAY_HOST
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
while [[ "X${RELAY_HOST}" = "X" ]]; do
|
||||||
|
echononl "Relayhost: "
|
||||||
|
read RELAY_HOST
|
||||||
|
if [[ "X${RELAY_HOST}" = "X" ]]; then
|
||||||
|
echo -e "\n\t\033[33m\033[1mRelayhost is reqired\033[m\n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
else
|
||||||
|
SASL_AUTH=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
echo -e "\033[21G\033[32mStart installation/configuration with the following parameters\033[m"
|
||||||
|
echo ""
|
||||||
|
echo -e "\tHostname.................: $HOSTNAME"
|
||||||
|
echo -e "\tIPv4 address.............: $IPV4"
|
||||||
|
echo -e "\tIPv6 address.............: $IPV6"
|
||||||
|
echo -e "\tAdmin e-mail.............: $ADMIN_EMAIL"
|
||||||
|
echo ""
|
||||||
|
echo -e "\tRelay using sasl auth....: $SASL_AUTH"
|
||||||
|
if $SASL_AUTH ; then
|
||||||
|
echo -e "\t sasl user.............: $SASL_USER"
|
||||||
|
echo -e "\t sasl password.........: $SASL_PASS"
|
||||||
|
echo -e "\t Relayhost.............: $RELAY_HOST"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
echononl "einverstanden (yes/no): "
|
||||||
|
read OK
|
||||||
|
OK=${OK,,}
|
||||||
|
while [ "X$OK" != "Xyes" -a "X$OK" != "Xno" ]; do
|
||||||
|
echononl "Wrong entry! [yes/no]: "
|
||||||
|
read OK
|
||||||
|
OK=${OK,,}
|
||||||
|
done
|
||||||
|
[ $OK = "yes" ] || fatal Repeat with other settings..
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echononl " Save Configuration"
|
||||||
|
cat << EOF > $conf_file
|
||||||
|
# ---
|
||||||
|
# - Parameter Settings Postfix Bases System
|
||||||
|
# -
|
||||||
|
# - - automated generated config file -
|
||||||
|
# ---
|
||||||
|
|
||||||
|
_HOSTNAME=$HOSTNAME
|
||||||
|
_IPV4=$IPV4
|
||||||
|
_IPV6=$IPV6
|
||||||
|
_ADMIN_EMAIL=$ADMIN_EMAIL
|
||||||
|
_SASL_AUTH=$SASL_AUTH
|
||||||
|
_SASL_USER=$SASL_USER
|
||||||
|
_SASL_PASS=$SASL_PASS
|
||||||
|
_RELAY_HOST=$RELAY_HOST
|
||||||
|
EOF
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ "$IPV6" = "disabled" ]] && IPV6=""
|
||||||
|
|
||||||
|
|
||||||
|
# - Deinstall debian exim4 packages
|
||||||
|
# -
|
||||||
|
echononl " Deinstall debian exim4 packages"
|
||||||
|
_installed_exim_packages=`dpkg -l | grep exim4 | grep -e "^i" | awk '{print$2}'`
|
||||||
|
for _pkg in $_installed_exim_packages ; do
|
||||||
|
installed_exim_packages="$installed_exim_packages $_pkg"
|
||||||
|
done
|
||||||
|
if [[ -n "$installed_exim_packages" ]] ; then
|
||||||
|
|
||||||
|
if `dpkg -l | grep bsd-mailx | grep -e "^i" > /dev/null 2>&1` ; then
|
||||||
|
installed_exim_packages="$installed_exim_packages bsd-mailx"
|
||||||
|
fi
|
||||||
|
|
||||||
|
apt-get remove --purge -qq -y $installed_exim_packages > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# - Install Postfix from debian packages system
|
||||||
|
# -
|
||||||
|
echononl " Install Postfix from debian packages system"
|
||||||
|
_needed_packages="postfix postfix-pcre libsasl2-modules bsd-mailx haveged"
|
||||||
|
for _pkg in $_needed_packages ; do
|
||||||
|
if `dpkg -l | grep $_pkg | grep -e "^i" > /dev/null 2>&1` ; then
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
needed_packages="$needed_packages $_pkg"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ -n "$needed_packages" ]]; then
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get -y install $needed_packages > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Backup existing postfix configuration file
|
||||||
|
# -
|
||||||
|
echononl " Backup existing postfix configuration file"
|
||||||
|
if [[ -f "/etc/postfix/main.cf" ]]; then
|
||||||
|
cp -a /etc/postfix/main.cf /etc/postfix/main.cf.`date +%Y%m%d-%H%M`
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# - Creeate new postfix configuration file
|
||||||
|
# -
|
||||||
|
echononl " Creeate new postfix configuration file"
|
||||||
|
cat <<EOF > /etc/postfix/main.cf
|
||||||
|
# ============ Basic settings ============
|
||||||
|
|
||||||
|
# Debian specific: Specifying a file name will cause the first
|
||||||
|
# line of that file to be used as the name. The Debian default
|
||||||
|
# is /etc/mailname.
|
||||||
|
#myorigin = /etc/mailname
|
||||||
|
myorigin = /etc/mailname
|
||||||
|
|
||||||
|
smtpd_banner = \$myhostname ESMTP \$mail_name (Debian/GNU)
|
||||||
|
biff = no
|
||||||
|
|
||||||
|
# appending .domain is the MUA's job.
|
||||||
|
append_dot_mydomain = no
|
||||||
|
|
||||||
|
# Uncomment the next line to generate "delayed mail" warnings
|
||||||
|
#delay_warning_time = 4h
|
||||||
|
|
||||||
|
readme_directory = /usr/share/doc/postfix
|
||||||
|
html_directory = /usr/share/doc/postfix/html
|
||||||
|
|
||||||
|
## - The Internet protocols Postfix will attempt to use when making
|
||||||
|
## - or accepting connections.
|
||||||
|
## - DEFAULT: ipv4
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [ -n "$IPV6" ]; then
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
inet_protocols = ipv4, ipv6
|
||||||
|
|
||||||
|
#inet_interfaces = all
|
||||||
|
|
||||||
|
inet_interfaces = 127.0.0.1
|
||||||
|
$IPV4
|
||||||
|
$IPV6
|
||||||
|
|
||||||
|
myhostname = $HOSTNAME
|
||||||
|
|
||||||
|
mydestination =
|
||||||
|
$HOSTNAME
|
||||||
|
localhost
|
||||||
|
|
||||||
|
## - The list of "trusted" SMTP clients that have more
|
||||||
|
## - privileges than "strangers"
|
||||||
|
## -
|
||||||
|
mynetworks =
|
||||||
|
127.0.0.0/8
|
||||||
|
[::ffff:127.0.0.0]/104
|
||||||
|
[::1]/128
|
||||||
|
${IPV4}/32
|
||||||
|
[${IPV6}]/128
|
||||||
|
|
||||||
|
#smtp_bind_address = $IPV4
|
||||||
|
#smtp_bind_address6 = $IPV6
|
||||||
|
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
inet_protocols = ipv4
|
||||||
|
|
||||||
|
#inet_interfaces = all
|
||||||
|
inet_interfaces =
|
||||||
|
127.0.0.1
|
||||||
|
$IPV4
|
||||||
|
|
||||||
|
myhostname = $HOSTNAME
|
||||||
|
|
||||||
|
mydestination =
|
||||||
|
$HOSTNAME
|
||||||
|
localhost
|
||||||
|
|
||||||
|
## - The list of "trusted" SMTP clients that have more
|
||||||
|
## - privileges than "strangers"
|
||||||
|
## -
|
||||||
|
mynetworks =
|
||||||
|
127.0.0.0/8
|
||||||
|
${IPV4}/32
|
||||||
|
|
||||||
|
#smtp_bind_address = $IPV4
|
||||||
|
#smtp_bind_address6 = $IPV6
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
|
||||||
|
## - The method to generate the default value for the mynetworks parameter.
|
||||||
|
## -
|
||||||
|
## - mynetworks_style = host" when Postfix should "trust" only the local machine
|
||||||
|
## - mynetworks_style = subnet (default value) "when Postfix should "trust" SMTP
|
||||||
|
## - clients in the same IP subnetworks as the local machine.
|
||||||
|
## - mynetworks_style = class" when Postfix should "trust" SMTP clients in the same
|
||||||
|
## - IP class A/B/C networks as the local machine.
|
||||||
|
## -
|
||||||
|
#mynetworks_style = host
|
||||||
|
|
||||||
|
|
||||||
|
## - The maximal size of any local(8) individual mailbox or maildir file,
|
||||||
|
## - or zero (no limit). In fact, this limits the size of any file that is
|
||||||
|
## - written to upon local delivery, including files written by external
|
||||||
|
## - commands that are executed by the local(8) delivery agent.
|
||||||
|
## -
|
||||||
|
mailbox_size_limit = 0
|
||||||
|
|
||||||
|
## - The maximal size in bytes of a message, including envelope information.
|
||||||
|
## -
|
||||||
|
## - we user 50MB
|
||||||
|
## -
|
||||||
|
message_size_limit = 52480000
|
||||||
|
|
||||||
|
## - The system-wide recipient address extension delimiter
|
||||||
|
## -
|
||||||
|
recipient_delimiter = +
|
||||||
|
|
||||||
|
## - The alias databases that are used for local(8) delivery.
|
||||||
|
## -
|
||||||
|
alias_maps =
|
||||||
|
hash:/etc/aliases
|
||||||
|
|
||||||
|
## - The alias databases for local(8) delivery that are updated
|
||||||
|
## - with "newaliases" or with "sendmail -bi".
|
||||||
|
## -
|
||||||
|
alias_database =
|
||||||
|
hash:/etc/aliases
|
||||||
|
|
||||||
|
|
||||||
|
## - The maximal time a message is queued before it is sent back as
|
||||||
|
## - undeliverable. Defaults to 5d (5 days)
|
||||||
|
## - Specify 0 when mail delivery should be tried only once.
|
||||||
|
## -
|
||||||
|
maximal_queue_lifetime = 3d
|
||||||
|
bounce_queue_lifetime = \$maximal_queue_lifetime
|
||||||
|
|
||||||
|
## - delay_warning_time (default: 0h)
|
||||||
|
## -
|
||||||
|
## - The time after which the sender receives a copy of the message
|
||||||
|
## - headers of mail that is still queued. To enable this feature,
|
||||||
|
## - specify a non-zero time value (an integral value plus an optional
|
||||||
|
## - one-letter suffix that specifies the time unit).
|
||||||
|
## - Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
|
||||||
|
## - The default time unit is h (hours).
|
||||||
|
delay_warning_time = 1d
|
||||||
|
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if $SASL_AUTH ; then
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
|
||||||
|
# ============ Relay parameters ============
|
||||||
|
|
||||||
|
#relayhost =
|
||||||
|
|
||||||
|
|
||||||
|
# ============ SASL authentication ============
|
||||||
|
|
||||||
|
# Enable SASL authentication
|
||||||
|
smtp_sasl_auth_enable = yes
|
||||||
|
|
||||||
|
# Forwarding to the ip-adress of host b.mx.oopen.de
|
||||||
|
relayhost = [${RELAY_HOST}]
|
||||||
|
|
||||||
|
# File including login data
|
||||||
|
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
|
||||||
|
|
||||||
|
# Force using a (TLS) security connection
|
||||||
|
# obsulete - use smtp_tls_security_level instead
|
||||||
|
#smtp_use_tls = yes
|
||||||
|
#smtp_tls_enforce_peername = no
|
||||||
|
smtp_tls_security_level = encrypt
|
||||||
|
|
||||||
|
# Disallow methods that allow anonymous authentication.
|
||||||
|
smtp_sasl_security_options = noanonymous
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ============ TLS parameters ============
|
||||||
|
|
||||||
|
## - Aktiviert TLS für den Mailempfang
|
||||||
|
## -
|
||||||
|
## - may:
|
||||||
|
## - Opportunistic TLS. Use TLS if this is supported by the remote
|
||||||
|
## - SMTP server, otherwise use plaintext
|
||||||
|
## -
|
||||||
|
## - This overrides the obsolete parameters smtpd_use_tls and
|
||||||
|
## - smtpd_enforce_tls. This parameter is ignored with
|
||||||
|
## - "smtpd_tls_wrappermode = yes".
|
||||||
|
#smtpd_use_tls=yes
|
||||||
|
smtp_tls_security_level=encrypt
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
else
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
|
||||||
|
# ============ Relay parameters ============
|
||||||
|
|
||||||
|
relayhost =
|
||||||
|
|
||||||
|
|
||||||
|
# ============ TLS parameters ============
|
||||||
|
|
||||||
|
## - Aktiviert TLS für den Mailempfang
|
||||||
|
## -
|
||||||
|
## - may:
|
||||||
|
## - Opportunistic TLS. Use TLS if this is supported by the remote
|
||||||
|
## - SMTP server, otherwise use plaintext
|
||||||
|
## -
|
||||||
|
## - This overrides the obsolete parameters smtpd_use_tls and
|
||||||
|
## - smtpd_enforce_tls. This parameter is ignored with
|
||||||
|
## - "smtpd_tls_wrappermode = yes".
|
||||||
|
#smtpd_use_tls=yes
|
||||||
|
smtp_tls_security_level=may
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat <<EOF >> /etc/postfix/main.cf
|
||||||
|
## - Aktiviert TLS für den Mailversand
|
||||||
|
## -
|
||||||
|
## - may:
|
||||||
|
## - Opportunistic TLS: announce STARTTLS support to SMTP clients,
|
||||||
|
## - but do not require that clients use TLS encryption.
|
||||||
|
# smtp_use_tls=yes
|
||||||
|
smtpd_tls_security_level=may
|
||||||
|
|
||||||
|
## - 0 Disable logging of TLS activity.
|
||||||
|
## - 1 Log TLS handshake and certificate information.
|
||||||
|
## - 2 Log levels during TLS negotiation.
|
||||||
|
## - 3 Log hexadecimal and ASCII dump of TLS negotiation process.
|
||||||
|
## - 4 Also log hexadecimal and ASCII dump of complete transmission after STARTTLS.
|
||||||
|
## -
|
||||||
|
smtpd_tls_loglevel = 1
|
||||||
|
smtp_tls_loglevel = 1
|
||||||
|
|
||||||
|
smtpd_tls_cert_file = $_TLS_CERT_FILE
|
||||||
|
smtpd_tls_key_file = $_TLS_KEY_FILE
|
||||||
|
|
||||||
|
## - File with DH parameters that the Postfix SMTP server should use with EDH ciphers.
|
||||||
|
## -
|
||||||
|
## - Dont't forget to create it, e.g with openssl:
|
||||||
|
## - openssl dhparam -out /etc/postfix/ssl/dh_1024.pem -2 1024
|
||||||
|
## -
|
||||||
|
#smtpd_tls_dh1024_param_file = /etc/postfix/ssl/dh_1024.pem
|
||||||
|
## - also possible to use 2048 key with that parameter
|
||||||
|
## -
|
||||||
|
smtpd_tls_dh1024_param_file = /etc/postfix/ssl/dh_2048.pem
|
||||||
|
|
||||||
|
## - File with DH parameters that the Postfix SMTP server should use with EDH ciphers.
|
||||||
|
## -
|
||||||
|
## - Dont't forget to create it, e.g with openssl:
|
||||||
|
## - openssl dhparam -out /etc/postfix/ssl/dh_512.pem -2 512
|
||||||
|
## -
|
||||||
|
smtpd_tls_dh512_param_file = /etc/postfix/ssl/dh_512.pem
|
||||||
|
|
||||||
|
|
||||||
|
## - File containing CA certificates of root CAs trusted to sign either remote SMTP
|
||||||
|
## - server certificates or intermediate CA certificates. These are loaded into
|
||||||
|
## - memory !! BEFORE !! the smtp(8) client enters the chroot jail.
|
||||||
|
## -
|
||||||
|
smtp_tls_CAfile = $_TLS_CA_FILE
|
||||||
|
|
||||||
|
## - Directory with PEM format certificate authority certificates that the Postfix SMTP
|
||||||
|
## - client uses to verify a remote SMTP server certificate. Don't forget to create the
|
||||||
|
## - necessary "hash" links with, for example, "
|
||||||
|
## - $OPENSSL_HOME/bin/c_rehash /etc/postfix/certs".
|
||||||
|
## -
|
||||||
|
## - !! Note !!
|
||||||
|
## - To use this option in chroot mode, this directory (or a copy) must be inside
|
||||||
|
## - the chroot jail.
|
||||||
|
## -
|
||||||
|
## - Note that a chrooted daemon resolves all filenames relative to the Postfix
|
||||||
|
## - queue directory (/var/spool/postfix)
|
||||||
|
## -
|
||||||
|
#smtpd_tls_CApath = /etc/postfix/certs
|
||||||
|
|
||||||
|
|
||||||
|
# Disable SSLv2 SSLv3 - Postfix SMTP server
|
||||||
|
#
|
||||||
|
# List of TLS protocols that the Postfix SMTP server will exclude or
|
||||||
|
# include with opportunistic TLS encryption.
|
||||||
|
smtpd_tls_protocols = !SSLv2, !SSLv3
|
||||||
|
#
|
||||||
|
# The SSL/TLS protocols accepted by the Postfix SMTP server
|
||||||
|
# with mandatory TLS encryption.
|
||||||
|
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
|
||||||
|
|
||||||
|
|
||||||
|
# Disable SSLv2 SSLv3 - Postfix SMTP client
|
||||||
|
#
|
||||||
|
# List of TLS protocols that the Postfix SMTP client will exclude or
|
||||||
|
# include with opportunistic TLS encryption.
|
||||||
|
smtp_tls_protocols = !SSLv2, !SSLv3
|
||||||
|
#
|
||||||
|
# List of SSL/TLS protocols that the Postfix SMTP client will use
|
||||||
|
# with mandatory TLS encryption
|
||||||
|
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
|
||||||
|
|
||||||
|
|
||||||
|
## - Activate des "Ephemeral Elliptic Curve Diffie-Hellman" (EECDH) key exchange
|
||||||
|
## - openssl > 1.0
|
||||||
|
## -
|
||||||
|
smtpd_tls_eecdh_grade = strong
|
||||||
|
|
||||||
|
# standard list cryptographic algorithm
|
||||||
|
tls_preempt_cipherlist = yes
|
||||||
|
|
||||||
|
# Disable ciphers which are less than 256-bit:
|
||||||
|
#
|
||||||
|
#smtpd_tls_mandatory_ciphers = high
|
||||||
|
#
|
||||||
|
# opportunistic
|
||||||
|
smtpd_tls_ciphers = high
|
||||||
|
|
||||||
|
|
||||||
|
# Exclude ciphers
|
||||||
|
#smtpd_tls_exclude_ciphers =
|
||||||
|
# RC4
|
||||||
|
# aNULL
|
||||||
|
# SEED-SHA
|
||||||
|
# EXP
|
||||||
|
# MD5
|
||||||
|
smtpd_tls_exclude_ciphers =
|
||||||
|
aNULL
|
||||||
|
eNULL
|
||||||
|
EXPORT
|
||||||
|
DES
|
||||||
|
RC4
|
||||||
|
MD5
|
||||||
|
PSK
|
||||||
|
aECDH
|
||||||
|
EDH-DSS-DES-CBC3-SHA
|
||||||
|
EDH-RSA-DES-CDC3-SHA
|
||||||
|
KRB5-DE5, CBC3-SHA
|
||||||
|
|
||||||
|
|
||||||
|
smtpd_tls_session_cache_database = btree:\${data_directory}/smtpd_scache
|
||||||
|
smtp_tls_session_cache_database = btree:\${data_directory}/smtp_scache
|
||||||
|
|
||||||
|
EOF
|
||||||
|
echo_ok
|
||||||
|
|
||||||
|
echononl " Configure SASL authentification"
|
||||||
|
if $SASL_AUTH ; then
|
||||||
|
|
||||||
|
_failed=false
|
||||||
|
echo "[$RELAY_HOST] ${SASL_USER}@${RELAY_HOST}:$SASL_PASS" > /etc/postfix/sasl_passwd
|
||||||
|
if [[ "$?" != "0" ]]; then
|
||||||
|
error "Setting \"/etc/postfix/sasl_passwd\" failed! "
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
chown root:root /etc/postfix/sasl_passwd
|
||||||
|
if [[ "$?" != "0" ]]; then
|
||||||
|
error "Setting ownership of \"/etc/postfix/sasl_passwd\" failed! "
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
chmod 600 /etc/postfix/sasl_passwd
|
||||||
|
if [[ "$?" != "0" ]]; then
|
||||||
|
error "Setting permissions on \"/etc/postfix/sasl_passwd\" failed! "
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
postmap /etc/postfix/sasl_passwd
|
||||||
|
chown root:root /etc/postfix/sasl_passwd.db
|
||||||
|
if [[ "$?" != "0" ]]; then
|
||||||
|
error "Creating \"/etc/postfix/sasl_passwd\" failed! "
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
chown root:root /etc/postfix/sasl_passwd.db
|
||||||
|
if [[ "$?" != "0" ]]; then
|
||||||
|
error "Setting ownership of \"/etc/postfix/sasl_passwd.db\" failed! "
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
if $_failed ; then
|
||||||
|
echo_failed
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
## - /etc/mailname
|
||||||
|
## -
|
||||||
|
echononl " Set \"/etc/mailname\""
|
||||||
|
echo $HOSTNAME > /etc/mailname
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
|
||||||
|
## - /etc/aliases
|
||||||
|
## -
|
||||||
|
echononl " Adjust \"/etc/aliases\""
|
||||||
|
cat << EOF > /etc/aliases
|
||||||
|
# See man 5 aliases for format
|
||||||
|
mailer-daemon: postmaster
|
||||||
|
postmaster: root
|
||||||
|
nobody: root
|
||||||
|
hostmaster: root
|
||||||
|
usenet: root
|
||||||
|
news: root
|
||||||
|
webmaster: root
|
||||||
|
www: root
|
||||||
|
ftp: root
|
||||||
|
abuse: root
|
||||||
|
noc: root
|
||||||
|
security: root
|
||||||
|
|
||||||
|
do-not-reply: /dev/null
|
||||||
|
|
||||||
|
root: $ADMIN_EMAIL
|
||||||
|
EOF
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
## - create directory for certificates and copy certificates
|
||||||
|
## - and coresponding keys to /etc/postfix/ssl/
|
||||||
|
## -
|
||||||
|
echononl " Create directory for certificates \"/etc/postfix/ssl\""
|
||||||
|
if [[ -d "/etc/postfix/ssl" ]] ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
mkdir -p /etc/postfix/ssl
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
## - generate DH parameters that the Postfix SMTP server should use
|
||||||
|
## - with EDH ciphers (length 512 and 1024
|
||||||
|
## -
|
||||||
|
echononl " Generate DH key length=512 \"/etc/postfix/ssl/dh_512.pem\""
|
||||||
|
if [ ! -f /etc/postfix/ssl/dh_512.pem ]; then
|
||||||
|
openssl dhparam -out /etc/postfix/ssl/dh_512.pem -2 512 > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
echononl " Generate DH key length=1024 \"/etc/postfix/ssl/dh_1024.pem\""
|
||||||
|
if [ ! -f /etc/postfix/ssl/dh_1024.pem ]; then
|
||||||
|
openssl dhparam -out /etc/postfix/ssl/dh_1024.pem -2 1024 > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
echononl " Generate DH key length=2048 \"/etc/postfix/ssl/dh_2048.pem\""
|
||||||
|
if [ ! -f /etc/postfix/ssl/dh_2048.pem ]; then
|
||||||
|
openssl dhparam -out /etc/postfix/ssl/dh_2048.pem -2 2048 > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
echononl " Create Symlink \"$_TLS_CERT_FILE\""
|
||||||
|
if [ ! -h "$_TLS_CERT_FILE" ]; then
|
||||||
|
ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem $_TLS_CERT_FILE
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
echononl " Create Symlink \"$_TLS_KEY_FILE\""
|
||||||
|
if [ ! -h "$_TLS_KEY_FILE" ]; then
|
||||||
|
ln -s /etc/ssl/private/ssl-cert-snakeoil.key $_TLS_KEY_FILE
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
## - rebuld alias database
|
||||||
|
## -
|
||||||
|
echononl " Rebuld alias database"
|
||||||
|
newaliases > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
|
||||||
|
## - restart postfix
|
||||||
|
## -
|
||||||
|
echononl " Restart postfix"
|
||||||
|
if $systemd_exists ; then
|
||||||
|
systemctl restart postfix > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
/etc/init.d/postfix restart > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
## - Omitt logging into system.log
|
||||||
|
## -
|
||||||
|
echononl " Create \"/etc/rsyslog.d/postfix.conf\""
|
||||||
|
cat << EOF >> /etc/rsyslog.d/postfix.conf
|
||||||
|
|
||||||
|
#
|
||||||
|
# Logging for the mail system. Split it up so that
|
||||||
|
# it is easy to write scripts to parse these files.
|
||||||
|
#
|
||||||
|
mail.info -/var/log/mail.info
|
||||||
|
mail.warn -/var/log/mail.warn
|
||||||
|
mail.err /var/log/mail.err
|
||||||
|
|
||||||
|
mail.* -/var/log/mail.log
|
||||||
|
& ~
|
||||||
|
EOF
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl " Restart rsyslog daemon"
|
||||||
|
if $systemd_exists ; then
|
||||||
|
systemctl restart rsyslog > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
/etc/init.d/rsyslog restart > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]] ; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
exit
|
2978
install_postfixadmin.sh
Executable file
2978
install_postfixadmin.sh
Executable file
File diff suppressed because it is too large
Load Diff
3030
install_roundcube.sh
Executable file
3030
install_roundcube.sh
Executable file
File diff suppressed because it is too large
Load Diff
3223
install_update_dovecot.sh
Executable file
3223
install_update_dovecot.sh
Executable file
File diff suppressed because it is too large
Load Diff
572
upgrade_roundcube.sh
Executable file
572
upgrade_roundcube.sh
Executable file
@ -0,0 +1,572 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
clear
|
||||||
|
echo -e "\n \033[32mStart script for upgrading Roundcube Webmailer..\033[m"
|
||||||
|
|
||||||
|
## -----------------------------------------------------------------
|
||||||
|
## ----------------------------------------------------------------
|
||||||
|
## ---
|
||||||
|
## --- For configurations see file conf/install_upgrade_roundcube.conf
|
||||||
|
## ---
|
||||||
|
## --- Dont make changes here!
|
||||||
|
## ---
|
||||||
|
## -----------------------------------------------------------------
|
||||||
|
## -----------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# -------------
|
||||||
|
# - Settings
|
||||||
|
# -------------
|
||||||
|
|
||||||
|
_src_base_dir="$(realpath $(dirname $0))"
|
||||||
|
conf_file="${_src_base_dir}/conf/install_upgrade_roundcube.conf"
|
||||||
|
curdir=`pwd`
|
||||||
|
|
||||||
|
log_file="$(mktemp)"
|
||||||
|
tmp_dir="$(mktemp -d)"
|
||||||
|
backup_date="$(date +%Y-%m-%d-%H%M)"
|
||||||
|
|
||||||
|
crontab_backup_file="/root/crontab-root.${backup_date}"
|
||||||
|
|
||||||
|
|
||||||
|
# -------------
|
||||||
|
# - Functions
|
||||||
|
# -------------
|
||||||
|
|
||||||
|
clean_up() {
|
||||||
|
|
||||||
|
# Perform program exit housekeeping
|
||||||
|
rm -f "$log_file"
|
||||||
|
rm -rf "$tmp_dir"
|
||||||
|
exit $1
|
||||||
|
}
|
||||||
|
|
||||||
|
echononl(){
|
||||||
|
echo X\\c > /tmp/shprompt$$
|
||||||
|
if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then
|
||||||
|
echo "$*\\c" 1>&2
|
||||||
|
else
|
||||||
|
echo -e -n "$*" 1>&2
|
||||||
|
fi
|
||||||
|
rm /tmp/shprompt$$
|
||||||
|
}
|
||||||
|
|
||||||
|
fatal(){
|
||||||
|
echo ""
|
||||||
|
echo -e "\t[ \033[31m\033[1mFatal\033[m ]: $*"
|
||||||
|
echo ""
|
||||||
|
echo -e "\t\033[31m\033[1mInstalllation wird abgebrochen\033[m"
|
||||||
|
echo ""
|
||||||
|
clean_up 1
|
||||||
|
}
|
||||||
|
|
||||||
|
error(){
|
||||||
|
echo ""
|
||||||
|
echo -e "\t[ \033[31m\033[1mFehler\033[m ]: $*"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
warn (){
|
||||||
|
echo ""
|
||||||
|
echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
info (){
|
||||||
|
echo ""
|
||||||
|
echo -e "\t[ \033[32m\033[1mInfo\033[m ]: $*"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
echo_ok() {
|
||||||
|
echo -e "\033[85G[ \033[32mok\033[m ]"
|
||||||
|
}
|
||||||
|
echo_failed(){
|
||||||
|
echo -e "\033[85G[ \033[1;31mfailed\033[m ]"
|
||||||
|
}
|
||||||
|
echo_skipped() {
|
||||||
|
echo -e "\033[85G[ \033[30m\033[1mskipped\033[m ]"
|
||||||
|
}
|
||||||
|
echo_not_yet_implemented(){
|
||||||
|
echo -e "\033[85G[ \033[30m\033[1mnot yet implemented\033[m ]"
|
||||||
|
}
|
||||||
|
|
||||||
|
trap clean_up SIGHUP SIGINT SIGTERM
|
||||||
|
|
||||||
|
|
||||||
|
# - Support systemd ?
|
||||||
|
# -
|
||||||
|
if [[ "X$(which systemd)" = "X" ]]; then
|
||||||
|
SYSTEMD_EXISTS=false
|
||||||
|
else
|
||||||
|
SYSTEMD_EXISTS=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DEFAULT_DB_HOST="localhost"
|
||||||
|
DEFAULT_DB_NAME="roundcubemail"
|
||||||
|
DEFAULT_DB_USER="roundcube"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echononl " Include Configuration file.."
|
||||||
|
if [[ ! -f $conf_file ]]; then
|
||||||
|
echo_failed
|
||||||
|
fatal "Missing configuration file '$conf_file'"
|
||||||
|
else
|
||||||
|
source $conf_file
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ -n "$WEBSITE_NAME" ]] || fatal "Website's name (WEBSITE_NAME) not present!"
|
||||||
|
|
||||||
|
DEFAULT_WEBSITE_BASEDIR="/var/www/${WEBSITE_NAME}"
|
||||||
|
|
||||||
|
[[ -n "$WEBSITE_BASEDIR" ]] || WEBSITE_BASEDIR=$DEFAULT_WEBSITE_BASEDIR
|
||||||
|
CUR_INSTALL_DIR="$(realpath "${WEBSITE_BASEDIR}/htdocs")"
|
||||||
|
|
||||||
|
if [[ ! -d "$CUR_INSTALL_DIR" ]] ; then
|
||||||
|
fatal "No current installation of roundcube found!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ -n "$DB_TYPE" ]] || fatal "Database Type of Roundcube Database (DB_TYPE) not present!"
|
||||||
|
[[ -n "$DB_HOST" ]] || DB_HOST="$DEFAULT_DB_HOST"
|
||||||
|
[[ -n "$DB_NAME" ]] || DB_NAME="$DEFAULT_DB_NAME"
|
||||||
|
[[ -n "$DB_USER" ]] || DB_USER="$DEFAULT_DB_USER"
|
||||||
|
|
||||||
|
[[ -n "$MYSQL_DEBIAN_INSTALLATION" ]] || MYSQL_DEBIAN_INSTALLATION=false
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$DB_TYPE" = "postgres" -o "$DB_TYPE" = "postgresql" -o "$DB_TYPE" = "pgsql" -o "$DB_TYPE" = "psql" ];then
|
||||||
|
DB_TYPE="pgsql"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [[ "$DB_TYPE" = "mysql" ]]; then
|
||||||
|
if $MYSQL_DEBIAN_INSTALLATION ; then
|
||||||
|
[[ -n "$MYSQL_CREDENTIALS" ]] || MYSQL_CREDENTIALS="$DEFAULT_DEBIAN_MYSQL_CREDENTIALS"
|
||||||
|
else
|
||||||
|
[[ -n "$MYSQL_CREDENTIALS" ]] || MYSQL_CREDENTIALS="$DEFAULT_MYSQL_CREDENTIALS"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
[[ "$DB_TYPE" = "pgsql" ]] || fatal "Unknown Database Type '$DB_TYPE' (DB_TYPE)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo -e "\033[32m--\033[m"
|
||||||
|
echo ""
|
||||||
|
echo "Version of the Roundcube Webmailer to install"
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
ROUNDCUBE_VERSION=
|
||||||
|
while [ "X$ROUNDCUBE_VERSION" = "X" ]
|
||||||
|
do
|
||||||
|
echononl "Roundcube Version: "
|
||||||
|
read ROUNDCUBE_VERSION
|
||||||
|
if [ "X$ROUNDCUBE_VERSION" = "X" ]; then
|
||||||
|
echo -e "\n\t\033[33m\033[1mA version number is required!\033[m\n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo ""
|
||||||
|
echo -e "\033[32m--\033[m"
|
||||||
|
echo ""
|
||||||
|
NEW_INSTALL_DIR="${WEBSITE_BASEDIR}/roundcubemail-${ROUNDCUBE_VERSION}"
|
||||||
|
|
||||||
|
if [[ "$NEW_INSTALL_DIR" = "$CUR_INSTALL_DIR" ]] ; then
|
||||||
|
fatal "Version '${ROUNDCUBE_VERSION}' is already installed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
echo -e "\033[1;32mSettings for installation of \033[1;37mRoundcube Webmail\033[m"
|
||||||
|
echo ""
|
||||||
|
echo -e "\tRoundcube Version....................: $ROUNDCUBE_VERSION"
|
||||||
|
echo ""
|
||||||
|
echo -e "\tName of the Website..................: $WEBSITE_NAME"
|
||||||
|
echo ""
|
||||||
|
if [[ "$DB_TYPE" = "mysql" ]]; then
|
||||||
|
echo -e "\tDatabase type of Roundcube Database..: MySQL"
|
||||||
|
echo -e "\tMySQL from Debian Package System.....: $MYSQL_DEBIAN_INSTALLATION"
|
||||||
|
else
|
||||||
|
echo -e "\tDatabase type of Roundcube Database..: PostgreSQL"
|
||||||
|
fi
|
||||||
|
echo -e "\tHost of Roundcube Database...........: $DB_HOST"
|
||||||
|
echo -e "\tName of Roundcube Database...........: $DB_NAME"
|
||||||
|
echo -e "\tUser of Roundcube Database...........: $DB_USER"
|
||||||
|
echo -e "\tPassword of Roundcube Database.......: $DB_PASS"
|
||||||
|
if [[ "$DB_TYPE" = "mysql" ]]; then
|
||||||
|
echo -e "\tMySQL Credentials (root access)......: $MYSQL_CREDENTIALS"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
echo -e "\tCrontab backup file..................: $crontab_backup_file"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -n "Type upper case 'YES' to continue executing with this parameters: "
|
||||||
|
read OK
|
||||||
|
if [[ "$OK" = "YES" ]] ; then
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
echo -e " \033[1;32mGoing to upgrade Roundcube Webmailer \033[1;37m$network \033[m"
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
fatal "Abort by user request - Answer as not 'YES'"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$DB_TYPE" = "mysql" ]]; then
|
||||||
|
if ! mysql $MYSQL_CREDENTIALS -N -s -e \
|
||||||
|
"SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$DB_NAME'" 2>> $log_file \
|
||||||
|
| grep $DB_NAME >> $log_file 2>&1 ; then
|
||||||
|
fatal "MySQL Database '$DB_NAME' does not exit. (See Parameter 'DB_NAME')"
|
||||||
|
fi
|
||||||
|
elif [[ "$DB_TYPE" = "pgsql" ]]; then
|
||||||
|
count=$(su - postgres -c "psql -q -A -t -l" | grep -c -e "^$DB_NAME")
|
||||||
|
if [[ $count -eq 0 ]];then
|
||||||
|
fatal "PostgreSQL Database '$DB_NAME' does not exit. (See Parameter 'DB_NAME')"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
fatal "Cannot detect database type (value of DB_TYPE is neither 'mysql' nor 'pgsql')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo -e "\n\n \033[37m\033[1mCreate some Backups..\033[m\n"
|
||||||
|
|
||||||
|
echononl " Backup existing Database '$DB_NAME'"
|
||||||
|
if [[ "$DB_TYPE" = "mysql" ]]; then
|
||||||
|
echo -n " (MySQL).."
|
||||||
|
mysqldump -u$_mysql_rootuser -p$_mysql_rootpass --opt $DB_NAME > ${WEBSITE_BASEDIR}/${DB_NAME}.$backup_date 2> $log_file
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
elif [[ "$DB_TYPE" = "pgsql" ]]; then
|
||||||
|
echo -n " (PostgreSQL).."
|
||||||
|
su - postgres -c "pg_dump -c $DB_NAME" > ${WEBSITE_BASEDIR}/${DB_NAME}.$backup_date.sql 2> $log_file
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echononl " Backup existing web-directory .."
|
||||||
|
if [[ -d "$CUR_INSTALL_DIR" ]]; then
|
||||||
|
mv "$CUR_INSTALL_DIR" "${CUR_INSTALL_DIR}.$backup_date" > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fatal "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
fatal "No current installation of roundcube found!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo -e "\n\n \033[37m\033[1mDownloud/Unpack source archive..\033[m\n"
|
||||||
|
|
||||||
|
echononl " Download 'roundcubemail-${ROUNDCUBE_VERSION}'.."
|
||||||
|
if [[ ! -f "$_src_base_dir/roundcubemail-${ROUNDCUBE_VERSION}.tar.gz" ]]; then
|
||||||
|
wget -O ${_src_base_dir}/roundcubemail-${ROUNDCUBE_VERSION}.tar.gz https://github.com/roundcube/roundcubemail/releases/download/${ROUNDCUBE_VERSION}/roundcubemail-${ROUNDCUBE_VERSION}.tar.gz > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl " Remove existing source directory"
|
||||||
|
if [[ -d "${_src_base_dir}/roundcubemail-${ROUNDCUBE_VERSION}" ]]; then
|
||||||
|
rm -rf "${_src_base_dir}/roundcubemail-${ROUNDCUBE_VERSION}" > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echononl " Unpack roundcube source archive.."
|
||||||
|
gunzip < ${_src_base_dir}/roundcubemail-${ROUNDCUBE_VERSION}.tar.gz | tar -C ${_src_base_dir} -xf - > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fatal "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "\n\n \033[37m\033[1mSome pre-installation tasks..\033[m\n"
|
||||||
|
|
||||||
|
|
||||||
|
## - Disable crontab for user root
|
||||||
|
## -
|
||||||
|
echononl " Backup crontab"
|
||||||
|
echo "" >> ${logdir}/main.log
|
||||||
|
echo "crontab -u root -l > $crontab_backup_file" >> ${logdir}/main.log
|
||||||
|
crontab -u root -l >> $crontab_backup_file 2>> ${logdir}/main.log
|
||||||
|
if [[ "$?" = "0" ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl " Disable crontab for user root"
|
||||||
|
echo "" >> ${logdir}/main.log
|
||||||
|
echo "crontab -r -u root" >> ${logdir}/main.log
|
||||||
|
crontab -r -u root >> ${logdir}/main.log 2>&1
|
||||||
|
if [[ "$?" = "0" ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echononl " Stop Apache Webserver.."
|
||||||
|
if $SYSTEMD_EXISTS ; then
|
||||||
|
systemctl stop apache2
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fatal "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
/etc/init.d/apache2 stop
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fatal "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# - Determin PHP of all installed versions
|
||||||
|
# -
|
||||||
|
echononl "\tGet major version of all installed PHP versions"
|
||||||
|
php_major_versions="$(find /usr/local/ -maxdepth 1 -mindepth 1 -type l -name "php-*" -print | cut -d "-" -f2 | sort)"
|
||||||
|
if [[ -z "$php_major_versions" ]]; then
|
||||||
|
echo_failed
|
||||||
|
error "Getting version numbers of installed PHP versions failed! No installed PHP versiond found!"
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
|
||||||
|
# - Stop all PHP FPM engines
|
||||||
|
# -
|
||||||
|
if [[ -n "$php_major_versions" ]]; then
|
||||||
|
for _ver in $php_major_versions ; do
|
||||||
|
echononl " Stop PHP FPM engine v${_ver}.."
|
||||||
|
if [[ -f "/etc/init.d/php-${_ver}-fpm" ]]; then
|
||||||
|
/etc/init.d/php-${_ver}-fpm stop > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
elif [[ -f "/etc/systemd/system/php-${_ver}-fpm.service" ]] ; then
|
||||||
|
systemctl stop php-${_ver}-fpm > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "\n\n \033[37m\033[1mUgrade Roundcube Webmail..\033[m\n"
|
||||||
|
|
||||||
|
echononl " Copy current web-directory into a the new one.."
|
||||||
|
cp -a "${CUR_INSTALL_DIR}.$backup_date" "${WEBSITE_BASEDIR}/roundcubemail-${ROUNDCUBE_VERSION}" > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fatal "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echononl " Set actual timestamp to the new web-directory"
|
||||||
|
touch -t "$(date +%Y%m%d%H%M.%S)" "${WEBSITE_BASEDIR}/roundcubemail-${ROUNDCUBE_VERSION}" > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fatal "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echononl " Change into new roundcube source directory"
|
||||||
|
cd "${_src_base_dir}/roundcubemail-${ROUNDCUBE_VERSION}" > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fatal "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl " Create log-directory for update log file"
|
||||||
|
if [[ ! -d "${_src_base_dir}/log" ]]; then
|
||||||
|
mkdir "${_src_base_dir}/log" > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fatal "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo " Update the the roundcube web-directory to version '${ROUNDCUBE_VERSION}'"
|
||||||
|
echononl " See: ${_src_base_dir}/log/update_roundcube-${ROUNDCUBE_VERSION}.${backup_date}.log"
|
||||||
|
echo "y" | ${_src_base_dir}/roundcubemail-${ROUNDCUBE_VERSION}/bin/installto.sh "${WEBSITE_BASEDIR}/roundcubemail-${ROUNDCUBE_VERSION}" > ${_src_base_dir}/log/update_roundcube-${ROUNDCUBE_VERSION}.${backup_date}.log 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echononl " Change into new roundcube web directory"
|
||||||
|
cd "${WEBSITE_BASEDIR}/roundcubemail-${ROUNDCUBE_VERSION}" > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fatal "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl " Update dependencies by running 'php composer.phar update --no-dev'"
|
||||||
|
php composer.phar update --no-dev > ${_src_base_dir}/log/update_roundcube-${ROUNDCUBE_VERSION}-dependencies.${backup_date}.log 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${_src_base_dir}/log/update_roundcube-${ROUNDCUBE_VERSION}-dependencies.${backup_date}.log)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl " Index build-in addressbook"
|
||||||
|
${WEBSITE_BASEDIR}/roundcubemail-${ROUNDCUBE_VERSION}/bin/indexcontacts.sh > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
_failed=false
|
||||||
|
echononl " Symlink DocumentRoot to the new installation directory.."
|
||||||
|
if [[ -h "${WEBSITE_BASEDIR}/htdocs" ]]; then
|
||||||
|
rm "${WEBSITE_BASEDIR}/htdocs" > $log_file 2>&1
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
elif [[ -f "${WEBSITE_BASEDIR}/htdocs" ]]; then
|
||||||
|
mv "${WEBSITE_BASEDIR}/htdocs" "${WEBSITE_BASEDIR}/htdocs/.$backup_date" > $log_file 2>&1
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
ln -s "roundcubemail-${ROUNDCUBE_VERSION}" "${WEBSITE_BASEDIR}/htdocs" >> $log_file 2>&1
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
if $_failed ; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo -e "\n\n \033[37m\033[1mSome post-installation tasks..\033[m\n"
|
||||||
|
|
||||||
|
# - Start all PHP FPM engines
|
||||||
|
# -
|
||||||
|
if [[ -n "$php_major_versions" ]]; then
|
||||||
|
for _ver in $php_major_versions ; do
|
||||||
|
echononl " Start PHP FPM engine v${_ver}.."
|
||||||
|
if [[ -f "/etc/init.d/php-${_ver}-fpm" ]]; then
|
||||||
|
/etc/init.d/php-${_ver}-fpm start > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
elif [[ -f "/etc/systemd/system/php-${_ver}-fpm.service" ]] ; then
|
||||||
|
systemctl start php-${_ver}-fpm > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# - Start Apache Webserver
|
||||||
|
# -
|
||||||
|
echononl " Start Apache Webserver.."
|
||||||
|
if $SYSTEMD_EXISTS ; then
|
||||||
|
systemctl start apache2 > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fatal "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
/etc/init.d/apache2 start> $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
fatal "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echononl " Renstall previously saved crontab from '$crontab_backup_file'.."
|
||||||
|
crontab $crontab_backup_file > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl " Delete previously saved crontab file '$crontab_backup_file'.."
|
||||||
|
rm "$crontab_backup_file" > $log_file 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat $log_file)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
clean_up 0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user