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