diff --git a/src/bash/filter.sh b/src/bash/filter.sh index 6be24a4..0790fa8 100755 --- a/src/bash/filter.sh +++ b/src/bash/filter.sh @@ -72,18 +72,22 @@ MAX_FINAL_SIZE=2097152 # 2Mi ARCHIVE_TITLE="archive_content" ARCHIVE_MIME="text/kaz_email_archive" +FILE_SKIP_DOMAINS="/tmp/docker-mailserver/file_domaines_non_depollues.txt" +#on enlève les commentaires et les lignes vides +SKIP_DOMAINS=`grep -Ev '^#|^[[:space:]]*$' $FILE_SKIP_DOMAINS` + KEEP_FAILED=true -DEBUG= +DEBUG=true #################### FONCTIONS ############################################ -BOLD='' -RED='' -GREEN='' -YELLOW='' -BLUE='' -MAGENTA='' -CYAN='' -NC='' # No Color +BOLD='[1m' +RED='[0;31m' +GREEN='[0;32m' +YELLOW='[0;33m' +BLUE='[0;34m' +MAGENTA='[0;35m' +CYAN='[0;36m' +NC='[0m' # No Color NL=' ' @@ -137,6 +141,26 @@ curlJirafeauSend () { echo "${OUTPUT}" } +# Définir une fonction pour vérifier si le domaine d'un email est dans la liste SKIP_DOMAINS +function check_skip_domains() { + local SKIP_DOMAINS="$1" + local LIST_EMAILS="$2" + + for email in $LIST_EMAILS; do + # Extraire le domaine de l'email (partie après le "@") + local domain="${email##*@}" + + # Utiliser grep pour vérifier si le domaine est dans la liste des domaines à sauter + if echo "$SKIP_DOMAINS" | grep -q -w "$domain"; then + echo "yes" + return + fi + done + + # Si aucun domaine n'a été trouvé, retourner "no" + echo "no" +} + #################### MAIN ################################################# echo "${NL}${BLUE}$(date +%d-%m-%Y-%H-%M-%S)${NC} : ${GREEN}######################################## filter start (log in ${TMP_LOG})${NC}" >> "${FIC_LOG}" LOG_FIC "${GREEN}######################################## ${TMP_LOG} ${NC}" @@ -145,6 +169,14 @@ if ! mkdir -p "${MAILS}"; then LOG_FIC "${RED}Can't mkdir ${MAILS} ${NC}" quitFilter "${EX_UNAVAILABLE}" fi + +#$@ contient le sender et les destinataires +#format "-f sender -- dest1 [...dest(i)] " +LIST_EMAILS=$(echo $@) +#on nettoie +LIST_EMAILS=$(sed 's/-f//g' <<< $LIST_EMAILS) +LIST_EMAILS=$(sed 's/--//g' <<< $LIST_EMAILS) + MAIL_SOURCE=$(echo $@ | awk 'BEGIN{FS=" "} {print $2}') DATE_TEMPS=$(date "+%Y-%m-%d-%H:%M:%S") REP_PIECE_JOINTE="${MAILS}/${DATE_TEMPS}_${MAIL_SOURCE}_$$" @@ -157,11 +189,11 @@ PERIOD=$(curl "${JIRAFEAU_LOCAL}/a.php?p=${MAIL_SOURCE}" 2>/dev/null ) [[ "${PERIOD}" =~ ^(minute|hour|day|week|month|quarter)$ ]] || PERIOD="${DEFAULT_PERIOD}" LOG_FIC "${NL}" \ - " MAIL_SOURCE : ${YELLOW}${MAIL_SOURCE}${NC}${NL}" \ - " DATE_TEMPS : ${YELLOW}${DATE_TEMPS=}${NC}${NL}" \ - " MODE : ${YELLOW}${MODE}${NC}${NL}" \ - " TRACK : ${YELLOW}${TRACK}${NC}${NL}" \ - " PERIOD : ${YELLOW}${PERIOD}${NC}${NL}" + " MAIL_SOURCE : ${YELLOW}${MAIL_SOURCE}${NC}${NL}" \ + " DATE_TEMPS : ${YELLOW}${DATE_TEMPS=}${NC}${NL}" \ + " MODE : ${YELLOW}${MODE}${NC}${NL}" \ + " TRACK : ${YELLOW}${TRACK}${NC}${NL}" \ + " PERIOD : ${YELLOW}${PERIOD}${NC}${NL}" if ! cd "${INSPECT_DIR}"; then echo "${INSPECT_DIR} does not exist" @@ -194,12 +226,19 @@ mkdir -p "${REP_PIECE_JOINTE}/" >"${OLD_LINKS}" >"${ARCHIVE_CONTENT}" -if [ "${MODE}" = "none" ]; then +if [ "${MODE}" = "none"]; then LOG_FIC " - ${GREEN}send without change (MODE=none)${NC}" ${SENDMAIL} "$@" < "${INSPECT_DIR}/in.$$" quitFilter 0 fi + +if [ "$(check_skip_domains "$SKIP_DOMAINS" "$LIST_EMAILS")" = "yes" ]; then + LOG_FIC " - ${GREEN}send without change (skip domain)${NC}" + ${SENDMAIL} "$@" < "${INSPECT_DIR}/in.$$" + quitFilter 0 +fi + # Etape de rafraichissement des anciens fichiers inclus echo "time: ${DATE_TEMPS}${NL}id: $(date +%s)" > "${ARCHIVE_CONTENT}" [ -n "${TRACK}" ] && echo "sender: ${MAIL_SOURCE}" >> "${ARCHIVE_CONTENT}" @@ -322,3 +361,4 @@ fi quitFilter 0 ########################################################################## +