Az iRedMail lehetőséget biztosít levelező lista használatára, kezeléséhez mutatok pár parancsot.

Levelező listák lekérzedése

mint root

mysql \
--defaults-file=.my.cnf \
-B \
-s \
-e "use vmail;select address from maillists;"

Kivételek lekérdezése

Címek, amire nem küldünk levelet (pl.: bitrix@…, zabbix@…)

/opt/mlmmjadmin/tools/maillist_admin.py subscribers excluded@pelda.hu

Cím felvétele a kivétel listára

/opt/mlmmjadmin/tools/maillist_admin.py \
add_subscribers \
excluded@pelda.hu \
user@<domain>

Cím eltávolítása a kivétel listáról

/opt/mlmmjadmin/tools/maillist_admin.py \
remove_subscribers \
excluded@pelda.hu \
user@<domain>

Levelező lista generálás

MLMMJ_ADMIN_TOOL=/opt/mlmmjadmin/tools/maillist_admin.py
AUTH_TOKEN="--- Must be filled  ---"
EXCLUDE_MAILLIST=excluded@pelda.hu

DOMAINS=()
DOMAINS+=('pelda2.hu')
LIST_NAME=levlista

function remove_all_subscribers {
        /usr/bin/curl \
    -X POST \
    --header "X-MLMMJADMIN-API-AUTH-TOKEN: $AUTH_TOKEN" \
    http://127.0.0.1:7790/api/${1}/subscribers?remove_subscribers=ALL
}

for d in ${DOMAINS[@]}
do
        # remove all subcribers
        remove_all_subscribers ${LIST_NAME}@${d}
        SQL_QUERY=()
        SQL_QUERY+=(/usr/bin/mysql)
        SQL_QUERY+=("--defaults-file=~/.my.cnf")
        SQL_QUERY+=("-Bs")
        SQL_QUERY+=("-e")
        SQL_QUERY+=("\"use vmail;select username from mailbox where domain='${d}' order by username;\"")
        while read eAddr
        do
                echo "Checking ${eAddr}..."
                haSub=$($MLMMJ_ADMIN_TOOL has_subscriber $EXCLUDE_MAILLIST "${eAddr}")
                haSubA=($haSub)
                if [[ "${haSubA[0]}" == "[NO]" ]]
                then
                        echo "Add to list..."
                        m=($MLMMJ_ADMIN_TOOL)
                        m+=(add_subscribers)
                        m+=("${LIST_NAME}@${d}")
                        m+=(${eAddr})
                        "${m[@]}"
                else
                        echo "Excluded from list..."
                fi
        done < <(eval ${SQL_QUERY[@]})
done