Initial commit - merge old projekts 'amavisd-new/', 'dovecot/', 'postfix', 'postfixadmin' and 'roundcube'.
This commit is contained in:
		
							
								
								
									
										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 | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user