Sieve forwarding not working

Hello, my friend.

To avoid having to remember this every time and to ensure that the process is carried out for all users, I created a script and set it to run via cron every day.

It will create the structure only for those who don’t have it.

I placed this file in:

/code/sieve.sh

#!/bin/bash

# Path to the home directory
home_dir="/home"

# List of users to be ignored
ignore_users=("backup" "admin")

# Function to check if a user should be ignored
should_ignore() {
    local user="$1"
    for ignore in "${ignore_users[@]}"; do
        if [ "$user" == "$ignore" ]; then
            return 0
        fi
    done
    return 1
}

# Loop through each directory in /home
for user_dir in "$home_dir"/*; do
    if [ -d "$user_dir" ]; then
        user=$(basename "$user_dir")
        
        # Check if the user should be ignored
        if should_ignore "$user"; then
            echo "Ignoring user: $user"
            continue
        fi
        
        # Check and create if it doesn't exist
        if [ ! -f "$user_dir/.dovecot.lda-dupes" ]; then
            touch "$user_dir/.dovecot.lda-dupes"
        else
            echo "File already exists: $user_dir/.dovecot.lda-dupes"
        fi
        
        # Check and create if it doesn't exist
        if [ ! -d "$user_dir/.dovecot.lda-dupes.locks" ]; then
            mkdir "$user_dir/.dovecot.lda-dupes.locks"
        else
            echo "Directory already exists: $user_dir/.dovecot.lda-dupes.locks"
        fi
        
        # Change ownership of the file and directory
        chown "$user:$user" "$user_dir/.dovecot.lda-dupes" "$user_dir/.dovecot.lda-dupes.locks"

        echo "Configuration completed for user: $user"
    fi
done

Once it’s done, just include it in our Cron.

30 12 * * * root /bin/bash /code/sieve.sh >> /var/log/sieve.log 2>&1

1 Like