# sieve filtering
dovecot-lmtpd
dovecot-sieve
+# to funnel mail from additional server
+fetchmail
--- /dev/null
+[Unit]
+Description=Run plom's fetchmail
+
+[Service]
+Type=oneshot
+User=plom
+# fetchmail returns 1 when no new mail, we want to catch that
+ExecStart=/bin/sh -c 'fetchmail || [ $? -eq 1 ]'
--- /dev/null
+[Unit]
+Description=Run pingmail check
+
+[Service]
+Type=oneshot
+User=plom
+ExecStart=/bin/sh -c '~/pingmail/pingmail check'
--- /dev/null
+[Unit]
+Description=Run fetchmail once every minute
+
+[Timer]
+OnCalendar=*-*-* *:*:00
+
+[Install]
+WantedBy=timers.target
--- /dev/null
+[Unit]
+Description=Run pingmail check once every hour
+
+[Timer]
+OnCalendar=*-*-* *:00:00
+
+[Install]
+WantedBy=timers.target
--- /dev/null
+# remove "keep" if you're sure about your setup; it keeps mails on server from getting deleted
+poll mail.example.com protocol pop3 username "foo@example.com" password "PASSWORD" ssl keep
--- /dev/null
+# place for test files whose modification times are used to track lifesigns
+testdir=$HOME'/.pingmail'
+
+# modification time is the last time a ping was sent or a lifetime received
+ping_touch=$testdir'/ping_touch'
+
+# modification time is when the count for sending checker a warning mail starts
+reminder_touch=$testdir'/reminder_touch'
+
+# how long to wait for lifesigns before sending a ping; double is time to wait
+# for a lifesign before sending a warning message to checker
+wait_time=86400
+
+# address of the checker, receives warning message after too long wait
+checker_address='bar@example.org'
+
+# address of the checked person, ping is sent here
+checked_address='foo@example.org'
+
+# content of ping message sent to checked person
+subj2checked='[pingmail] Ping!'
+msg2checked='Hi!\n
+\nThis is an automated mail ping from '$checker_address'.
+\nRespond to show that you are still alive!'
+
+# content of warning message sent to checker
+id_target='foo'
+subj2checker='[pingmail] No recent life signs from '$id_target
+reminder_time=`expr $wait_time \* 2`
+msg2checker='pingmail reporting in:\n
+\nNo life signs from '$id_target' for the last '$reminder_time' seconds.
+\nMaybe you should give them a call to check if they are okay.'
+
+# mail client command reading message body from stdin and subject from parameter
+mailclient_s='mail -s'
+
+# mailbox file to check for most recent life sign
+mbox=$HOME'/mail/foo'
+
+# to recursively search for most recent matches to $matchstring as lifesigns
+#maildir=$HOME'/mail'
+
+# pattern to search $maildir for recursively for lifesigns
+#checked_address_escaped=`echo $checked_address | sed 's/\./\\./g'`
+#matchstring='^From: .*('$checked_address_escaped'|alternate@example\.org)'
cp "${config_tree_prefix}/other_files/dovecot.sieve" /home/plom/.dovecot.sieve
chown plom:plom /home/plom/.dovecot.sieve
+cp "${config_tree_prefix}/other_files/fetchmailrc" /home/plom/.fetchmailrc
+chown plom:plom /home/plom/.fetchmailrc
+chmod 0700 /home/plom/.fetchmailrc
+cp "${config_tree_prefix}/other_files/pingmailrc" /home/plom/.pingmailrc
+chown plom:plom /home/plom/.pingmailrc
+su -lc "cd && git clone https://plomlompom.com/repos/clone/pingmail" plom
+systemctl daemon-reload
+
# To allow IMAPS access.
echo "ssl_cert = </etc/letsencrypt/live/$(hostname -f)/fullchain.pem" > /etc/dovecot/conf.d/99-ssl-certs.conf
echo "ssl_key = </etc/letsencrypt/live/$(hostname -f)/privkey.pem" >> /etc/dovecot/conf.d/99-ssl-certs.conf
#echo 'mail_privileged_group = mail' >> /etc/dovecot/conf.d/99-mail.conf
echo "plom:${password}" | chpasswd
-# Get old mail data.
+# Get old mail data, shutdown old postfix server.
if [ "${old_server}" != "" ]; then
cp "${config_tree_prefix}/setup_scripts/prepare_to_meet_server.sh" /home/plom/
- chown plom:plom /home/plom/prepare_to_meet_server.sh
+ #chown plom:plom /home/plom/prepare_to_meet_server.sh
su -lc "./prepare_to_meet_server.sh ${old_server}" plom
read -p'Hit Enter when you are done.' ignore
rm /home/plom/prepare_to_meet_server.sh
+ su -lc "scp plom@${old_server}:.dovecot.sieve ~" plom
+ su -lc "scp plom@${old_server}:.fetchmailrc ~" plom
+ su -lc "scp plom@${old_server}:.pingmailrc ~" plom
+ su -lc "ssh plom@${old_server} \"su -lc 'service postfix stop'\"" plom
cp "${config_tree_prefix}/setup_scripts/mirror_dir.sh" /home/plom/
su -lc "./mirror_dir.sh ${old_server} /home/plom/mail" plom
rm /home/plom/mirror_dir.sh
- su -lc "scp plom@${old_server}:.dovecot.sieve ~" plom
+ touch /var/mail/plom
+ chown plom:mail /var/mail/plom
+ chmod 0600 /var/mail/plom
su -lc "scp plom@${old_server}:/var/mail/plom /var/mail/plom" plom
- su -lc "ssh plom@${old_server} \"su -lc 'service postfix stop'\"" plom
fi
service opendkim restart