fad4bd2425419929bd9e6e1d5eb428fd02844eb8

Author
zertrin <zertrin@gmail.com>
Committer
zertrin <zertrin@gmail.com>
Date

Message

Full rework of email handling

Diff

This diff is truncated to protect this page.

  1diff --git a/duplicity-backup.sh b/duplicity-backup.sh
  2index ef7aa12db76448a8c4823015d68a82e645daedb3..dd9c5a525887704cb110f3abab0d936c43f14903 100755
  3--- a/duplicity-backup.sh
  4+++ b/duplicity-backup.sh
  5@@ -336,47 +336,82 @@ check_logdir()
  6   fi
  7 }
  8 
  9+mailcmd_sendmail() {
 10+  # based on http://linux.die.net/man/8/sendmail.sendmail
 11+  echo -e "From: ${EMAIL_FROM}\nSubject: ${EMAIL_SUBJECT}\n" | cat - "${LOGFILE}" | ${MAILCMD} "${EMAIL_TO}"
 12+}
 13+mailcmd_ssmtp() {
 14+  # based on http://linux.die.net/man/8/ssmtp
 15+  echo -e "From: ${EMAIL_FROM}\nSubject: ${EMAIL_SUBJECT}\n" | cat - "${LOGFILE}" | ${MAILCMD} "${EMAIL_TO}"
 16+}
 17+mailcmd_msmtp() {
 18+  # based on http://manpages.ubuntu.com/manpages/precise/en/man1/msmtp.1.html
 19+  echo -e "Subject: ${EMAIL_SUBJECT}\n" | cat - "${LOGFILE}" | ${MAILCMD} -f "${EMAIL_FROM}" -- "${EMAIL_TO}"
 20+}
 21+mailcmd_bsd_mailx() {
 22+  # based on http://man.he.net/man1/bsd-mailx
 23+  ${MAILCMD} -s "${EMAIL_SUBJECT}" -a "From: ${EMAIL_FROM}" "${EMAIL_TO}" < "${LOGFILE}"
 24+}
 25+mailcmd_heirloom_mailx() {
 26+  # based on http://heirloom.sourceforge.net/mailx/mailx.1.html
 27+  ${MAILCMD} -s "${EMAIL_SUBJECT}" -S from="${EMAIL_FROM}" "${EMAIL_TO}" < "${LOGFILE}"
 28+}
 29+mailcmd_nail() {
 30+  # based on http://linux.die.net/man/1/nail
 31+  ${MAILCMD} -s "${EMAIL_SUBJECT}" -r "${EMAIL_FROM}" "${EMAIL_TO}" < "${LOGFILE}"
 32+}
 33+mailcmd_else() {
 34+  mailcmd_sendmail
 35+}
 36+
 37 email_logfile()
 38 {
 39   if [ ! -z "${EMAIL_TO}" ]; then
 40+
 41       MAILCMD=$(which "${MAIL}")
 42+      MAILCMD_REALPATH=$(readlink -e "${MAILCMD}")
 43+      MAILCMD_BASENAME=${MAILCMD_REALPATH##*/}
 44+
 45       if [ ! -x "${MAILCMD}" ]; then
 46           echo -e "Email couldn't be sent. ${MAIL} not available." >> "${LOGFILE}"
 47       else
 48-          EMAIL_SUBJECT=${EMAIL_SUBJECT:="duplicity-backup alert ${LOG_FILE}"}
 49-          if [ "${MAIL}" = "ssmtp" ]; then
 50-            echo """Subject: ${EMAIL_SUBJECT}""" | cat - "${LOGFILE}" | ${MAILCMD} -s "${EMAIL_TO}"
 51-          elif [ "${MAIL}" = "msmtp" ]; then
 52-            echo """Subject: ${EMAIL_SUBJECT}""" | cat - "${LOGFILE}" | ${MAILCMD} "${EMAIL_TO}"
 53-          elif [ "${MAIL}" = "mailx" ]; then
 54-            EMAIL_FROM=${EMAIL_FROM:+"-r ${EMAIL_FROM}"}
 55-            ${MAILCMD} -s """${EMAIL_SUBJECT}""" "${EMAIL_FROM}" "${EMAIL_TO}" < "${LOGFILE}"
 56-          elif [ "${MAIL}" = "mail" ]; then
 57-            case $(uname) in
 58-              FreeBSD|Darwin|DragonFly|OpenBSD)
 59-                ${MAILCMD} -s """${EMAIL_SUBJECT}""" "${EMAIL_TO}" -- < "${LOGFILE}"
 60-                ;;
 61-              *)
 62-               ${MAILCMD} -s """${EMAIL_SUBJECT}""" "${EMAIL_FROM}" "${EMAIL_TO}" -- -f "${EMAIL_FROM}" < "${LOGFILE}"
 63-               ;;
 64-            esac
 65-          elif [[ "${MAIL}" = "sendmail" ]]; then
 66-            (echo """Subject: ${EMAIL_SUBJECT}""" ; cat "${LOGFILE}") | ${MAILCMD} -f "${EMAIL_FROM}" "${EMAIL_TO}"
 67-          elif [ "${MAIL}" = "nail" ]; then
 68-            ${MAILCMD} -s """${EMAIL_SUBJECT}""" "${EMAIL_FROM}" "${EMAIL_TO}" < "${LOGFILE}"
 69-          else
 70-            ${MAILCMD} """${EMAIL_SUBJECT}""" "${EMAIL_FROM}" "${EMAIL_TO}" < "${LOGFILE}"
 71-          fi
 72-          echo -e "Email alert sent to ${EMAIL_TO} using ${MAIL}" >> "${LOGFILE}"
 73+          EMAIL_SUBJECT=${EMAIL_SUBJECT:="duplicity-backup ${BACKUP_STATUS:-"ERROR"} [${HOSTNAME}] ${LOG_FILE}"}
 74+          case ${MAIL} in
 75+            ssmtp)
 76+              mailcmd_ssmtp;;
 77+            msmtp)
 78+              mailcmd_msmtp;;
 79+            mail|mailx)
 80+              case ${MAILCMD_BASENAME} in
 81+                bsd-mailx)
 82+                  mailcmd_bsd_mailx;;
 83+                heirloom-mailx)
 84+                  mailcmd_heirloom_mailx;;
 85+                *)
 86+                  mailcmd_else;;
 87+              esac
 88+              ;;
 89+            sendmail)
 90+              mailcmd_sendmail;;
 91+            nail)
 92+              mailcmd_nail;;
 93+            *)
 94+              mailcmd_else;;
 95+          esac
 96+
 97+          echo -e "Email notification sent to ${EMAIL_TO} using ${MAIL}" >> "${LOGFILE}"
 98       fi
 99   fi
100 }
101 
102 send_notification()
103 {
104+  NOTIFICATION_CONTENT="duplicity-backup ${BACKUP_STATUS:-"ERROR"} [${HOSTNAME}] - \`${LOGFILE}\`"