Created
May 14, 2017 13:27
-
-
Save Disassembler0/498f51e8b32d208fe9fdd68a17713834 to your computer and use it in GitHub Desktop.
dovecot-archive.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
USER="[email protected]" | |
RETENTION=120 | |
ARCHIVE_ROOT="Archiv" | |
BOXES_TO_ARCHIVE=("INBOX" "Odeslaná pošta") | |
# Load all existing subfolders in BOXES_TO_ARCHIVE | |
BOXES=() | |
IFS=$'\n' | |
for BOX in ${BOXES_TO_ARCHIVE[@]}; do | |
BOXES+=($(doveadm mailbox list -u ${USER} ${BOX}*)) | |
done | |
# Set range for mails in the year preceding RETENTION | |
BEFORE=$(date -d "-${RETENTION} days" "+%Y-%m-%d") | |
SINCE="${BEFORE:0:4}-01-01" | |
# Perform for the range above as well as last 10 years | |
for YEAR in $(seq ${BEFORE:0:4} -1 $((${BEFORE:0:4}-10))); do | |
# Perform for all BOXES | |
for BOX in ${BOXES[@]}; do | |
# Check if there is anything to archive in BOX for period between BEFORE and SINCE | |
if [ $(doveadm search -u ${USER} MAILBOX ${BOX} SENTBEFORE ${BEFORE} SENTSINCE ${SINCE} | wc -l) -gt 0 ]; then | |
# Create and subscribe ARCHIVE subfolder if it doesn't exist | |
ARCHIVE="${ARCHIVE_ROOT}/${YEAR}/${BOX}" | |
doveadm mailbox status -u ${USER} messages ${ARCHIVE} >/dev/null 2>&1 | |
if [ $? -ne 0 ]; then | |
doveadm mailbox create -u ${USER} ${ARCHIVE} | |
doveadm mailbox subscribe -u ${USER} ${ARCHIVE} | |
fi | |
# Move the mails to ARCHIVE subfolder | |
doveadm move -u ${USER} ${ARCHIVE} mailbox ${BOX} SENTBEFORE ${BEFORE} SENTSINCE ${SINCE} | |
fi | |
done | |
# Move on to previous year | |
BEFORE="${YEAR}-01-01" | |
SINCE="$((${YEAR}-1))-01-01" | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment