مدیریت پیشرفته کاربران و دامنه‌ها در DirectAdmin – تغییر دامنه، تغییر نام کاربری، انتقال دامنه، ادغام حساب‌ها و اسکریپت‌های مدیریتی

این مقاله یک راهنمای جامع برای انجام عملیات مدیریتی پیشرفته در DirectAdmin است: تغییر نام دامنه، تغییر نام کاربری، انتقال دامنه بین کاربران، ادغام حساب‌ها، رفع خطای Domain Already Exists، ارسال پیام به همه کاربران، مدیریت پکیج‌ها، غیرفعال‌سازی mail_sni و بسیاری از نکات کاربردی دیگر.

Merging AccountsAdministrative Scripts

~3 دقیقه مطالعه • بروزرسانی ۱۰ اسفند ۱۴۰۴

1. چگونه نام یک دامنه را تغییر دهیم؟


برای تغییر نام دامنه (مثلاً domain1.com → domain2.com):

  1. به مسیر User Level → Domain Setup → Change a Domain Name بروید.
  2. دامنه را انتخاب کنید و نام جدید را وارد کنید.

نکات مهم:

  • فایل‌های وب (public_html) و ایمیل‌ها تحت تأثیر قرار می‌گیرند.
  • دیتابیس‌ها تغییر نمی‌کنند؛ ممکن است لازم باشد مسیرها را در اسکریپت‌ها اصلاح کنید.
---

2. چگونه نام کاربری (username) را تغییر دهیم؟


به‌عنوان root در SSH:


cd /usr/local/directadmin/scripts
./change_username.sh olduser newuser

توصیه امنیتی: قبل از تغییر، از تمام دیتابیس‌ها بک‌آپ بگیرید.

---

3. چگونه یک دامنه را از یک کاربر به کاربر دیگر منتقل کنیم؟


از اسکریپت آماده استفاده کنید:


cd /usr/local/directadmin/scripts/
./move_domain.sh domain.com olduser newuser

نکات:

  • اگر newuser وجود ندارد، یک دامنه فیک برایش بسازید، انتقال دهید، سپس دامنه فیک را حذف کنید.
  • برای انتقال دیتابیس‌ها از اسکریپت rename_database_with_user.sh استفاده کنید.
---

4. چگونه دو حساب کاربری را merge (ادغام) کنیم؟


روش ۱: ارتقاء کاربر و حذف حساب قدیمی


cd /usr/local/directadmin/scripts
./user_to_reseller.sh fred
echo "fred" >> /usr/local/directadmin/data/admin/admin.list
perl -pi -e 's/^fred\n//' /usr/local/directadmin/data/admin/reseller.list
perl -pi -e 's/usertype=reseller/usertype=admin/' /usr/local/directadmin/data/users/fred/user.conf

سپس با کاربر fred وارد شوید و حساب admin را حذف کنید.

روش ۲: Restore Merge

اگر کاربر حذف شده، فایل بک‌آپ را rename کنید:


user.admin.fred.tar.gz → admin.root.admin.tar.gz

و Restore کنید.

روش ۳: انتقال دستی (پیشرفته)

  • انتقال همه دامنه‌ها از fred به admin
  • انتقال دیتابیس‌ها با rename_database_with_user.sh
  • انتقال cronjobها با:

crontab -u fred -l
crontab -u admin -e
---

5. رفع خطای Domain Already Exists


اگر دامنه وجود ندارد اما خطا می‌دهد، بررسی کنید:

  • named.conf
  • /etc/virtual/domains
  • /etc/virtual/domainowners
  • /etc/virtual/domain.com
  • فایل‌های .nzf در /var/named

در Multi-Server Setup نیز گزینه Domain Check ممکن است فعال باشد.

---

6. چرا Show All Users برخی کاربران را نشان نمی‌دهد؟


کش خراب شده است. بازسازی کنید:


da taskq --run="action=cache&value=showallusers"

یا فایل را حذف کنید تا DA دوباره بسازد:


rm -f /usr/local/directadmin/data/admin/show_all_users.cache
---

7. چگونه به همه ایمیل‌های سیستم پیام ارسال کنیم؟


  1. Admin Level → Show All Users → Advanced Search
  2. Items per Page = All
  3. Search → Select All → Send a Message
  4. گزینه‌های All E-Mail Accounts و E-Mail Only را فعال کنید.
---

8. چگونه کاربر یا دامنه را از خط فرمان suspend/unsuspend کنیم؟


DirectAdmin v1.595+


/usr/local/directadmin/directadmin --suspend-user user=fred
/usr/local/directadmin/directadmin --unsuspend-user user=fred

/usr/local/directadmin/directadmin --suspend-domain domain=domain.com
/usr/local/directadmin/directadmin --unsuspend-domain domain=domain.com
---

9. غیرفعال کردن Suspend Reseller روی Overlimit


در فایل reseller.conf:


suspend_at_limit=OFF
---

10. تغییر پکیج همه کاربران


اسکریپت:


OLD=custom
NEW=fancy
for i in `ls /usr/local/directadmin/data/users`; do
    if grep -q "usertype=user" /usr/local/directadmin/data/users/$i/user.conf; then
        perl -pi -e "s/package=$OLD/package=$NEW/" /usr/local/directadmin/data/users/$i/user.conf
    fi
done

سپس پکیج fancy را از پنل Save کنید.

---

11. تغییر پکیج همه کاربران یک Reseller



CREATOR="silver"
TOPACKAGE="gold"
for u in `grep "^creator=${CREATOR}$" /usr/local/directadmin/data/users/*/user.conf | cut -d/ -f4`; do
    perl -pi -e "s/^package=.*/package=${TOPACKAGE}/" /usr/local/directadmin/data/users/$u/user.conf
done

سپس پکیج gold را Save کنید.

---

12. غیرفعال کردن mail_sni برای یک دامنه


در فایل:


/usr/local/directadmin/data/users/username/domains/domain.com.conf

اضافه کنید:


mail_sni=OFF

سپس:


echo "action=rewrite&value=mail_sni" >> /usr/local/directadmin/data/task.queue
/usr/local/directadmin/dataskq d
---

13. ارسال اعلان‌های حجیم (مثل brute force) به ایمیل دیگر


در فایل user.conf ادمین:


[email protected],[email protected]
---

14. ممنوع کردن دامنه‌های خاص


فایل زیر را کپی کنید:


/usr/local/directadmin/data/templates/forbidden_domains.list
→ custom/forbidden_domains.list

دامنه‌های ممنوعه را اضافه کنید.

نوشته و پژوهش شده توسط دکتر شاهین صیامی