usage() {
cat <<EOF
-Usage: ${0##*/} exim4|postfix
-Setup exim4 / postfix / dovecot
+Usage: ${0##*/}
+Setup exim4 & dovecot & related things
The minimal assumption we have is that /etc/mailpass exists
-I've had problems with postfix on debian:
-on stretch, a startup ordering issue caused all mail to fail.
-postfix changed defaults to only use ipv6 dns, causing all my mail to fail.
-I haven't gotten around to getting a non-debian exim
-setup.
-
-
-
-h|--help Print help and exit.
EOF
exit $1
}
-type=$1
-postfix() { [[ $type == postfix ]]; }
-exim() { [[ $type == exim4 ]]; }
-
-if ! exim && ! postfix; then
- usage 1
-fi
####### instructions for icedove #####
# mxport=587
# forward=ian@iankelling.org
-relayhost="[$mxhost]:$mxport" # postfix
smarthost="$mxhost::$mxport" # exim
# trisquel 8 = openvpn, debian stretch = openvpn-client
install -m 644 {-o,-g}$postmaster <(e $forward) $(eval echo ~$postmaster)/.forward
fi
-# offlineimap uses this too, it is much easier to use one location than to
-# condition it\'s config and postfix\'s config
-if [[ -f /etc/fedora-release ]]; then
- /a/exe/lnf -T ca-certificates.crt /etc/ssl/ca-bundle.trust.crt
-fi
-if postfix; then
- # dunno why, but debian installed postfix with builddep emacs
- # but I will just explicitly install it here since
- # I use it for sending mail in emacs.
- if command -v apt-get &> /dev/null; then
- debconf-set-selections <<EOF
-postfix postfix/main_mailer_type select Satellite system
-postfix postfix/mailname string $(hostname -f)
-postfix postfix/relayhost string $relayhost
-postfix postfix/root_address string $postmaster
-EOF
- if dpkg -s postfix &>/dev/null; then
- while fuser /var/lib/dpkg/lock &>/dev/null; do sleep 1; done
- dpkg-reconfigure -u -fnoninteractive postfix
- else
- pi postfix
- fi
- else
- source /a/bin/distro-functions/src/package-manager-abstractions
- pi postfix
- # Settings from reading the output when installing on debian,
- # then seeing which were different in a default install on arch.
- # I assume the same works for fedora.
- postconfin <<EOF
-mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
-mailbox_size_limit = 0
-relayhost = $relayhost
-inet_interfaces = loopback-only
-EOF
+pi openvpn
- systemctl enable postfix
- systemctl start postfix
- fi
- # i\'m assuming mail just won\'t work on systems without the sasl_passwd.
- postconfin <<'EOF'
-smtp_sasl_auth_enable = yes
-smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
-smtp_sasl_security_options = noanonymous
-smtp_tls_security_level = secure
-message_size_limit = 20480000
-smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
-inet_protocols = ipv4
-EOF
- # msg_size_limit: I ran into a log file not sending cuz of size. double from 10 to 20 meg limit
- # inet_protocols: without this, I\'ve had postfix try an ipv6 lookup then gives
- # up and fail forever. snippet from syslog: type=AAAA: Host not found, try again
-
-
- f=/etc/postfix/sasl_passwd
- install -m 600 /dev/null $f
- cat /etc/mailpass| while read -r domain port pass; do
- # format: domain port user:pass
- # mailpass is just a name i made up, since postfix and
- # exim both use a slightly crazy format to translate to
- # each other, it\'s easier to use my own format.
- printf "[%s]:%s %s" "$domain" "$port" "${pass/@/#}" >>$f
- done
- postmap hash:/etc/postfix/sasl_passwd
- # need restart instead of reload when changing
- # inet_protocols
- service postfix restart
-
-else # begin exim. has debian specific stuff for now
-
- pi openvpn
-
- if [[ -e /p/c/filesystem ]]; then
- # allow failure of these commands when our internet is down, they are likely not needed,
- # we check that a valid cert is there already.
- # to put the hostname in the known hosts
- if ! ssh -o StrictHostKeyChecking=no root@li.iankelling.org :; then
- # This just causes failure if our cert is going to expire in the next 30 days.
- # Certs I generate last 10 years.
- openssl x509 -checkend $(( 60 * 60 * 24 * 30 )) -noout -in /etc/openvpn/mail.crt
- else
- # note, man openvpn implies we could just call mail-route on vpn startup/shutdown with
- # systemd, buuut it can remake the tun device unexpectedly, i got this in the log
- # after my internet was down for a bit:
- # NOTE: Pulled options changed on restart, will need to close and reopen TUN/TAP device.
- /a/exe/vpn-mk-client-cert -b mail -n mail -s /b/ds/mail-route li.iankelling.org
- fi
+if [[ -e /p/c/filesystem ]]; then
+ # allow failure of these commands when our internet is down, they are likely not needed,
+ # we check that a valid cert is there already.
+ # to put the hostname in the known hosts
+ if ! ssh -o StrictHostKeyChecking=no root@li.iankelling.org :; then
+ # This just causes failure if our cert is going to expire in the next 30 days.
+ # Certs I generate last 10 years.
+ openssl x509 -checkend $(( 60 * 60 * 24 * 30 )) -noout -in /etc/openvpn/mail.crt
+ else
+ # note, man openvpn implies we could just call mail-route on vpn startup/shutdown with
+ # systemd, buuut it can remake the tun device unexpectedly, i got this in the log
+ # after my internet was down for a bit:
+ # NOTE: Pulled options changed on restart, will need to close and reopen TUN/TAP device.
+ /a/exe/vpn-mk-client-cert -b mail -n mail -s /b/ds/mail-route li.iankelling.org
fi
+fi
- cat >/etc/systemd/system/offlineimapsync.timer <<'EOF'
+cat >/etc/systemd/system/offlineimapsync.timer <<'EOF'
[Unit]
Description=Run offlineimap-sync once every min
WantedBy=timers.target
EOF
- cat >/etc/systemd/system/offlineimapsync.service <<EOF
+cat >/etc/systemd/system/offlineimapsync.service <<EOF
[Unit]
Description=Offlineimap sync
After=multi-user.target
ExecStart=/a/bin/log-quiet/sysd-mail-once offlineimap-sync /a/bin/distro-setup/offlineimap-sync
EOF
- cat >/etc/systemd/system/mailclean.timer <<'EOF'
+cat >/etc/systemd/system/mailclean.timer <<'EOF'
[Unit]
Description=Run mailclean daily
WantedBy=timers.target
EOF
- cat >/etc/systemd/system/mailclean.service <<EOF
+cat >/etc/systemd/system/mailclean.service <<EOF
[Unit]
Description=Delete and archive old mail files
After=multi-user.target
ExecStart=/a/bin/log-quiet/sysd-mail-once mailclean /a/bin/distro-setup/mailclean
EOF
- systemctl daemon-reload
-
- # wording of question from dpkg-reconfigure exim4-config
- # 1. internet site; mail is sent and received directly using SMTP
- # 2. mail sent by smarthost; received via SMTP or fetchmail
- # 3. mail sent by smarthost; no local mail
- # 4. local delivery only; not on a network
- # 5. no configuration at this time
- #
- # Note, I have used option 2 in the past for receiving mail
- # from lan hosts, sending external mail via another smtp server.
- #
- # Note, other than configtype, we could set all the options in
- # both types of configs without harm, they would either be
- # ignored or be disabled by other settings, but the default
- # local_interfaces definitely makes things more secure.
-
- # most of these settings get translated into settings
- # in /etc/exim4/update-exim4.conf.conf
- # how /etc/exim4/update-exim4.conf.conf translates into actual exim settings is
- # documented in man update-exim4.conf, which outputs to the config that
- # exim actually reads. except the man page is not perfect, for example,
- # it doesn't document that it sets
- # DCconfig_${dc_eximconfig_configtype}" "1"
- # which is a line from update-exim4.conf, which is a relatively short bash script.
- # mailname setting sets /etc/mailname
+systemctl daemon-reload
- debconf-set-selections <<EOF
+# wording of question from dpkg-reconfigure exim4-config
+# 1. internet site; mail is sent and received directly using SMTP
+# 2. mail sent by smarthost; received via SMTP or fetchmail
+# 3. mail sent by smarthost; no local mail
+# 4. local delivery only; not on a network
+# 5. no configuration at this time
+#
+# Note, I have used option 2 in the past for receiving mail
+# from lan hosts, sending external mail via another smtp server.
+#
+# Note, other than configtype, we could set all the options in
+# both types of configs without harm, they would either be
+# ignored or be disabled by other settings, but the default
+# local_interfaces definitely makes things more secure.
+
+# most of these settings get translated into settings
+# in /etc/exim4/update-exim4.conf.conf
+# how /etc/exim4/update-exim4.conf.conf translates into actual exim settings is
+# documented in man update-exim4.conf, which outputs to the config that
+# exim actually reads. except the man page is not perfect, for example,
+# it doesn't document that it sets
+# DCconfig_${dc_eximconfig_configtype}" "1"
+# which is a line from update-exim4.conf, which is a relatively short bash script.
+# mailname setting sets /etc/mailname
+
+debconf-set-selections <<EOF
exim4-config exim4/use_split_config boolean true
EOF
- source /a/bin/bash_unpublished/source-semi-priv
- mkdir -p /etc/exim4/conf.d/{main,transport,auth,router}
+source /a/bin/bash_unpublished/source-semi-priv
+mkdir -p /etc/exim4/conf.d/{main,transport,auth,router}
- cat >/etc/exim4/rcpt_local_acl <<'EOF'
+cat >/etc/exim4/rcpt_local_acl <<'EOF'
# Only hosts we control send to mail.iankelling.org, so make sure
# they are all authed.
# Note, if we wanted authed senders for all domains,
!authenticated = *
domains = mail.iankelling.org
EOF
- cat >/etc/exim4/data_local_acl <<'EOF'
+cat >/etc/exim4/data_local_acl <<'EOF'
# Except for the "condition =", this was
# a comment in the check_data acl. The comment about this not
# being suitable is mostly bs. The only thing related I found was to
X-Spam_report: $spam_report
EOF
- cat >/etc/exim4/conf.d/auth/29_exim4-config_auth <<'EOF'
+cat >/etc/exim4/conf.d/auth/29_exim4-config_auth <<'EOF'
# from 30_exim4-config_examples
plain_server:
.endif
EOF
- cat >/etc/exim4/conf.d/router/900_exim4-config_local_user <<'EOF'
+cat >/etc/exim4/conf.d/router/900_exim4-config_local_user <<'EOF'
### router/900_exim4-config_local_user
#################################
transport = LOCAL_DELIVERY
cannot_route_message = Unknown user
EOF
- cat >/etc/exim4/conf.d/transport/30_exim4-config_dovecot_lmtp <<'EOF'
+cat >/etc/exim4/conf.d/transport/30_exim4-config_dovecot_lmtp <<'EOF'
dovecot_lmtp:
driver = lmtp
socket = /var/run/dovecot/lmtp
batch_max = 200
EOF
- cat >/etc/exim4/conf.d/router/190_exim4-config_fsfsmarthost <<'EOF'
+cat >/etc/exim4/conf.d/router/190_exim4-config_fsfsmarthost <<'EOF'
# smarthost for fsf mail
# ian: copied from /etc/exim4/conf.d/router/200_exim4-config_primary, and added senders = and
# replaced DCsmarthost with mail.fsf.org
EOF
- #### begin mail cert setup ###
- f=/usr/local/bin/mail-cert-cron
- cat >$f <<'EOF'
+#### begin mail cert setup ###
+f=/usr/local/bin/mail-cert-cron
+cat >$f <<'EOF'
set -eE -o pipefail
trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
fi
exit 0
EOF
- chmod 755 $f
+chmod 755 $f
- cat >/etc/systemd/system/mailcert.service <<'EOF'
+cat >/etc/systemd/system/mailcert.service <<'EOF'
[Unit]
Description=Mail cert rsync
After=multi-user.target
ExecStart=/a/bin/log-quiet/sysd-mail-once mailcert /usr/local/bin/mail-cert-cron
EOF
- cat >/etc/systemd/system/mailcert.timer <<'EOF'
+cat >/etc/systemd/system/mailcert.timer <<'EOF'
[Unit]
Description=Run mail-cert once a day
[Install]
WantedBy=timers.target
EOF
- systemctl daemon-reload
- systemctl start mailcert
- systemctl restart mailcert.timer
- systemctl enable mailcert.timer
+systemctl daemon-reload
+systemctl start mailcert
+systemctl restart mailcert.timer
+systemctl enable mailcert.timer
- ##### end mailcert setup #####
+##### end mailcert setup #####
- if [[ $HOSTNAME == $MAIL_HOST ]]; then
+if [[ $HOSTNAME == $MAIL_HOST ]]; then
- debconf-set-selections <<EOF
+ debconf-set-selections <<EOF
# Mail Server configuration
# -------------------------
# Delivery method for local mail: 2
exim4-config exim4/dc_localdelivery select Maildir format in home directory
EOF
- echo mail.iankelling.org > /etc/mailname
+ echo mail.iankelling.org > /etc/mailname
- # MAIN_HARDCODE_PRIMARY_HOSTNAME might mess up the
- # smarthost config type, not sure. all other settings
- # would be unused in that config type.
- rm -f /etc/exim4/conf.d/main/000_localmacros # old filename
- cat >/etc/exim4/conf.d/main/000_local <<EOF
+ # MAIN_HARDCODE_PRIMARY_HOSTNAME might mess up the
+ # smarthost config type, not sure. all other settings
+ # would be unused in that config type.
+ rm -f /etc/exim4/conf.d/main/000_localmacros # old filename
+ cat >/etc/exim4/conf.d/main/000_local <<EOF
# enable 587 in addition to the default 25, so that
# i can send mail where port 25 is firewalled by isp
daemon_smtp_ports = 25 : 587
EOF
- ####### begin dovecot setup ########
- # based on a little google and package search, just the dovecot
- # packages we need instead of dovecot-common.
- #
- # dovecot-lmtpd is for exim to deliver to dovecot instead of maildir
- # directly. The reason to do this is to use dovecot\'s sieve, which
- # has extensions that allow it to be almost equivalent to exim\'s
- # filter capabilities, some ways probably better, some worse, and
- # sieve has the benefit of being supported in postfix and
- # proprietary/weird environments, so there is more examples on the
- # internet. I was torn about whether to do this or not, meh.
- pi dovecot-core dovecot-imapd dovecot-sieve dovecot-lmtpd
-
- # if we changed 90-sieve.conf and removed the active part of the
- # sieve option, we wouldn\'t need this, but I\'d rather not modify a
- # default config if not needed. This won\'t work as a symlink in /a/c
- # unfortunately.
- sudo -u $postmaster /a/exe/lnf -T sieve/main.sieve $(eval echo ~$postmaster)/.dovecot.sieve
-
- sed -ri -f - /etc/dovecot/conf.d/10-mail.conf <<'EOF'
+ ####### begin dovecot setup ########
+ # based on a little google and package search, just the dovecot
+ # packages we need instead of dovecot-common.
+ #
+ # dovecot-lmtpd is for exim to deliver to dovecot instead of maildir
+ # directly. The reason to do this is to use dovecot\'s sieve, which
+ # has extensions that allow it to be almost equivalent to exim\'s
+ # filter capabilities, some ways probably better, some worse, and
+ # sieve has the benefit of being supported in postfix and
+ # proprietary/weird environments, so there is more examples on the
+ # internet. I was torn about whether to do this or not, meh.
+ pi dovecot-core dovecot-imapd dovecot-sieve dovecot-lmtpd
+
+ # if we changed 90-sieve.conf and removed the active part of the
+ # sieve option, we wouldn\'t need this, but I\'d rather not modify a
+ # default config if not needed. This won\'t work as a symlink in /a/c
+ # unfortunately.
+ sudo -u $postmaster /a/exe/lnf -T sieve/main.sieve $(eval echo ~$postmaster)/.dovecot.sieve
+
+ sed -ri -f - /etc/dovecot/conf.d/10-mail.conf <<'EOF'
1i mail_location = maildir:/m/md:LAYOUT=fs:INBOX=/m/md/INBOX
/^\s*mail_location\s*=/d
EOF
- cat >/etc/dovecot/conf.d/20-lmtp.conf <<EOF
+ cat >/etc/dovecot/conf.d/20-lmtp.conf <<EOF
protocol lmtp {
#per https://wiki2.dovecot.org/Pigeonhole/Sieve/Configuration
mail_plugins = \$mail_plugins sieve
EOF
- cat >/etc/dovecot/local.conf <<'EOF'
+ cat >/etc/dovecot/local.conf <<'EOF'
# so I can use a different login that my shell login for mail. this is
# worth doing solely for the reason that if this login is compromised,
# it won't also compromise my shell password.
# auth_verbose=yes
#mail_debug=yes
EOF
- ####### end dovecot setup ########
+ ####### end dovecot setup ########
- # https://selivan.github.io/2017/12/30/systemd-serice-always-restart.html
- d=/etc/systemd/system/openvpn@mail
- mkdir -p $d
- cat >$d/override.conf <<'EOF'
+ # https://selivan.github.io/2017/12/30/systemd-serice-always-restart.html
+ d=/etc/systemd/system/openvpn@mail
+ mkdir -p $d
+ cat >$d/override.conf <<'EOF'
[Service]
Restart=always
# time to sleep before restarting a service
StartLimitInterval=0
EOF
- systemctl enable offlineimapsync.timer
- systemctl start offlineimapsync.timer
- systemctl enable mailclean.timer
- systemctl start mailclean.timer
- systemctl restart $vpn_ser@mail
- systemctl enable $vpn_ser@mail
- systemctl enable dovecot
- systemctl restart dovecot
-
- else # $HOSTNAME != $MAIL_HOST
- systemctl disable offlineimapsync.timer &>/dev/null ||:
- systemctl stop offlineimapsync.timer &>/dev/null ||:
- systemctl disable mailclean.timer &>/dev/null ||:
- systemctl stop mailclean.timer &>/dev/null ||:
- systemctl disable $vpn_ser@mail
- systemctl stop $vpn_ser@mail
- systemctl disable dovecot ||:
- systemctl stop dovecot ||:
- #
- #
- # would only exist because I wrote it i the previous condition,
- # it\'s not part of exim
- rm -f /etc/exim4/conf.d/main/000_localmacros
- debconf-set-selections <<EOF
+ systemctl enable offlineimapsync.timer
+ systemctl start offlineimapsync.timer
+ systemctl enable mailclean.timer
+ systemctl start mailclean.timer
+ systemctl restart $vpn_ser@mail
+ systemctl enable $vpn_ser@mail
+ systemctl enable dovecot
+ systemctl restart dovecot
+
+else # $HOSTNAME != $MAIL_HOST
+ systemctl disable offlineimapsync.timer &>/dev/null ||:
+ systemctl stop offlineimapsync.timer &>/dev/null ||:
+ systemctl disable mailclean.timer &>/dev/null ||:
+ systemctl stop mailclean.timer &>/dev/null ||:
+ systemctl disable $vpn_ser@mail
+ systemctl stop $vpn_ser@mail
+ systemctl disable dovecot ||:
+ systemctl stop dovecot ||:
+ #
+ #
+ # would only exist because I wrote it i the previous condition,
+ # it\'s not part of exim
+ rm -f /etc/exim4/conf.d/main/000_localmacros
+ debconf-set-selections <<EOF
exim4-config exim4/dc_eximconfig_configtype select mail sent by smarthost; no local mail
exim4-config exim4/dc_smarthost string $smarthost
# afaik, on dpkg-reconfigure noninteractive, this sets /etc/mailname if it does not exist.
# ignoring what I set here is brain dead and might change.
exim4-config exim4/mailname string $(hostname -f)
EOF
- hostname -f > /etc/mailname
+ hostname -f > /etc/mailname
- fi # end $HOSTNAME != $MAIL_HOST
+fi # end $HOSTNAME != $MAIL_HOST
- # if we already have it installed, need to reconfigure, without being prompted
- if dpkg -s exim4-config &>/dev/null; then
- # gotta remove this, otherwise the set-selections are completely
- # ignored. It woulda been nice if this was documented somewhere!
- rm -f /etc/exim4/update-exim4.conf.conf
- while fuser /var/lib/dpkg/lock &>/dev/null; do sleep 1; done
- dpkg-reconfigure -u -fnoninteractive exim4-config
- fi
+# if we already have it installed, need to reconfigure, without being prompted
+if dpkg -s exim4-config &>/dev/null; then
+ # gotta remove this, otherwise the set-selections are completely
+ # ignored. It woulda been nice if this was documented somewhere!
+ rm -f /etc/exim4/update-exim4.conf.conf
+ while fuser /var/lib/dpkg/lock &>/dev/null; do sleep 1; done
+ dpkg-reconfigure -u -fnoninteractive exim4-config
+fi
- # i have the spool directory be common to distro multi-boot, so
- # we need the uid to be the same. 608 cuz it's kind of in the middle
- # of the free system uids.
- IFS=:; read _ _ uid _ < <(getent passwd Debian-exim ||:) ||:; unset IFS
- IFS=:; read _ _ gid _ < <(getent group Debian-exim ||:) ||:; unset IFS
- if [[ ! $uid ]]; then
- # from /var/lib/dpkg/info/exim4-base.postinst, plus uid and gid options
- adduser --uid 608 --system --group --quiet --home /var/spool/exim4 \
- --no-create-home --disabled-login --force-badname Debian-exim
- elif [[ $uid != 608 ]]; then
- systemctl stop exim4 ||:
- usermod -u 608 Debian-exim
- groupmod -g 608 Debian-exim
- usermod -g 608 Debian-exim
- find / /nocow -xdev -uid $uid -exec chown -h 608 {} +
- find / /nocow -xdev -gid $gid -exec chgrp -h 608 {} +
- fi
+# i have the spool directory be common to distro multi-boot, so
+# we need the uid to be the same. 608 cuz it's kind of in the middle
+# of the free system uids.
+IFS=:; read _ _ uid _ < <(getent passwd Debian-exim ||:) ||:; unset IFS
+IFS=:; read _ _ gid _ < <(getent group Debian-exim ||:) ||:; unset IFS
+if [[ ! $uid ]]; then
+ # from /var/lib/dpkg/info/exim4-base.postinst, plus uid and gid options
+ adduser --uid 608 --system --group --quiet --home /var/spool/exim4 \
+ --no-create-home --disabled-login --force-badname Debian-exim
+elif [[ $uid != 608 ]]; then
+ systemctl stop exim4 ||:
+ usermod -u 608 Debian-exim
+ groupmod -g 608 Debian-exim
+ usermod -g 608 Debian-exim
+ find / /nocow -xdev -uid $uid -exec chown -h 608 {} +
+ find / /nocow -xdev -gid $gid -exec chgrp -h 608 {} +
+fi
- # light version of exim does not have sasl auth support.
- pi exim4-daemon-heavy spamassassin spf-tools-perl
+# light version of exim does not have sasl auth support.
+pi exim4-daemon-heavy spamassassin spf-tools-perl
- ##### begin spamassassin config
- systemctl enable spamassassin
- # per readme.debian
- sed -i '/^\s*CRON\s*=/d' /etc/default/spamassassin
- e CRON=1 >>/etc/default/spamassassin
- # just noticed this in the config file, seems like a good idea.
- sed -i '/^\s*NICE\s*=/d' /etc/default/spamassassin
- e 'NICE="--nicelevel 15"' >>/etc/default/spamassassin
- systemctl start spamassassin
- systemctl reload spamassassin
+##### begin spamassassin config
+systemctl enable spamassassin
+# per readme.debian
+sed -i '/^\s*CRON\s*=/d' /etc/default/spamassassin
+e CRON=1 >>/etc/default/spamassassin
+# just noticed this in the config file, seems like a good idea.
+sed -i '/^\s*NICE\s*=/d' /etc/default/spamassassin
+e 'NICE="--nicelevel 15"' >>/etc/default/spamassassin
+systemctl start spamassassin
+systemctl reload spamassassin
- cat >/etc/systemd/system/spamddnsfix.service <<'EOF'
+cat >/etc/systemd/system/spamddnsfix.service <<'EOF'
[Unit]
Description=spamd dns bug fix cronjob
Type=oneshot
ExecStart=/a/bin/distro-setup/spamd-dns-fix
EOF
- # 2017-09, debian closed the bug on this saying upstream had fixed it.
- # remove this when i\'m using the newer package, ie, debian 10, or maybe
- # ubuntu 18.04.
- cat >/etc/systemd/system/spamddnsfix.timer <<'EOF'
+# 2017-09, debian closed the bug on this saying upstream had fixed it.
+# remove this when i\'m using the newer package, ie, debian 10, or maybe
+# ubuntu 18.04.
+cat >/etc/systemd/system/spamddnsfix.timer <<'EOF'
[Unit]
Description=run spamd bug fix script every 10 minutes
[Install]
WantedBy=timers.target
EOF
- systemctl daemon-reload
- systemctl restart spamddnsfix.timer
- systemctl enable spamddnsfix.timer
- #
- ##### end spamassassin config
-
+systemctl daemon-reload
+systemctl restart spamddnsfix.timer
+systemctl enable spamddnsfix.timer
+#
+##### end spamassassin config
- # https://blog.dhampir.no/content/make-exim4-on-debian-respect-forward-and-etcaliases-when-using-a-smarthost
- # i only need .forwards, so just doing that one.
- cd /etc/exim4/conf.d/router
- b=userforward_higher_priority
- # replace the router name so it is unique
- sed -r s/^\\S+:/$b:/ 600_exim4-config_userforward >175_$b
- # begin setup passwd.client
- f=/etc/exim4/passwd.client
- rm -f /etc/exim4/passwd.client
- install -m 640 -g Debian-exim /dev/null $f
- cat /etc/mailpass| while read -r domain port pass; do
- # reference: exim4_passwd_client(5)
- printf "%s:%s\n" "$domain" "$pass" >>$f
- done
- # end setup passwd.client
+# https://blog.dhampir.no/content/make-exim4-on-debian-respect-forward-and-etcaliases-when-using-a-smarthost
+# i only need .forwards, so just doing that one.
+cd /etc/exim4/conf.d/router
+b=userforward_higher_priority
+# replace the router name so it is unique
+sed -r s/^\\S+:/$b:/ 600_exim4-config_userforward >175_$b
- # by default, only 10 days of logs are kept. increase that.
- sed -ri 's/^(\s*rotate\s).*/\11000/' /etc/logrotate.d/exim4-base
+# begin setup passwd.client
+f=/etc/exim4/passwd.client
+rm -f /etc/exim4/passwd.client
+install -m 640 -g Debian-exim /dev/null $f
+cat /etc/mailpass| while read -r domain port pass; do
+ # reference: exim4_passwd_client(5)
+ printf "%s:%s\n" "$domain" "$pass" >>$f
+done
+# end setup passwd.client
- systemctl restart exim4
+# by default, only 10 days of logs are kept. increase that.
+sed -ri 's/^(\s*rotate\s).*/\11000/' /etc/logrotate.d/exim4-base
-fi #### end if exim4
+systemctl restart exim4
# /etc/alias setup is debian specific, and
# exim config sets up an /etc/alias from root to the postmaster, which i
#
# todo: I\'m suspicious of uids for Debian-exim being the same across
# distros. It would be good to test this.
-dir=/nocow/$type
-sdir=/var/spool/$type
+dir=/nocow/exim4
+sdir=/var/spool/exim4
# we only do this if our system has $dir
if [[ -e /nocow && $(readlink -f $sdir) != $dir ]]; then
- systemctl stop $type
+ systemctl stop exim4
if [[ ! -e $dir && -d $sdir ]]; then
mv $sdir $dir
fi
/a/exe/lnf -T $dir $sdir
fi
-systemctl restart $type
-systemctl enable $type
+systemctl restart exim4
+systemctl enable exim4
# MAIL_HOST also does radicale, and easier to start and stop it here
# for when MAIL_HOST changes, so radicale gets the synced files and
fi
exit 0
:
-# if I wanted the from address to be renamed and sent to a different address,
-# echo "sdx@localhost development@localhost" | sudo dd of=/etc/postfix/recipient_canonical
-# sudo postmap hash:/etc/postfix/recipient_canonical
-# sudo service postfix reload