Image

Bilgi Veritabanı → PostfixAdmin Kullanarak Posta Kutusu Klasörlerini Silme

[Virtual sunucular]
Yayın tarihi: 31.05.2023

Varsayılan olarak, PostfixAdmin ile posta kutusu oluşturduğunuzda her posta kutusu için bir klasör oluşturulur. PostfixAdmin üzerinden posta kutusunu sildiğinizde sadece kullanıcı silinir; yani erişim durdurulur, ancak posta kutusunun klasörü tüm e-postalarla birlikte kalır. Aynı kullanıcı adıyla tekrar posta kutusu oluşturursanız, veriler sanki posta kutusu silinmemiş gibi kalır. Bu kılavuzda, PostfixAdmin'de posta kutusu silindiğinde posta kutusu klasörlerinin otomatik olarak nasıl silineceğini ayarlayacağız.

Ayrıca, zaten yapılandırılmış bir posta sunucusu VPS siparişi verebilirsiniz; nasıl yapılandırıldığını buradan inceleyebilirsiniz:

Yapılandırma dosyasını açalım:

/usr/share/nginx/html/postfixadmin/config.inc.php

$CONF['mailbox_postdeletion_script']='sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postdeletion.sh';

Posta kutusu klasörlerini silecek bir betik dosyası oluşturalım:

#touch /usr/local/bin/postfixadmin-mailbox-postdeletion.sh

#!/bin/sh

Courier-IMAP sanal posta yapısından bir Maildir silmek için örnek bir betik.

Bu betik, 1. ve 2. argümanları kullanıcı adı ve alan adı olarak değerlendirir.

Bu betik, maildir'i gerçekten silmez. Onu, sistem yöneticisi tarafından

zaman zaman temizlenebilecek özel bir klasöre taşır.

Bu betik, posta klasörlerine sahip kullanıcı olarak çalıştırılmalıdır.

Eğer betik apache kullanıcısı tarafından çalıştırılıyorsa (örneğin PHP ile),

apache kullanıcısına sudo ile bu betiği ilgili kullanıcı olarak çalıştırma yetkisi verilebilir.

Bu betik /usr/local/bin/postfixadmin-mailbox-postdeletion.sh olarak kaydedilmeli ve

çalıştırılabilir hale getirilmelidir. Örnek /etc/sudoers satırı:

apache ALL=(courier) NOPASSWD: /usr/local/bin/postfixadmin-mailbox-postdeletion.sh

Bu satır, apache kullanıcısının "courier" kullanıcısı olarak

şifre girmeden bu betiği çalıştırabileceğini belirtir.

basedir=/home/mail

Silinmiş maildirlerin depolanacağı klasörü buraya ayarlayın.

trashbase=/var/spool/deleted-maildirs if [ ! -e "$trashbase" ]; then echo "trashbase '$trashbase' mevcut değil; işlem durduruluyor."

exit 1

fi if [ echo $1 | fgrep '..' ]; then echo "Birinci argüman iki nokta içeriyor; işlem durduruluyor." exit 1

fi if [ echo $2 | fgrep '..' ]; then echo "İkinci argüman iki nokta içeriyor; işlem durduruluyor." exit 1

fi

subdir=echo "$1" maildir="${basedir}/$2/${subdir}" trashdir="${trashbase}/$2/date +%F_%T_${subdir}" parent=dirname "$trashdir" if [ ! -d "$parent" ]; then if [ -e "$parent" ]; then echo "Tuhaf - dizin '$parent' mevcut ama bir klasör değil." echo "İşlem durduruluyor." exit 1

else
    mkdir -p "$parent"
    if [ $? -ne 0 ]; then
        echo "mkdir -p '$parent' hatası; işlem durduruluyor."
        exit 1
    fi
fi

fi if [ ! -e "$maildir" ]; then echo "maildir '$maildir' mevcut değil; yapılacak bir şey yok." exit 1 fi if [ -e "$trashdir" ]; then echo "trashdir '$trashdir' zaten mevcut; işlem durduruluyor." exit 1 fi

# Taşıma veya silme işlemi (Varsayılan olarak taşıma etkin)

mv $maildir $trashdir
#rm -rf $maildir

exit $?

Silinen posta kutularını depolamak için bir klasör oluşturalım

mkdir /var/spool/deleted-maildirs 

Bu klasör için bir temizlik periyodu ayarlayabilirsiniz; bu seçenek, yanlışlıkla silinen posta kutularının veya ileride gerekebilecek verilerin kaybını önler.

Şimdi vmail kullanıcısına betiği çalıştırma izni vermemiz gerekiyor

# User privilege specification
root ALL=(ALL:ALL) ALL
www-data ALL=(vmail) NOPASSWD: /usr/local/bin/postfixadmin-mailbox-postdeletion.sh 

Artık posta kutusu klasörleri silindiğinde /var/spool/deleted-maildirs klasörüne taşınıyor. Eğer posta kutusu klasörünü hemen silmek isterseniz, taşıma satırını devre dışı bırakıp silme satırını etkinleştirin:

mv $maildir $trashdir 
rm -rf $maildir 

Tamamlandı.





No Comments Yet