123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- # lcmail-wizard
- # =============
- # Setup procmail filters and lcmail-wizard.py script
- # See README.md for more information
- # --------------------------------------------------
- # destination
- # -----------
- FORWARD = ${HOME}/.forward
- PMAILRC = ${HOME}/.procmailrc
- PMAILDIR = ${HOME}/.procmail
- # shell env
- # ---------
- HOSTNAME = $(shell hostname)
- HOME = $(shell echo ~)
- PWD = $(shell pwd)
- all:
- @echo "lcmail-wizard is a python script + config, so there is nothing to do."
- @echo "Try \"make install\" instead."
- init: filter-rules.rc lcmail-wizard.yml lcmail-wizard.cron
- @echo "[INFO] Customize, if you want:"
- @echo " * filter-rules.rc -> Mail filter rules"
- @echo " * lcmail-wizard.yml -> Mail auto trash days"
- @echo " * lcmail-wizard.cron -> Mail auto trash scheduler"
- filter-rules.rc:
- @echo "[INFO] Create $@ from filter-rules.def.rc"
- @cp filter-rules.def.rc $@
- lcmail-wizard.yml:
- @echo "[INFO] Create $@ from lcmail-wizard.def.yml"
- @cp lcmail-wizard.def.yml $@
- lcmail-wizard.cron:
- @echo "[INFO] Create $@ from lcmail-wizard.def.cron"
- @head -n5 lcmail-wizard.def.cron > lcmail-wizard.cron
- @printf '\nDEST="%s"\n\n' "${PWD}" >> lcmail-wizard.cron
- @tail -n2 lcmail-wizard.def.cron >> lcmail-wizard.cron
- install: init config schedule
- config:
- @echo "[INFO] Create configuration"
- @echo "[INFO] Create lcmail-wizard.py log dir"
- @mkdir -p log
- @echo "[INFO] Create .maildir structure using lcmail-wizard.py"
- @./lcmail-wizard.py --create
- @echo "[INFO] Backup ${PMAILRC} file, if present"
- @if [ -f "${PMAILRC}" ]; then mv -f "${PMAILRC}" "${PMAILRC}.orig" 2> /dev/null; fi
- @echo "[INFO] Backup ${PMAILDIR} file, if present"
- @if [ -d "${PMAILDIR}" ]; then mv -f "${PMAILDIR}" "${PMAILDIR}.orig" 2> /dev/null; fi
- @echo "[INFO] Create ${PMAILDIR} structure"
- @mkdir -p "${PMAILDIR}/log"
- @echo "[INFO] Copy procmail configuration files"
- @cp .procmailrc "${PMAILRC}"
- @cp filter-rules.rc "${PMAILDIR}/"
- @echo "[INFO] Backup ${FORWARD} file"
- @cp -a "${FORWARD}" "${FORWARD}.orig"
- @echo "[INFO] Enable procmail, rewriting ${FORWARD}"
- @cp .forward "${FORWARD}"
- @chmod 0644 "${FORWARD}"
- schedule:
- @echo "[INFO] Schedule lcmail-wizard.py using crontab"
- @if [ -f "lcmail-wizard.cron.lock" ]; then \
- echo "[WARN] Already scheduled on $(shell cat "lcmail-wizard.cron.lock" 2> /dev/null)"; \
- echo "[INFO] Here its content"; \
- ssh $(shell cat "lcmail-wizard.cron.lock" 2> /dev/null) 'crontab -l'; \
- else \
- echo "[INFO] Scheduled on ${HOSTNAME}"; \
- echo "${HOSTNAME}" >> "lcmail-wizard.cron.lock"; \
- crontab "lcmail-wizard.cron"; \
- fi
- reconfig:
- @echo "[INFO] Apply new configurations"
- @echo "[INFO] Create .maildir structure using lcmail-wizard.py"
- @./lcmail-wizard.py --create
- @echo "[INFO] Copy procmail configuration files"
- @mv -f "${PMAILDIR}/filter-rules.rc" "${PMAILDIR}/filter-rules.rc.bk" 2> /dev/null
- @cp filter-rules.rc "${PMAILDIR}/"
- uninstall: unschedule
- @echo "[INFO] Remove configuration"
- @echo "[INFO] Restore original ${FORWARD}"
- @cp -af "${FORWARD}.orig" "${FORWARD}"
- @rm -f "${FORWARD}.orig"
- @echo "[INFO] Remove procmail conf files"
- @rm -rf "${PMAILDIR}"
- @rm -f "${PMAILRC}"
- @echo "[INFO] Restore original ${PMAILRC}, if present"
- @if [ -f "${PMAILRC}.orig" ]; then mv -f "${PMAILRC}.orig" "${PMAILRC}" 2> /dev/null; fi
- @echo "[INFO] Restore original ${PMAILDIR}, if present"
- @if [ -d "${PMAILDIR}.orig" ]; then mv -f "${PMAILDIR}.orig" "${PMAILDIR}" 2> /dev/null; fi
- @echo "[WARN] Structure inside ~/.maildir not restored,"
- @echo "added dirs must be manually remove."
- unschedule:
- @echo "[INFO] Unschedule lcmail-wizard.py using crontab"
- @if [ -f "lcmail-wizard.cron.lock" ]; then \
- echo "[INFO] Disable lcmail-wizard.py schedule on $(shell cat "lcmail-wizard.cron.lock" 2> /dev/null)"; \
- echo "[INFO] Here its content"; \
- ssh $(shell cat "lcmail-wizard.cron.lock" 2> /dev/null) 'crontab -l'; \
- echo "[INFO] Remove it"; \
- ssh $(shell cat "lcmail-wizard.cron.lock" 2> /dev/null) 'crontab -r'; \
- rm -f lcmail-wizard.cron.lock; \
- else \
- echo "[WARN] None or empty cron.lock file found, proceed manually"; \
- fi
- clean:
- @echo "[INFO] Remove custom config files"
- @rm -f filter-rules.rc lcmail-wizard.yml lcmail-wizard.cron lcmail-wizard.cron.lock
- .PHONY: init filter-rules.rc lcmail-wizard.yml lcmail-wizard.cron install config schedule reconfig uninstall unschedule clean
|