# 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