EJABBERD.YML(5)   EJABBERD.YML(5)

ejabberd.yml - پرونده اصلی پیکربندی کارگزار پیام‌رسان فوری ejabberd XMPP

ejabberd.yml

فایل پیکربندی به زبان YAML نوشته می‌شود.


هشدار

YAML به تورفتگی (indentation) حساس است، بنابراین مطمئن شوید که تورفتگی‌ها را رعایت می‌کنید، در غیر این صورت خطاهای پیکربندی بسیار گنگ و نامفهومی دریافت خواهید کرد.

از نظر منطقی، گزینه‌های پیکربندی به ۳ دسته اصلی تقسیم می‌شوند: Modules (ماژول‌ها)، Listeners (شنوندگان) و همه چیز دیگری که Top Level (سطح بالا) نامیده می‌شود. بنابراین این سند به ۳ فصل اصلی تقسیم شده که هر دسته را جداگانه توضیح می‌دهد. محتوای ejabberd.yml معمولاً به این شکل خواهد بود:

hosts:
  - example.com
  - domain.tld
loglevel: info
...
listen:
  -
    port: 5222
    module: ejabberd_c2s
  ...
modules:
  mod_roster: {}
  ...

هر خطای پیکربندی (مانند خطای نحوی، گزینه ناشناخته یا مقدار نامعتبر گزینه) در این مفهوم که ejabberd از بارگذاری کل فایل پیکربندی امتناع می‌کند و راه‌اندازی نخواهد شد یا بارگذاری مجدد پیکربندی را متوقف می‌کند، کشنده است.

تمام گزینه‌ها می‌توانند در زمان اجرا با اجرای دستور ejabberdctl reload-config تغییر داده شوند. بارگذاری مجدد پیکربندی اتمی است: یا همه گزینه‌ها پذیرفته شده و به طور همزمان اعمال می‌شوند یا پیکربندی جدید بدون هیچ تأثیری بر پیکربندی در حال اجرا رد می‌شود.

برخی گزینه‌ها می‌توانند فقط برای هاست(های) مجازی خاص با استفاده از گزینه‌های host_config یا append_host_config مشخص شوند. چنین گزینه‌هایی محلی (local) نامیده می‌شوند. نمونه‌ها عبارتند از modules، auth_method و default_db. گزینه‌هایی که نمی‌توانند به ازای هر هاست مجازی تعریف شوند سراسری (global) نامیده می‌شوند. نمونه‌ها عبارتند از loglevel، certfiles و listen. قرار دادن گزینه‌های سراسری زیر بخش host_config یا append_host_config یک اشتباه پیکربندی است - ejabberd از بارگذاری چنین پیکربندی‌ای امتناع خواهد کرد.

توصیه نمی‌شود که ejabberd.yml را از ابتدا بنویسید. در عوض بهتر است از فایل پیکربندی "پیش‌فرض" موجود در https://github.com/processone/ejabberd/blob/26.07/ejabberd.yml.example شروع کنید. پس از اینکه ejabberd را راه‌اندازی کردید، می‌توانید شروع به تغییر گزینه‌های پیکربندی برای رفع نیازهای خود کنید.

توجه داشته باشید که این سند در نظر گرفته شده تا توضیحات جامعی از تمام گزینه‌های پیکربندی ارائه دهد که می‌توان برای درک معنای یک گزینه خاص، قالب و مقادیر ممکن آن به آن مراجعه کرد. درک نحوه پیکربندی ejabberd تنها با خواندن این سند بسیار دشوار خواهد بود - برای این منظور به خواننده توصیه می‌شود راهنمای پیکربندی آنلاین موجود در https://docs.ejabberd.im/admin/configuration را مطالعه کند.

این بخش گزینه‌های سطح بالای ejabberd 26.07 را توضیح می‌دهد. گزینه‌هایی که در این نسخه تغییر کرده‌اند با 🟠 علامت‌گذاری شده‌اند.

access_rules: {AccessName: {allow|deny: ACLName|ACLDefinition}}

این گزینه basic.md#access-rules|Access Rules (قوانین دسترسی) را تعریف می‌کند. به هر قانون دسترسی یک نام اختصاص داده می‌شود که می‌توان از سایر بخش‌های فایل پیکربندی (عمدتاً از گزینه‌های access ماژول‌های ejabberd) به آن ارجاع داد. هر تعریف قانون ممکن است تعداد دلخواهی بخش allow یا deny داشته باشد، و هر بخش می‌تواند هر تعداد قانون ACL داشته باشد (به گزینه acl مراجعه کنید). به طور پیش‌فرض هیچ قانون دسترسی‌ای تعریف نشده است.

مثال:

access_rules:
  configure:
    allow: admin
  something:
    deny: someone
    allow: all
  s2s_banned:
    deny: problematic_hosts
    deny: banned_forever
    deny:
      ip: 222.111.222.111/32
    deny:
      ip: 111.222.111.222/32
    allow: all
  xmlrpc_access:
    allow:
      user: peter@example.com
    allow:
      user: ivone@example.com
    allow:
      user: bot@example.com
      ip: 10.0.0.0/24

acl: {ACLName: {ACLType: ACLValue}}

این گزینه ../configuration/basic.md#acl|access control lists (لیست‌های کنترل دسترسی) را تعریف می‌کند: مجموعه‌های نام‌گذاری‌شده‌ای از قوانین که برای تطبیق با اهداف مختلف (مانند JID یا آدرس IP) استفاده می‌شوند. هر مجموعه از قوانین دارای نام ACLName است: می‌تواند هر رشته‌ای باشد به جز all یا none (آن‌ها نام‌های از پیش تعریف‌شده برای قوانینی هستند که به ترتیب با همه چیز یا هیچ چیز تطبیق دارند). نام ACLName می‌تواند از سایر بخش‌های فایل پیکربندی، برای مثال در گزینه access_rules، ارجاع داده شود. قوانین ACLName توسط نگاشت {ACLType: ACLValue} نمایش داده می‌شوند. اینها می‌توانند یکی از موارد زیر باشند:

ip: Network

قانون با هر آدرس IP از Network تطبیق دارد.

node_glob: Pattern

مانند node_regexp است، اما تطبیق بر اساس Pattern مشخص‌شده طبق قوانین استفاده‌شده توسط شل Unix انجام می‌شود.

node_regexp: user_regexp@server_regexp

قانون با هر JID که بخش node آن با عبارت منظم user_regexp و بخش server آن با عبارت منظم server_regexp تطبیق دارد، مطابقت دارد.

resource: Resource

قانون با هر JID که دارای resource برابر Resource است تطبیق دارد.

resource_glob: Pattern

مانند resource_regexp است، اما تطبیق بر اساس Pattern مشخص‌شده طبق قوانین استفاده‌شده توسط شل Unix انجام می‌شود.

resource_regexp: Regexp

قانون با هر JID که resource آن با عبارت منظم Regexp تطبیق دارد، مطابقت دارد.

server: Server

قانون با هر JID از سرور Server تطبیق دارد. مقدار Server باید یک نام میزبان معتبر یا آدرس IP باشد.

server_glob: Pattern

مانند server_regexp است، اما تطبیق بر اساس Pattern مشخص‌شده طبق قوانین استفاده‌شده توسط شل Unix انجام می‌شود.

server_regexp: Regexp

قانون با هر JID از سروری که با عبارت منظم Regexp تطبیق دارد، مطابقت دارد.

user: Username

اگر Username به شکل "user@server" باشد، قانون یک JID را با این مقدار تطبیق می‌دهد. در غیر این صورت، اگر Username به شکل "user" باشد، قانون با هر JID که Username را در بخش node دارد تطبیق دارد، مشروط بر اینکه بخش server این JID هر هاست مجازی‌ای باشد که توسط ejabberd سرویس‌دهی می‌شود.

user_glob: Pattern

مانند user_regexp است، اما تطبیق بر اساس Pattern مشخص‌شده طبق قوانین استفاده‌شده توسط شل Unix انجام می‌شود.

user_regexp: Regexp

اگر Regexp به شکل "regexp@server" باشد، قانون با هر JID که بخش node آن با عبارت منظم "regexp" تطبیق دارد و بخش server آن برابر "server" است، مطابقت دارد. اگر Regexp به شکل "regexp" باشد، قانون با هر JID که بخش node آن با عبارت منظم "regexp" تطبیق دارد و بخش server آن هر هاست مجازی‌ای باشد که توسط ejabberd سرویس‌دهی می‌شود، مطابقت دارد.

acme: Options

پیکربندی basic.md#acme|ACME، برای دریافت خودکار گواهی‌های SSL برای دامنه‌های سرویس‌دهی‌شده توسط ejabberd، که به این معناست که درخواست‌ها و تجدید گواهی‌ها در حالت کاملاً خودکار به یک سرور CA (معروف به "سرور ACME") ارسال می‌شوند. Options (گزینه‌ها) عبارتند از:

auto: true | false

آیا به طور خودکار برای تمام دامنه‌های پیکربندی‌شده (که هنوز گواهی ندارند) در هنگام راه‌اندازی سرور یا بارگذاری مجدد پیکربندی، گواهی درخواست شود. مقدار پیش‌فرض true است.

ca_url: URL

آدرس URL دایرکتوری ACME که به عنوان نقطه ورود برای سرور ACME استفاده می‌شود. مقدار پیش‌فرض https://acme-v02.api.letsencrypt.org/directory است - آدرس URL دایرکتوری مرجع صدور گواهی Let’s Encrypt.

cert_type: rsa | ec

نوع کلید گواهی. مقادیر موجود ec و rsa به ترتیب برای گواهی‌های EC و RSA هستند. برای سازگاری با کلاینت‌ها و سرورهای قدیمی بهتر است گواهی‌های RSA داشته باشید، بنابراین مقدار پیش‌فرض rsa است.

contact: [Contact, ...]

فهرستی از آدرس‌های تماس (معمولاً ایمیل‌ها) که سرور ACME در صورت بروز مشکل اطلاعیه‌هایی به آن‌ها ارسال می‌کند. مقدار Contact باید به شکل "scheme:address" باشد (مثلاً "mailto:user@domain.tld"). مقدار پیش‌فرض یک لیست خالی است که به این معنی است که سرور ACME هیچ اطلاعیه‌ای ارسال نخواهد کرد.

مثال:

acme:
  ca_url: https://acme-v02.api.letsencrypt.org/directory
  contact:
    - mailto:admin@domain.tld
    - mailto:bot@domain.tld
  auto: true
  cert_type: rsa

allow_contrib_modules: true | false

آیا نصب ماژول‌های شخص ثالث مجاز است یا خیر. به بخش مستندات ../../admin/guide/modules.md#ejabberd-modules|ejabberd-modules مراجعه کنید. مقدار پیش‌فرض true است.

allow_multiple_connections: true | false

این گزینه فقط زمانی استفاده می‌شود که حالت ناشناس فعال باشد. تنظیم آن بر روی true به این معنی است که در صورت استفاده از resource های مختلف برای اتصال، همان نام کاربری می‌تواند چندین بار در حالت ورود ناشناس استفاده شود. این گزینه فقط در موارد بسیار خاص مفید است. مقدار پیش‌فرض false است.

anonymous_protocol: login_anon | sasl_anon | both

تعریف می‌کند که از کدام پروتکل authentication.md#anonymous-login-and-sasl-anonymous|anonymous (ناشناس) استفاده خواهد شد:
•login_anon به این معناست که از روش ورود ناشناس استفاده خواهد شد.
•sasl_anon به این معناست که از روش SASL Anonymous استفاده خواهد شد.
•both به این معنی است که هم SASL Anonymous و هم ورود ناشناس فعال هستند.

مقدار پیش‌فرض sasl_anon است.

api_permissions: [Permission, ...]

تعریف مجوزهای دسترسی به API. لطفاً به مستندات ejabberd → برای توسعه‌دهندگان → ejabberd ReST API → ../../developer/ejabberd-api/permissions.md|API Permissions مراجعه کنید.

append_host_config: {Host: Options}

افزودن چند گزینه خاص به یک ../configuration/basic.md#virtual-hosting|میزبان مجازی مشخص.

auth_cache_life_time: timeout()

مشابه cache_life_time، اما فقط برای کش احراز هویت اعمال می‌شود. در صورتی که تنظیم نشده باشد، مقدار از cache_life_time استفاده خواهد شد.

auth_cache_missed: true | false

مشابه cache_missed، اما فقط برای کش احراز هویت اعمال می‌شود. در صورتی که تنظیم نشده باشد، مقدار از cache_missed استفاده خواهد شد.

auth_cache_size: pos_integer() | infinity

مشابه cache_size، اما فقط برای کش احراز هویت اعمال می‌شود. در صورتی که تنظیم نشده باشد، مقدار از cache_size استفاده خواهد شد.

auth_external_user_exists_check: true | false

توجه درباره این گزینه: در نسخه 23.10 اضافه شده است. بررسی تکمیلی برای وجود کاربر بر اساس داده‌های mod_last، برای روش‌های احراز هویتی که راهی مطمئن برای تشخیص وجود کاربر ندارند (مانند احراز هویت مبتنی بر jwt و گواهی‌نامه). این قابلیت در پردازش پیام‌های آفلاین برای آن کاربران کمک می‌کند. مقدار پیش‌فرض true است.

auth_method: [mnesia | sql | anonymous | external | jwt | ldap | pam, ...]

فهرستی از روش‌های authentication.md|احراز هویت برای استفاده. اگر چند روش تعریف شده باشند، احراز هویت زمانی موفق تلقی می‌شود که حداقل یکی از روش‌ها با موفقیت انجام شود. مقدار پیش‌فرض [mnesia] است.

auth_opts: [Option, ...]

این گزینه توسط ماژول مشارکتی ejabberd_auth_http که می‌توان از مخزن گیت ../../admin/guide/modules.md#ejabberd-contrib|ejabberd-contrib نصب کرد، مورد استفاده قرار می‌گیرد. برای جزئیات به فایل README آن ماژول مراجعه کنید.

auth_password_format: plain | scram

توجه درباره این گزینه: در نسخه 20.01 بهبود یافته است. این گزینه تعیین می‌کند که رمزهای عبور کاربران به چه شکلی ذخیره شوند، به صورت متن ساده یا در قالب authentication.md#scram|SCRAM:
•plain: رمز عبور به صورت متن ساده در پایگاه داده ذخیره می‌شود. این روش خطرناک است زیرا در صورت نفوذ به پایگاه داده، رمزها قابل خواندن هستند. این مقدار پیش‌فرض است. این قالب به کلاینت‌ها اجازه می‌دهد با استفاده از: Jabber Non-SASL قدیمی (XEP-0078)، SASL PLAIN، SASL DIGEST-MD5 و SASL SCRAM-SHA-1/256/512(-PLUS) احراز هویت کنند.
•scram: رمز عبور ذخیره نمی‌شود، فقط اطلاعاتی که برای تأیید هش ارائه‌شده توسط کلاینت لازم است ذخیره می‌شود. بازیابی رمز اصلی از اطلاعات ذخیره‌شده غیرممکن است؛ به همین دلیل، پس از تنظیم این مقدار، دیگر نمی‌توان آن را به plain تغییر داد. این قالب به کلاینت‌ها اجازه می‌دهد با استفاده از: SASL PLAIN و SASL SCRAM-SHA-1/256/512(-PLUS) احراز هویت کنند. نوع SCRAM به گزینه auth_scram_hash بستگی دارد.

مقدار پیش‌فرض plain است.

auth_password_types_hidden_in_sasl1: [plain | scram_sha1 | scram_sha256 | scram_sha512]

توجه درباره این گزینه: در نسخه 25.07 اضافه شده است. فهرست انواع رمز عبوری که نباید در احراز هویت SASL1 ارائه شوند. از آنجا که SASL1، برخلاف SASL2، نمی‌تواند فهرست مکانیزم‌های موجود را متناسب با هر کاربر سفارشی‌سازی کند، ممکن است مکانیزم‌های پیشنهادشده با رمز ذخیره‌شده سازگار نباشند، به‌ویژه اگر نوع رمز جدیدی اخیراً اضافه شده باشد. این گزینه امکان غیرفعال‌سازی ارائه برخی مکانیزم‌ها در SASL1 را فراهم می‌کند، تا زمانی که نوع رمز جدید برای همه کاربران در دسترس باشد.

auth_scram_hash: sha | sha256 | sha512

الگوریتم هش که باید برای ذخیره رمز عبور در قالب authentication.md#scram|SCRAM استفاده شود. اگر از قبل رمزهایی با الگوریتم دیگری تولید شده‌اند، این مقدار را تغییر ندهید، زیرا کاربران دارای آن رمزها قادر به احراز هویت نخواهند بود. مقدار پیش‌فرض sha است.

auth_stored_password_types: [plain | scram_sha1 | scram_sha256 | scram_sha512]

توجه درباره این گزینه: در نسخه 25.03 اضافه شده است. فهرست انواع رمز عبوری که باید به‌طور همزمان برای هر کاربر در پایگاه داده ذخیره شوند. هنگامی که کاربر رمز عبور حساب خود را تعیین می‌کند، پایگاه داده به‌روزرسانی می‌شود تا رمز را در قالب‌های سازگار با هر نوع فهرست‌شده ذخیره کند. این قابلیت می‌تواند برای مهاجرت رمزهای کاربران به قالب امن‌تر استفاده شود. اگر این گزینه تنظیم شده باشد، مقادیر تنظیم‌شده در گزینه‌های auth_scram_hash و auth_password_format را نادیده می‌گیرد. مقدار پیش‌فرض []. است.

auth_use_cache: true | false

مشابه use_cache، اما فقط برای کش احراز هویت اعمال می‌شود. در صورتی که تنظیم نشده باشد، مقدار از use_cache استفاده خواهد شد.

c2s_cafile: Path

مسیر کامل به فایلی که حاوی یک یا چند گواهی CA در قالب PEM است. تمام گواهی‌های کلاینت باید توسط یکی از این گواهی‌های CA ریشه امضا شده باشند و JID(های) متناظر را در فیلد subjectAltName داشته باشند. مقدار پیش‌فرضی وجود ندارد.

می‌توانید از host_config برای تعیین این گزینه به ازای هر میزبان مجازی استفاده کنید.

برای تنظیم یک فایل خاص به ازای هر شنونده، از گزینه listen-options.md#cafile|cafile شنونده استفاده کنید. توجه داشته باشید که c2s_cafile گزینه cafile شنونده را نادیده می‌گیرد.

c2s_ciphers: [Cipher, ...]

فهرستی از رمزهای OpenSSL برای استفاده در اتصالات c2s. مقدار پیش‌فرض در مثال زیر نشان داده شده است:

مثال:

c2s_ciphers:
  - HIGH
  - "!aNULL"
  - "!eNULL"
  - "!3DES"
  - "@STRENGTH"

c2s_dhfile: Path

مسیر کامل به فایلی که حاوی پارامترهای DH سفارشی برای استفاده در اتصالات c2s است. چنین فایلی می‌تواند با دستور "openssl dhparam -out dh.pem 2048"; ساخته شود. اگر این گزینه مشخص نشده باشد، گروه MODP 2048 بیتی با زیرگروه مرتبه اول 256 بیتی طبق تعریف RFC5114 بخش 2.3 استفاده خواهد شد.

c2s_protocol_options: [Option, ...]

فهرست گزینه‌های کلی SSL برای استفاده در اتصالات c2s. این گزینه‌ها به set_options() در OpenSSL نگاشت می‌شوند. مقدار پیش‌فرض در مثال زیر نشان داده شده است:

مثال:

c2s_protocol_options:
  - no_sslv3
  - cipher_server_preference
  - no_compression

c2s_tls_compression: true | false

آیا فشرده‌سازی TLS برای اتصالات c2s فعال یا غیرفعال شود. مقدار پیش‌فرض false است.

ca_file: Path

مسیر به فایل گواهی‌های ریشه CA. به‌طور پیش‌فرض در صورت امکان از فایل تعریف‌شده توسط سیستم استفاده می‌شود.

برای اتصالات سرور، این گزینه ca_file توسط گزینه s2s_cafile نادیده گرفته می‌شود.

cache_life_time: timeout()

مدت زمان نگهداری یک آیتم در کش. پس از انقضا، آیتم متناظر از کش پاک می‌شود. مقدار پیش‌فرض 1 hour (یک ساعت) است. چند ماژول گزینه مشابهی دارند؛ و برخی بخش‌های هسته‌ای ejabberd نیز از گزینه‌های مشابهی پشتیبانی می‌کنند، ببینید: auth_cache_life_time، oauth_cache_life_time، router_cache_life_time، و sm_cache_life_time.

cache_missed: true | false

آیا جستجوهای ناموفق کش شوند یا خیر. هنگامی که سعی می‌شود مقداری در پایگاه داده پیدا شود و یافت نشود و این گزینه روی true تنظیم باشد، این تلاش کش می‌شود و تا انقضای کش (ببینید cache_life_time) هیچ تلاشی مجدد انجام نخواهد شد. معمولاً نیازی به تغییر این گزینه نیست. مقدار پیش‌فرض true است. چند ماژول گزینه مشابهی دارند؛ و برخی بخش‌های هسته‌ای ejabberd نیز از گزینه‌های مشابهی پشتیبانی می‌کنند، ببینید: auth_cache_missed، oauth_cache_missed، router_cache_missed، و sm_cache_missed.

cache_size: pos_integer() | infinity

حداکثر تعداد آیتم‌ها (نه حافظه!) در کش. به‌عنوان یک قاعده کلی، برای همه جداول به‌جز فهرست مخاطبان، باید این مقدار را برابر با حداکثر تعداد کاربران آنلاین مورد انتظار تنظیم کنید. برای جدول مخاطبان این عدد را در حدود ۲۰ ضرب کنید. اگر اندازه کش به این آستانه برسد، به‌طور کامل پاک می‌شود، یعنی تمام آیتم‌ها حذف می‌شوند و هشدار مربوطه ثبت می‌گردد. باید از پاکسازی مکرر کش خودداری کنید، زیرا عملکرد را کاهش می‌دهد. مقدار پیش‌فرض 1000 است. چند ماژول گزینه مشابهی دارند؛ و برخی بخش‌های هسته‌ای ejabberd نیز از گزینه‌های مشابهی پشتیبانی می‌کنند، ببینید: auth_cache_size، oauth_cache_size، router_cache_size، و sm_cache_size.

captcha_cmd: Path | ModuleName

توجه درباره این گزینه: در نسخه 23.01 بهبود یافته است. مسیر کامل به اسکریپتی که تصاویر basic.md#captcha|CAPTCHA تولید می‌کند. کلیدواژه @VERSION@ با شماره نسخه ejabberd در قالب XX.YY جایگزین می‌شود. کلیدواژه @SEMVER@ با شماره نسخه ejabberd در قالب semver (هنگام کامپایل با mix الیکسیر) یا قالب XX.YY (در غیر این صورت) جایگزین می‌شود. همچنین می‌تواند نام ماژولی باشد که پشتیبانی CAPTCHA در ejabberd را پیاده‌سازی کرده است. مقدار پیش‌فرضی وجود ندارد: هنگامی که این گزینه تنظیم نشده باشد، قابلیت CAPTCHA کاملاً غیرفعال است.

مثال‌ها:

هنگام استفاده از نصب‌کننده‌های ejabberd یا تصویر کانتینر، اسکریپت‌های نمونه captcha می‌توانند به این شکل استفاده شوند:

captcha_cmd: /opt/ejabberd-@VERSION@/lib/ejabberd-@SEMVER@/priv/bin/captcha.sh

captcha_host: String

منسوخ شده. به جای آن از captcha_url استفاده کنید.

captcha_limit: pos_integer() | infinity

حداکثر تعداد تصاویر basic.md#captcha|CAPTCHA تولیدشده در دقیقه برای هر JID مشخص. این گزینه برای محافظت از سرور در برابر حملات DoS مبتنی بر CAPTCHA طراحی شده است. مقدار پیش‌فرض infinity است.

captcha_url: URL | auto | undefined

توجه درباره این گزینه: در نسخه 23.04 بهبود یافته است. آدرس URL که درخواست‌های basic.md#captcha|CAPTCHA باید به آن ارسال شوند. توجه: باید request_handlers را نیز برای شنونده ejabberd_http پیکربندی کنید. اگر روی auto تنظیم شود، URL با استفاده از یک request_handler از قبل فعال‌شده ساخته می‌شود، با رمزگذاری در صورت در دسترس بودن. اگر روی undefined تنظیم شود، URL با استفاده از captcha_host منسوخ‌شده + /captcha ساخته می‌شود. مقدار پیش‌فرض auto است.

certfiles: [Path, ...]

این گزینه فهرستی از مسیرهای فایل (با امکان استفاده از wildcardها) حاوی گواهی‌های PEM یا کلیدهای خصوصی PEM را می‌پذیرد. در هنگام راه‌اندازی یا بارگذاری مجدد پیکربندی، ejabberd تمام گواهی‌ها را از این فایل‌ها می‌خواند، مرتب‌سازی می‌کند، موارد تکراری را حذف می‌کند، کلیدهای خصوصی متناظر را پیدا می‌کند و سپس زنجیره‌های کامل گواهی را برای استفاده در اتصالات TLS بازسازی می‌کند. از این گزینه زمانی استفاده کنید که TLS در هر یک از شنوندگان ejabberd فعال است: ejabberd_c2s، ejabberd_http و غیره. توجه: اگر فایل‌های گواهی را تغییر دادید یا مقدار گزینه را عوض کردید، برای بازسازی و بارگذاری مجدد زنجیره‌های گواهی، ejabberdctl reload-config را اجرا کنید.

مثال‌ها:

اگر از گواهی‌های Let’s Encrypt برای دامنه "domain.tld" استفاده می‌کنید، پیکربندی به این شکل خواهد بود:

certfiles:
  - /etc/letsencrypt/live/domain.tld/fullchain.pem
  - /etc/letsencrypt/live/domain.tld/privkey.pem

cluster_backend: Backend

یک بکند پایگاه داده برای ذخیره اطلاعات مربوط به خوشه‌بندی. تنها مقدار موجود در حال حاضر mnesia است.

cluster_nodes: [Node, ...]

فهرستی از گره‌های Erlang برای اتصال هنگام راه‌اندازی ejabberd. این گزینه عمدتاً برای سفارشی‌سازی ejabberd و راه‌اندازی‌های پیچیده در نظر گرفته شده است. مقدار پیش‌فرض یک فهرست خالی است.

default_db: mnesia | sql

database.md#default-database|پایگاه داده پیش‌فرض برای ذخیره داده‌های پایدار در ejabberd. برخی اجزا می‌توانند با گزینه‌های سطح بالای خاصی مانند oauth_db_type پیکربندی شوند. بسیاری از ماژول‌ها می‌توانند با گزینه‌های خاص ماژول، معمولاً با نام db_type، پیکربندی شوند. مقدار پیش‌فرض mnesia است.

default_ram_db: mnesia | redis | sql

ذخیره‌سازی فرار (در حافظه) پیش‌فرض برای ejabberd. برخی اجزا می‌توانند با گزینه‌های سطح بالای خاصی مانند router_db_type و sm_db_type پیکربندی شوند. برخی ماژول‌ها می‌توانند با گزینه‌های خاص ماژول، معمولاً با نام ram_db_type، پیکربندی شوند. مقدار پیش‌فرض mnesia است.

define_keyword: {NAME: Value}

توجه درباره این گزینه: در نسخه 25.03 اضافه شده است. امکان تعریف ../configuration/file-format.md#macros-and-keywords|کلیدواژه‌های پیکربندی را فراهم می‌کند.

مثال:

define_keyword:
  SQL_USERNAME: "eja.global"
host_config:
  localhost:
    define_keyword:
      SQL_USERNAME: "eja.localhost"
sql_username: "prefix.@SQL_USERNAME@"

define_macro: {NAME: Value}

توجه درباره این گزینه: در نسخه 25.03 بهبود یافته است. امکان تعریف ../configuration/file-format.md#macros-and-keywords|ماکروهای پیکربندی را فراهم می‌کند.

مثال:

define_macro:
  DEBUG: debug
  LOG_LEVEL: DEBUG
  USERBOB:
    user: bob@localhost
loglevel: LOG_LEVEL
acl:
  admin: USERBOB

disable_sasl_mechanisms: [Mechanism, ...]

فهرستی از مکانیزم‌های SASL (مانند DIGEST-MD5 یا SCRAM-SHA1) را مشخص کنید که نباید به کلاینت ارائه شوند. برای راحتی، مقدار Mechanism به بزرگی و کوچکی حروف حساس نیست. مقدار پیش‌فرض یک فهرست خالی است، یعنی به‌طور پیش‌فرض هیچ مکانیزمی غیرفعال نشده است.

disable_sasl_scram_downgrade_protection: true | false

امکان غیرفعال‌سازی ارسال داده‌های مورد نیاز توسط XEP-0474: SASL SCRAM Downgrade Protection را فراهم می‌کند. برخی کلاینت‌های دارای باگ شناخته‌شده (مانند آن‌هایی که از strophejs 1.6.2 استفاده می‌کنند) هنگامی که سرور داده‌های این مشخصه را ارسال کند، قادر به احراز هویت نخواهند بود. این گزینه به سرور اجازه می‌دهد آن را غیرفعال کند تا حتی کلاینت‌های دارای باگ بتوانند متصل شوند، اما در عوض حفاظت MITM کاهش می‌یابد. مقدار پیش‌فرض این گزینه false است که این افزونه را فعال می‌کند.

domain_balancing: {Domain: Options}

الگوریتمی برای ../guide/clustering.md#service-load-balancing|توزیع بار اجزایی که به یک خوشه ejabberd متصل شده‌اند. این یعنی می‌توانید یک یا چند نمونه از همان کامپوننت را روی هر گره ejabberd متصل کنید و ترافیک به‌طور خودکار توزیع شود. الگوریتم تحویل پیام به کامپوننت(ها) را می‌توان با این گزینه مشخص کرد. برای هر کامپوننت متصل به عنوان Domain، Options موجود عبارتند از:

component_number: 2..1000

تعداد کامپوننت‌هایی که باید متوازن شوند.

type: Value

نحوه تحویل stanzaها به کامپوننت‌های متصل. مقدار پیش‌فرض random است. مقادیر ممکن:

- bare_destination

بر اساس JID ساده (بدون resource) از مشخصه to بسته

- bare_source

بر اساس JID ساده (بدون resource) از مشخصه from بسته استفاده می‌شود

- destination

یک نمونه بر اساس JID کامل از مشخصه to بسته انتخاب می‌شود

- random

یک نمونه به‌طور تصادفی انتخاب می‌شود

- source

بر اساس JID کامل از مشخصه from بسته

مثال:

domain_balancing:
  component.domain.tld:
    type: destination
    component_number: 5
  transport.example.org:
    type: bare_source

ext_api_headers: Headers

رشته‌ای از سرآیندها (جدا شده با ویرگول ,) که ejabberd هنگام ارسال درخواست‌های ReST ارائه خواهد داد. مقدار پیش‌فرض یک رشته خالی از سرآیندها است: "".

ext_api_http_pool_size: pos_integer()

اندازه استخر HTTP را تعریف می‌کند، یعنی حداکثر تعداد نشست‌هایی که سرویس ReST در ejabberd به‌طور همزمان مدیریت خواهد کرد. مقدار پیش‌فرض: 100 است.

ext_api_path_oauth: Path

مسیر پایه URI هنگام انجام درخواست‌های OAUTH ReST را تعریف می‌کند. مقدار پیش‌فرض: "/oauth" است.

ext_api_url: URL

URI پایه هنگام انجام درخواست‌های ReST را تعریف می‌کند. مقدار پیش‌فرض: "http://localhost/api" است.

extauth_pool_name: Name

پسوند نام استخر را در authentication.md#external-script|احراز هویت خارجی تعریف می‌کند، به‌طوری که نام کامل استخر extauth_pool_Name خواهد بود. مقدار پیش‌فرض نام میزبان است.

extauth_pool_size: Size

این گزینه تعداد نمونه‌های برنامه authentication.md#external-script|احراز هویت خارجی یکسان را برای توزیع بار بهتر تعریف می‌کند. مقدار پیش‌فرض تعداد هسته‌های CPU موجود است.

extauth_program: Path

در این گزینه مسیر کامل به authentication.md#external-script|اسکریپت احراز هویت خارجی را مشخص کنید. اسکریپت باید توسط ejabberd قابل اجرا باشد.

fqdn: Domain

نام دامنه کاملاً واجد شرایط که در احراز هویت SASL DIGEST-MD5 استفاده خواهد شد. به‌طور پیش‌فرض به‌صورت خودکار تشخیص داده می‌شود.

hide_sensitive_log_data: true | false

یک گزینه حریم خصوصی برای جلوگیری از ثبت داده‌های حساس (عمدتاً آدرس‌های IP) در لاگ. مقدار پیش‌فرض false است برای سازگاری با نسخه‌های قبلی.

host_config: {Host: Options}

این گزینه برای تعریف مجدد Options برای ../configuration/basic.md#virtual-hosting|میزبان مجازی Host استفاده می‌شود. در مثال زیر روش احراز هویت LDAP برای میزبان مجازی domain.tld و روش SQL برای میزبان مجازی example.org استفاده خواهد شد.

مثال:

hosts:
  - domain.tld
  - example.org
auth_method:
  - sql
host_config:
  domain.tld:
    auth_method:
      - ldap

hosts: [Domain1, Domain2, ...]

فهرستی از یک یا چند ../configuration/basic.md#host-names|نام میزبان (یا دامنه) که ejabberd سرویس‌دهی خواهد کرد. این یک گزینه اجباری است.

hosts_alias: {Alias: Host}

توجه درباره این گزینه: در نسخه 25.07 اضافه شده است. تعریف نام‌های مستعار برای میزبان‌های مجازی موجود مدیریت‌شده توسط ejabberd. یک نام مستعار می‌تواند یک عبارت regexp باشد. این گزینه فقط توسط شنونده ejabberd_http بررسی می‌شود.

مثال:

hosts:
  - domain.tld
  - example.org
hosts_alias:
  xmpp.domain.tld: domain.tld
  jabber.domain.tld: domain.tld
  mytest.net: example.org
  "exa*": example.org

include_config_file: [Filename, ...] | {Filename: Options}

خواندن و ../configuration/file-format.md#include-additional-files|الحاق فایل اضافی از Filename. اگر مقدار در قالب {Filename: Options} ارائه شود، Options باید یکی از موارد زیر باشد:

allow_only: [OptionName, ...]

فقط استفاده از آن گزینه‌ها را در فایل الحاق‌شده Filename مجاز می‌داند. گزینه‌هایی که با این معیار مطابقت ندارند پذیرفته نمی‌شوند. مقدار پیش‌فرض شامل تمام گزینه‌ها است.

disallow: [OptionName, ...]

استفاده از آن گزینه‌ها را در فایل الحاق‌شده Filename ممنوع می‌کند. گزینه‌هایی که با این معیار مطابقت دارند پذیرفته نمی‌شوند. مقدار پیش‌فرض یک فهرست خالی است.

install_contrib_modules: [Module, ...]

توجه درباره این گزینه: در نسخه 23.10 اضافه شده است. ماژول‌هایی از ../../admin/guide/modules.md#ejabberd-modules|ejabberd-modules که باید به‌طور خودکار هنگام راه‌اندازی نصب شوند. مقدار پیش‌فرض یک فهرست خالی از ماژول‌ها است: [].

مثال:

install_contrib_modules:
  - mod_tombstones
modules:
  mod_tombstones: {}

jwt_auth_only_rule: AccessName

این قانون ACL حساب‌هایی را تعریف می‌کند که فقط می‌توانند از روش احراز هویت authentication.md#jwt-authentication|JWT استفاده کنند، حتی اگر روش‌های دیگری نیز در فایل پیکربندی ejabberd تعریف شده باشند. به عبارت دیگر: اگر چند روش احراز هویت برای این میزبان فعال باشند (JWT، SQL، ...)، کاربرانی که با این قانون مطابقت دارند فقط می‌توانند از JWT استفاده کنند. مقدار پیش‌فرض none است.

jwt_jid_field: FieldName

به‌طور پیش‌فرض، JID در فیلد "jid" JWT تعریف می‌شود. در این گزینه می‌توانید نام فیلد دیگری در authentication.md#jwt-authentication|JWT که JID در آن تعریف شده است را مشخص کنید.

jwt_key: FilePath

مسیر به فایلی که حاوی کلید authentication.md#jwt-authentication|JWT است.

قالب‌های فایل پشتیبانی‌شده:

•PEM format - کلیدهای رمزگذاری‌شده استاندارد PEM (RSA، EC، EdDSA و غیره)
•JWK (JSON Web Key) - فرمت JSON
•JWK Set - JSON با آرایه "keys" (اما باید دقیقاً یک کلید داشته باشد)

به طور پیش‌فرض هیچ مسیری تعریف نشده است، یعنی: undefined.

language: Language

../configuration/basic.md#default-language|زبان پیش‌فرض رشته‌های سرور که توسط کلاینت‌های XMPP قابل مشاهده هستند را تعریف می‌کند. اگر یک کلاینت XMPP دارای ویژگی xml:lang نباشد، از زبان مشخص‌شده استفاده می‌شود. مقدار پیش‌فرض "en" است.

ldap_backups: [Host, ...]

فهرستی از آدرس‌های IP یا نام‌های DNS سرورهای پشتیبان LDAP (به ../configuration/ldap.md#ldap-connection|اتصال LDAP مراجعه کنید). هنگامی که هیچ‌کدام از سرورهای فهرست‌شده در گزینه ldap_servers قابل دسترس نباشند، ejabberd به این سرورهای پشتیبان متصل می‌شود. پیش‌فرض یک فهرست خالی است، یعنی هیچ سرور پشتیبانی مشخص نشده است. توجه داشته باشید که ejabberd تنها زمانی به سرور بعدی متصل می‌شود که اتصال موجود قطع شود؛ این برنامه تشخیص نمی‌دهد که یک سرور که قبلاً تلاش اتصال به آن ناموفق بوده، دوباره در دسترس شده است.

ldap_base: Base

دایرکتوری پایه LDAP که حساب‌های کاربری را ذخیره می‌کند. هیچ مقدار پیش‌فرضی وجود ندارد: برای اینکه اتصالات LDAP به درستی کار کنند، باید این گزینه را تنظیم کنید.

ldap_deref_aliases: never | always | finding | searching

تعیین می‌کند که آیا نام‌های مستعار (alias) ارجاع‌زدایی شوند یا خیر. مقدار پیش‌فرض never است.

ldap_dn_filter: {Filter: FilterAttrs}

این فیلتر بر روی نتایج بازگشتی از فیلتر اصلی اعمال می‌شود. این فیلتر یک جستجوی LDAP اضافی انجام می‌دهد تا نتیجه کامل را تولید کند. این زمانی مفید است که نتوان تمام قوانین فیلتر را در ldap_filter تعریف کرد. می‌توان متغیرهای الگو "%u"، "%d"، "%s" و "%D" را در Filter تعریف کرد: "%u" با بخش کاربری JID جایگزین می‌شود، "%d" با دامنه متناظر (میزبان مجازی) جایگزین می‌شود، تمام متغیرهای "%s" به ترتیب با مقادیر ویژگی‌های FilterAttrs جایگزین می‌شوند و "%D" با Distinguished Name از مجموعه نتایج جایگزین می‌شود. هیچ مقدار پیش‌فرضی وجود ندارد، به این معنی که نتیجه فیلتر نمی‌شود. هشدار: از آنجایی که این فیلتر جستجوهای اضافی LDAP انجام می‌دهد، تنها به عنوان آخرین راه‌حل از آن استفاده کنید: در صورت امکان سعی کنید تمام قوانین فیلتر را در گزینه ldap_filter تعریف کنید.

مثال:

ldap_dn_filter:
  "(&(name=%s)(owner=%D)(user=%u@%d))": [sn]

ldap_encrypt: tls | none

تعیین می‌کند که آیا اتصال LDAP با TLS رمزگذاری شود یا خیر. مقدار پیش‌فرض none است. توجه: رمزگذاری STARTTLS پشتیبانی نمی‌شود.

ldap_filter: Filter

یک فیلتر LDAP طبق تعریف RFC4515. هیچ مقدار پیش‌فرضی وجود ندارد. مثال: "(&(objectClass=shadowAccount)(memberOf=XMPP Users))". توجه: فراموش نکنید که براکت‌ها را ببندید و از فضاهای خالی اضافی استفاده نکنید. همچنین نباید از ویژگی "uid" در فیلتر استفاده کنید زیرا این ویژگی به طور خودکار به فیلتر اضافه می‌شود.

ldap_password: Password

رمز عبور اتصال (Bind password). مقدار پیش‌فرض یک رشته خالی است.

ldap_port: 1..65535

پورت اتصال به سرور LDAP. پورت پیش‌فرض 389 در صورت غیرفعال بودن رمزگذاری و 636 در صورت فعال بودن رمزگذاری است.

ldap_rootdn: RootDN

Distinguished Name اتصال (Bind). مقدار پیش‌فرض یک رشته خالی است که به معنای "اتصال ناشناس" است.

ldap_servers: [Host, ...]

فهرستی از آدرس‌های IP یا نام‌های DNS سرورهای LDAP (به ../configuration/ldap.md#ldap-connection|اتصال LDAP مراجعه کنید). ejabberd بلافاصله به تمام آن‌ها متصل می‌شود و در صورت قطع اتصال، به طور نامحدود مجدداً متصل می‌شود. مقدار پیش‌فرض [localhost] است.

ldap_tls_cacertfile: Path

مسیر فایلی که حاوی گواهی‌های CA رمزگذاری‌شده با PEM است. این گزینه هنگامی که تأیید TLS فعال است الزامی می‌باشد.

ldap_tls_certfile: Path

مسیر فایلی که حاوی گواهی رمزگذاری‌شده با PEM به همراه کلید خصوصی رمزگذاری‌شده با PEM است. این گواهی هنگامی که TLS برای اتصالات LDAP فعال است توسط ejabberd ارائه می‌شود. هیچ مقدار پیش‌فرضی وجود ندارد، به این معنی که هیچ گواهی کلاینتی ارسال نمی‌شود.

ldap_tls_depth: Number

حداکثر عمق تأیید را هنگامی که تأیید TLS فعال است مشخص می‌کند، یعنی تا چه حدی در یک زنجیره گواهی‌ها می‌توان پیش رفت قبل از اینکه تأیید شکست‌خورده تلقی شود. گواهی همتا = 0، گواهی CA = 1، گواهی CA سطح بالاتر = 2 و غیره. مقدار 2 به این معناست که یک زنجیره می‌تواند حداکثر شامل گواهی همتا، گواهی CA، گواهی CA بعدی و یک گواهی CA اضافی باشد. مقدار پیش‌فرض 1 است.

ldap_tls_verify: false | soft | hard

این گزینه تعیین می‌کند که آیا گواهی سرور LDAP هنگامی که TLS فعال است تأیید شود یا خیر. هنگامی که hard تنظیم شده باشد، ejabberd در صورت نامعتبر بودن گواهی ادامه نمی‌دهد. هنگامی که soft تنظیم شده باشد، ejabberd حتی اگر بررسی ناموفق باشد ادامه می‌دهد. مقدار پیش‌فرض false است که به این معنی است که هیچ بررسی‌ای انجام نمی‌شود.

ldap_uids: [Attr] | {Attr: AttrFormat}

ویژگی‌های LDAP که فهرستی از ویژگی‌ها برای استفاده به عنوان جایگزین دریافت JID را نگه می‌دارند، که در آن Attr یک ویژگی LDAP است که بخش کاربری JID را نگه می‌دارد و AttrFormat باید دقیقاً یک متغیر الگو "%u" داشته باشد که با بخش کاربری JID جایگزین می‌شود. به عنوان مثال، "%u@example.org". اگر مقدار به شکل [Attr] باشد، فرض می‌شود AttrFormat برابر با "%u" است.

listen: [Options, ...]

گزینه پیکربندی شنوندگان. برای جزئیات به بخش listen.md|ماژول‌های Listen مراجعه کنید.

log_burst_limit_count: Number

توجه درباره این گزینه: در نسخه 22.10 اضافه شد. تعداد پیام‌هایی که در بازه زمانی log_burst_limit_window_time پذیرفته می‌شوند قبل از اینکه شروع به رد کردن آن‌ها شود. پیش‌فرض 500 است.

log_burst_limit_window_time: Number

توجه درباره این گزینه: در نسخه 22.10 اضافه شد. بازه زمانی برای محدودسازی نرخ پیام‌های گزارش. پیش‌فرض 1 ثانیه است.

log_modules_fully: [Module, ...]

توجه درباره این گزینه: در نسخه 23.01 اضافه شد. فهرست ماژول‌هایی که همه چیز را مستقل از گزینه کلی loglevel گزارش می‌دهند.

log_rotate_count: Number

تعداد فایل‌های گزارش چرخشی که نگه داشته می‌شوند. مقدار پیش‌فرض 1 است، که به این معنی است که تنها ejabberd.log.0، error.log.0 و crash.log.0 نگه داشته می‌شوند.

log_rotate_size: pos_integer() | infinity

اندازه (به بایت) یک فایل گزارش برای فعال‌سازی چرخش. اگر روی infinity تنظیم شود، چرخش گزارش غیرفعال می‌شود. مقدار پیش‌فرض 10 مگابایت برحسب بایت است: 10485760.

loglevel: none | emergency | alert | critical | error | warning | notice | info | debug

سطح جزئیات ../configuration/basic.md#logging|گزارش‌گیری ejabberd. مقدار پیش‌فرض info است. توجه: نسخه‌های قبلی ejabberd سطوح گزارش را به فرمت عددی (0..5) تعریف می‌کردند. مقادیر عددی هنوز برای سازگاری با نسخه‌های قدیمی پذیرفته می‌شوند، اما توصیه نمی‌شوند.

max_fsm_queue: Size

این گزینه حداکثر تعداد عناصر در صف FSM (ماشین حالت متناهی) را مشخص می‌کند. به طور تقریبی، هر پیام در این صف‌ها نشان‌دهنده یک استانزای XML است که در صف قرار گرفته تا به جریان خروجی مربوطه ارسال شود. اگر اندازه صف به حد مجاز برسد (به عنوان مثال، زیرا دریافت‌کننده استانزاها بسیار کند است)، FSM و اتصال متناظر (در صورت وجود) خاتمه می‌یابند و پیام خطا گزارش می‌شود. مقدار مناسب برای این گزینه به پیکربندی سخت‌افزاری شما بستگی دارد. مقادیر مجاز اعداد صحیح مثبت هستند. مقدار پیش‌فرض 10000 است.

modules: {Module: Options}

تمام گزینه‌های پیکربندی modules.md|ماژول‌ها را تنظیم می‌کند.

negotiation_timeout: timeout()

زمان انتظار برای تکمیل مذاکره جریان XMPP. هنگامی که وقت تمام می‌شود، جریان XMPP متناظر بسته می‌شود. مقدار پیش‌فرض 120 ثانیه است.

net_ticktime: timeout()

این گزینه می‌تواند برای تنظیم پارامتر tick time در net_kernel استفاده شود. به ماشین مجازی Erlang می‌گوید که گره‌ها چند بار باید بررسی کنند که ارتباط درون‌گره‌ای قطع نشده است. این گزینه باید مقدار یکسانی در تمام گره‌ها داشته باشد، وگرنه به خطاهای نامحسوس منجر می‌شود. معمولاً بهتر است مقدار پیش‌فرض این گزینه را بدون تغییر رها کنید، تنها در صورتی که می‌دانید چه کاری انجام می‌دهید آن را تنظیم کنید. مقدار پیش‌فرض 1 minute است.

new_sql_schema: true | false

توجه درباره این گزینه: در نسخه 25.10 منسوخ شد. این گزینه در ejabberd نسخه 25.10 به sql_schema_multihost تغییر نام یافت. لطفاً پیکربندی خود را به‌روز کنید تا از نام گزینه جدید استفاده کنید.

oauth_access: AccessName

به طور پیش‌فرض ایجاد توکن‌های OAuth مجاز نیست. برای تعریف اینکه کدام کاربران می‌توانند توکن‌های OAuth ایجاد کنند، می‌توانید به یک قانون دسترسی ejabberd در گزینه oauth_access ارجاع دهید. از all استفاده کنید تا همه بتوانند توکن ایجاد کنند.

oauth_cache_life_time: timeout()

مانند cache_life_time، اما تنها برای کش OAuth اعمال می‌شود. اگر تنظیم نشده باشد، از مقدار cache_life_time استفاده می‌شود.

oauth_cache_missed: true | false

مانند cache_missed، اما تنها برای کش OAuth اعمال می‌شود. اگر تنظیم نشده باشد، از مقدار cache_missed استفاده می‌شود.

oauth_cache_rest_failure_life_time: timeout()

توجه درباره این گزینه: در نسخه 21.01 اضافه شد. مدت زمانی که یک خطا در OAuth ReST در کش نگه داشته می‌شود. مقدار پیش‌فرض infinity است.

oauth_cache_size: pos_integer() | infinity

مانند cache_size، اما تنها برای کش OAuth اعمال می‌شود. اگر تنظیم نشده باشد، از مقدار cache_size استفاده می‌شود.

oauth_client_id_check: allow | db | deny

تعریف می‌کند که آیا احراز هویت کلاینت همیشه مجاز است، رد می‌شود، یا بستگی دارد به اینکه آیا شناسه کلاینت در پایگاه داده موجود است. مقدار پیش‌فرض db است.

oauth_db_type: mnesia | sql

بک‌اند پایگاه داده برای استفاده در احراز هویت OAuth. مقدار پیش‌فرض از گزینه default_db گرفته می‌شود، یا اگر تنظیم نشده باشد، mnesia استفاده می‌شود.

oauth_expire: timeout()

مدت زمانی که توکن OAuth معتبر است، به ثانیه. پس از این مدت، توکن منقضی می‌شود و اعتبارنامه واگذاری‌شده دیگر قابل استفاده نیست و از پایگاه داده حذف می‌شود. مقدار پیش‌فرض 4294967 ثانیه است.

oauth_use_cache: true | false

مانند use_cache، اما تنها برای کش OAuth اعمال می‌شود. اگر تنظیم نشده باشد، از مقدار use_cache استفاده می‌شود.

oom_killer: true | false

فعال یا غیرفعال کردن OOM killer (کشنده حافظه تمام‌شده). هنگامی که حافظه سیستم از حد تعریف‌شده در گزینه oom_watermark بالاتر می‌رود، ejabberd OOM killer را برای خاتمه دادن به فرآیندهای Erlang با بیشترین مصرف حافظه فعال می‌کند. توجه داشته باشید که برای حفظ عملکرد، ejabberd تنها تلاش می‌کند فرآیندهای موقت را مانند مدیریت‌کننده‌های نشست‌های کلاینت، s2s یا اتصالات پایگاه داده را پایان دهد. مقدار پیش‌فرض true است.

oom_queue: Size

OOM killer را هنگامی فعال می‌کند که برخی از فرآیندهای Erlang در حال اجرا صف پیام‌هایی بالاتر از این Size داشته باشند. توجه داشته باشید که چنین فرآیندهایی کشته نمی‌شوند اگر گزینه oom_killer روی false تنظیم شده باشد یا اگر oom_watermark هنوز به آن نرسیده باشد.

oom_watermark: Percent

درصدی از کل حافظه سیستم که در صورت مصرف، OOM killer باید فعال شود و برخی از فرآیندها احتمالاً کشته شوند (به گزینه oom_killer مراجعه کنید). بعداً، هنگامی که حافظه به زیر این Percent کاهش یابد، OOM killer غیرفعال می‌شود. مقدار پیش‌فرض 80 درصد است.

outgoing_s2s_families: [ipv6 | ipv4, ...]

توجه درباره این گزینه: در نسخه 23.01 تغییر کرد. مشخص می‌کند که کدام خانواده‌های آدرس و به چه ترتیبی امتحان شوند. پیش‌فرض [ipv6, ipv4] است که به این معنی است که ابتدا اتصال با IPv6 امتحان می‌شود، و در صورت شکست از IPv4 استفاده می‌شود. این گزینه هنگام استفاده از ejabberd نسخه 23.01 و Erlang/OTP 22 یا نسخه‌های جدیدتر آن‌ها منسوخ و نامرتبط است.

outgoing_s2s_ipv4_address: Address

توجه درباره این گزینه: در نسخه 20.12 اضافه شد. آدرس IPv4 که هنگام برقراری اتصال خروجی S2S IPv4 استفاده می‌شود را مشخص می‌کند، به عنوان مثال "127.0.0.1". مقدار پیش‌فرض undefined است.

outgoing_s2s_ipv6_address: Address

توجه درباره این گزینه: در نسخه 20.12 اضافه شد. آدرس IPv6 که هنگام برقراری اتصال خروجی S2S IPv6 استفاده می‌شود را مشخص می‌کند، به عنوان مثال "::FFFF:127.0.0.1". مقدار پیش‌فرض undefined است.

outgoing_s2s_port: 1..65535

شماره پورتی که برای اتصالات خروجی s2s هنگامی که سرور مقصد رکورد SRV ندارد استفاده می‌شود. مقدار پیش‌فرض 5269 است.

outgoing_s2s_timeout: timeout()

وقفه زمانی به ثانیه برای تلاش‌های اتصال خروجی S2S. مقدار پیش‌فرض 10 ثانیه است.

pam_service: Name

این گزینه نام سرویس authentication.md#pam-authentication|PAM را تعریف می‌کند. برای اطلاعات بیشتر به مستندات PAM سیستم‌عامل خود مراجعه کنید. مقدار پیش‌فرض ejabberd است.

pam_userinfotype: username | jid

این گزینه تعریف می‌کند که ejabberd چه نوع اطلاعاتی درباره کاربر به سرویس authentication.md#pam-authentication|PAM ارائه می‌دهد: فقط نام کاربری، یا JID کاربر. مقدار پیش‌فرض username است.

pgsql_users_number_estimate: true | false

تعیین می‌کند که آیا از تخمین PostgreSQL هنگام شمارش کاربران ثبت‌نام‌شده استفاده شود. مقدار پیش‌فرض false است.

queue_dir: Directory

اگر گزینه queue_type روی file تنظیم شده باشد، از این Directory برای ذخیره صف‌های فایل استفاده می‌شود. پیش‌فرض این است که صف‌ها درون دایرکتوری Mnesia نگه داشته شوند.

queue_type: ram | file

نوع پیش‌فرض صف‌ها در ejabberd. ماژول‌ها می‌توانند مقدار خاص خود را برای این گزینه داشته باشند. مقدار ram به این معنی است که صف‌ها در حافظه نگه داشته می‌شوند. اگر مقدار file تنظیم شود، می‌توانید دایرکتوری را در گزینه queue_dir مشخص کنید که صف‌های فایل در آن قرار می‌گیرند. مقدار پیش‌فرض ram است.

redis_connect_timeout: timeout()

وقفه زمانی برای انتظار جهت برقراری مجدد اتصال به سرور database.md#redis|Redis. پیش‌فرض 1 second است.

redis_db: Number

شماره پایگاه داده database.md#redis|Redis. پیش‌فرض 0 است.

redis_password: Password

رمز عبور سرور database.md#redis|Redis. پیش‌فرض یک رشته خالی است، یعنی بدون رمز عبور.

redis_pool_size: Number

تعداد اتصالات همزمان به سرور database.md#redis|Redis. مقدار پیش‌فرض 10 است.

redis_port: 1..65535

پورتی که سرور database.md#redis|Redis اتصالات را روی آن می‌پذیرد. پیش‌فرض 6379 است.

redis_queue_type: ram | file

نوع صف درخواست برای سرور database.md#redis|Redis. برای توضیح به شرح گزینه queue_type مراجعه کنید. مقدار پیش‌فرض همان مقدار تعریف‌شده در queue_type یا ram در صورت عدم تنظیم آن است.

redis_server: Host | IP Address | Unix Socket Path

توجه درباره این گزینه: در نسخه 24.12 بهبود یافت. نام میزبان، آدرس IP یا مسیر سوکت دامنه یونیکس سرور database.md#redis|Redis. مسیر سوکت دامنه یونیکس را این‌گونه تنظیم کنید: "unix:/path/to/socket". مقدار پیش‌فرض localhost است.

registration_timeout: timeout()

این یک گزینه سراسری برای ماژول mod_register است. تعداد دفعات ثبت‌نام از یک آدرس IP یا نام کاربری مشخص را محدود می‌کند. بنابراین، کاربری که در این مدت پس از ثبت‌نام قبلی‌اش از همان آدرس IP یا JID تلاش می‌کند یک حساب جدید ثبت کند، پیام خطایی با توضیح مربوطه دریافت می‌کند. برای غیرفعال کردن این محدودیت، مقدار را روی infinity تنظیم کنید. مقدار پیش‌فرض 600 seconds است.

replaced_connection_timeout: timeout()

توجه درباره این گزینه: در نسخه 26.01 اضافه شد. حداکثر زمانی که نشست جدید منتظر خاتمه یافتن نشستی که جایگزین آن می‌شود، می‌ماند. این به نشست قدیمی اجازه می‌دهد که حضورهای ناموجود خود را به درستی ارسال کند و به شرایط رقابتی احتمالی بین حضورهای نشست‌های قدیمی و جدید کمک می‌کند.

resource_conflict: setresource | closeold | closenew

توجه: این گزینه منسوخ شده است و ممکن است در نسخه‌های آینده حذف شود. مقادیر ممکن دقیقاً با سه احتمال توصیف‌شده در XMPP Core: بخش 7.7.2.2 مطابقت دارند. مقدار پیش‌فرض closeold است. اگر کلاینت از احراز هویت قدیمی Jabber Non-SASL (XEP-0078) استفاده کند، این گزینه رعایت نمی‌شود و عملیات انجام‌شده closeold است.

rest_proxy: Host

توجه درباره این گزینه: در نسخه 25.07 اضافه شد. آدرس یک پروکسی HTTP Connect که توسط ماژول‌هایی که فراخوانی‌های rest انجام می‌دهند (مانند ejabberd_oauth_rest) استفاده می‌شود.

rest_proxy_password: string()

توجه درباره این گزینه: در نسخه 25.07 اضافه شد. رمز عبور مورد استفاده برای احراز هویت به پروکسی HTTP Connect که توسط ماژول‌هایی که فراخوانی‌های rest انجام می‌دهند (مانند ejabberd_oauth_rest) استفاده می‌شود.

rest_proxy_port: 1..65535

توجه درباره این گزینه: در نسخه 25.07 اضافه شد. پورت یک پروکسی HTTP Connect که توسط ماژول‌هایی که فراخوانی‌های rest انجام می‌دهند (مانند ejabberd_oauth_rest) استفاده می‌شود.

rest_proxy_username: string()

توجه درباره این گزینه: در نسخه 25.07 اضافه شد. نام کاربری مورد استفاده برای احراز هویت به پروکسی HTTP Connect که توسط ماژول‌هایی که فراخوانی‌های rest انجام می‌دهند (مانند ejabberd_oauth_rest) استفاده می‌شود.

router_cache_life_time: timeout()

مانند cache_life_time، اما تنها برای کش جدول مسیریابی اعمال می‌شود. اگر تنظیم نشده باشد، از مقدار cache_life_time استفاده می‌شود.

router_cache_missed: true | false

مانند cache_missed، اما تنها برای کش جدول مسیریابی اعمال می‌شود. اگر تنظیم نشده باشد، از مقدار cache_missed استفاده می‌شود.

router_cache_size: pos_integer() | infinity

مانند cache_size، اما تنها برای کش جدول مسیریابی اعمال می‌شود. اگر تنظیم نشده باشد، از مقدار cache_size استفاده می‌شود.

router_db_type: mnesia | redis | sql

بک‌اند پایگاه داده برای استفاده در اطلاعات مسیریابی. مقدار پیش‌فرض از گزینه default_ram_db گرفته می‌شود، یا اگر تنظیم نشده باشد، mnesia استفاده می‌شود.

router_use_cache: true | false

مانند use_cache، اما تنها برای کش جدول مسیریابی اعمال می‌شود. اگر تنظیم نشده باشد، از مقدار use_cache استفاده می‌شود.

rpc_timeout: timeout()

وقفه زمانی برای فراخوانی‌های تابع از راه دور بین گره‌ها در یک خوشه ejabberd. احتمالاً هرگز نباید این مقدار را تغییر دهید زیرا این فراخوانی‌ها تنها برای نیازهای داخلی استفاده می‌شوند. مقدار پیش‌فرض 5 ثانیه است.

s2s_access: Access

این basic.md#access-rules|قانون دسترسی تعریف می‌کند که اتصالات s2s به کدام سرورهای راه دور می‌توانند برقرار شوند. مقدار پیش‌فرض all است؛ هیچ محدودیتی اعمال نمی‌شود و اتصال s2s به/از تمام سرورهای راه دور مجاز است.

s2s_cafile: Path

مسیر فایلی با گواهی‌های ریشه CA که برای احراز هویت اتصالات s2s استفاده می‌شود. اگر تنظیم نشده باشد، از مقدار ca_file استفاده می‌شود.

می‌توانید از host_config برای تعیین این گزینه به ازای هر میزبان مجازی استفاده کنید.

s2s_ciphers: [Cipher, ...]

فهرستی از رمزهای OpenSSL برای استفاده در اتصالات s2s. مقدار پیش‌فرض در مثال زیر نشان داده شده است:

مثال:

s2s_ciphers:
  - HIGH
  - "!aNULL"
  - "!eNULL"
  - "!3DES"
  - "@STRENGTH"

s2s_dhfile: Path

مسیر کامل به فایلی که حاوی پارامترهای DH سفارشی برای استفاده در اتصالات s2s است. چنین فایلی می‌تواند با دستور "openssl dhparam -out dh.pem 2048"; ایجاد شود. اگر این گزینه مشخص نشده باشد، از گروه 2048 بیتی MODP با زیرگروه مرتبه اول 256 بیتی طبق تعریف RFC5114 بخش 2.3 استفاده می‌شود.

s2s_dns_retries: Number

تعداد تلاش مجدد برای حل DNS. مقدار پیش‌فرض 2 است.

s2s_dns_timeout: timeout()

وقفه زمانی برای حل DNS. مقدار پیش‌فرض 10 ثانیه است.

s2s_max_retry_delay: timeout()

حداکثر تأخیر مجاز برای تلاش مجدد اتصال s2s پس از یک تلاش ناموفق. مقدار پیش‌فرض 300 ثانیه (5 دقیقه) است.

s2s_protocol_options: [Option, ...]

فهرست گزینه‌های کلی SSL برای استفاده در اتصالات s2s. این‌ها به set_options() OpenSSL نگاشت می‌شوند. مقدار پیش‌فرض در مثال زیر نشان داده شده است:

مثال:

s2s_protocol_options:
  - no_sslv3
  - cipher_server_preference
  - no_compression

s2s_queue_type: ram | file

نوع صف برای بسته‌های s2s. برای توضیح به شرح گزینه queue_type مراجعه کنید. مقدار پیش‌فرض همان مقدار تعریف‌شده در queue_type یا ram در صورت عدم تنظیم آن است.

s2s_timeout: timeout()

زمان انتظار قبل از بستن یک اتصال s2s بیکار. مقدار پیش‌فرض 1 ساعت است.

s2s_tls_compression: true | false

تعیین می‌کند که آیا فشرده‌سازی TLS برای اتصالات s2s فعال یا غیرفعال شود. مقدار پیش‌فرض false است.

s2s_use_starttls: true | false | optional | required

تعیین می‌کند که آیا از STARTTLS برای اتصالات s2s استفاده شود. مقدار false به این معنی است که STARTTLS ممنوع است. مقدار true یا optional به این معنی است که STARTTLS فعال است اما اتصالات ساده هنوز مجاز هستند. و مقدار required به این معنی است که تنها اتصالات STARTTLS مجاز هستند. مقدار پیش‌فرض false است (به دلایل تاریخی).

s2s_zlib: true | false

تعیین می‌کند که آیا از فشرده‌سازی zlib (طبق تعریف در XEP-0138) استفاده شود یا خیر. مقدار پیش‌فرض false است. هشدار: این نوع فشرده‌سازی امروزه ناامن تلقی می‌شود.

shaper: {ShaperName: Rate}

این گزینه مجموعه‌ای از ../configuration/basic.md#shapers|شکل‌دهنده‌ها را تعریف می‌کند. هر شکل‌دهنده یک نام ShaperName دارد که می‌تواند در سایر بخش‌های فایل پیکربندی مانند گزینه shaper_rules استفاده شود. خود شکل‌دهنده با Rate تعریف می‌شود، که Rate نشان‌دهنده حداکثر نرخ ورودی مجاز به بایت در ثانیه است. هنگامی که یک اتصال از این حد بیشتر شود، ejabberd خواندن از سوکت را متوقف می‌کند تا زمانی که نرخ میانگین مجدداً به زیر حد مجاز برسد. در مثال زیر شکل‌دهنده normal سرعت ترافیک را به 1000 بایت در ثانیه و شکل‌دهنده fast سرعت ترافیک را به 50000 بایت در ثانیه محدود می‌کند:

مثال:

shaper:
  normal: 1000
  fast: 50000

shaper_rules: {ShaperRuleName: {Number|ShaperName: ACLName|ACLDefinition}}

این گزینه ../configuration/basic.md#shaper-rules|قوانین شکل‌دهنده را برای تطبیق با کاربران/میزبان‌ها تعریف می‌کند. معناشناسی مشابه گزینه access_rules است، تنها تفاوت این است که به جای استفاده از allow یا deny، باید از نام یک شکل‌دهنده (تعریف‌شده در گزینه shaper) یا یک عدد مثبت استفاده کرد.

مثال:

shaper_rules:
  connections_limit:
    10:
      user: peter@example.com
    100: admin
    5: all
  download_speed:
    fast: admin
    slow: anonymous_users
    normal: all
  log_days: 30

sm_cache_life_time: timeout()

مانند cache_life_time، اما تنها برای کش جدول نشست‌های کلاینت اعمال می‌شود. اگر تنظیم نشده باشد، از مقدار cache_life_time استفاده می‌شود.

sm_cache_missed: true | false

مانند cache_missed، اما تنها برای کش جدول نشست‌های کلاینت اعمال می‌شود. اگر تنظیم نشده باشد، از مقدار cache_missed استفاده می‌شود.

sm_cache_size: pos_integer() | infinity

مانند cache_size، اما تنها برای کش جدول نشست‌های کلاینت اعمال می‌شود. اگر تنظیم نشده باشد، از مقدار cache_size استفاده می‌شود.

sm_db_type: mnesia | redis | sql

بک‌اند پایگاه داده برای استفاده در اطلاعات نشست‌های کلاینت. مقدار پیش‌فرض از گزینه default_ram_db گرفته می‌شود، یا اگر تنظیم نشده باشد، mnesia استفاده می‌شود.

sm_use_cache: true | false

مانند use_cache، اما تنها برای کش جدول نشست‌های کلاینت اعمال می‌شود. اگر تنظیم نشده باشد، از مقدار use_cache استفاده می‌شود.

sql_connect_timeout: timeout()

زمان انتظار برای برقراری اتصال به سرور SQL. مقدار پیش‌فرض 5 ثانیه است.

sql_database: DatabaseName | PathSqliteFile

توجه درباره این گزینه: در نسخه 26.04 بهبود یافت. نام پایگاه داده SQL، که مقدار پیش‌فرض آن ejabberd است. اگر گزینه sql_type روی sqlite تنظیم شده باشد، این باید مسیر کامل به یک فایل پایگاه داده باشد، با مقدار پیش‌فرض: '"@DATABASE_PATH@/sqlite/@HOST@.sqlite"

sql_flags: [mysql_alternative_upsert]

توجه درباره این گزینه: در نسخه 24.02 اضافه شد. این گزینه فهرستی از فلگ‌های SQL را می‌پذیرد و به طور پیش‌فرض خالی است. mysql_alternative_upsert پیاده‌سازی جایگزین upsert را در MySQL اجبار می‌کند.

sql_keepalive_interval: timeout()

بازه‌ای برای ارسال یک درخواست SQL ساختگی جهت زنده نگه داشتن اتصالات به پایگاه داده. هیچ مقدار پیش‌فرضی وجود ندارد، بنابراین هیچ درخواست keepalive ارسال نمی‌شود.

sql_odbc_driver: Path

توجه درباره این گزینه: در نسخه 20.12 اضافه شد. مسیر درایور ODBC برای اتصال به پایگاه داده Microsoft SQL Server. این گزینه تنها در صورتی اعمال می‌شود که گزینه sql_type روی mssql تنظیم شده باشد و sql_server یک رشته اتصال ODBC نباشد. مقدار پیش‌فرض: libtdsodbc.so

sql_password: Password

رمز عبور برای احراز هویت SQL. پیش‌فرض یک رشته خالی است.

sql_pool_size: Size

تعداد اتصالات به سرور SQL که ejabberd برای هر میزبان مجازی باز می‌کند. مقدار پیش‌فرض 10 است. هشدار: برای SQLite این مقدار به طور پیش‌فرض 1 است و به دلیل شرایط رقابتی احتمالی توصیه نمی‌شود آن را تغییر دهید.

sql_port: 1..65535

پورتی که سرور SQL اتصالات را روی آن می‌پذیرد. پیش‌فرض 3306 برای MySQL، 5432 برای PostgreSQL و 1433 برای MS SQL است. این گزینه برای SQLite تأثیری ندارد.

sql_prepared_statements: true | false

توجه درباره این گزینه: در نسخه 20.01 اضافه شد. این گزینه به طور پیش‌فرض true است و برای غیرفعال کردن دستورات آماده (prepared statements) مفید است. این گزینه برای PostgreSQL و MySQL معتبر است.

sql_query_timeout: timeout()

زمان انتظار برای پاسخ یک کوئری SQL. مقدار پیش‌فرض 60 ثانیه است.

sql_queue_type: ram | file

نوع صف درخواست برای سرور SQL. برای توضیح به شرح گزینه queue_type مراجعه کنید. مقدار پیش‌فرض همان مقدار تعریف‌شده در queue_type یا ram در صورت عدم تنظیم آن است.

sql_schema_multihost: true | false

توجه درباره این گزینه: در نسخه 25.10 تغییر نام یافت. تعیین می‌کند که آیا از database.md#singlehost-or-multihost|طرح SQL چندمیزبانه استفاده شود. تمام طرح‌ها در https://github.com/processone/ejabberd/tree/26.07/sql قرار دارند. دو طرح در دسترس هستند. طرح قدیمی singlehost یک دامنه XMPP را در یک پایگاه داده ejabberd ذخیره می‌کند. طرح multihost می‌تواند چندین دامنه XMPP را در یک پایگاه داده ejabberd مدیریت کند. طرح multihost هنگام ارائه خدمات به چندین دامنه XMPP و/یا تغییر دامنه‌ها از وقت به وقت ارجح است. این از نیاز به مدیریت چندین پایگاه داده و پیچیدگی‌های تغییرات پیکربندی جلوگیری می‌کند. مقدار پیش‌فرض به فلگ --enable-sql-schema-multihost در ../../admin/install/source.md#configure|./configure که در زمان کامپایل تنظیم می‌شود بستگی دارد.

sql_server: Host | IP Address | ODBC Connection String | Unix Socket Path

توجه درباره این گزینه: در نسخه 24.06 بهبود یافت. نام میزبان یا آدرس IP سرور SQL. برای sql_type های mssql یا odbc می‌تواند یک رشته اتصال ODBC نیز باشد. هنگامی که sql_type برابر با mysql یا pgsql است، می‌تواند مسیر یک سوکت دامنه یونیکس باشد که این‌گونه بیان می‌شود: "unix:/path/to/socket". مقدار پیش‌فرض localhost است.

sql_ssl: true | false

توجه درباره این گزینه: در نسخه 20.03 بهبود یافت. تعیین می‌کند که آیا از اتصالات رمزگذاری‌شده SSL به سرور SQL استفاده شود. این گزینه تنها برای MySQL، MS SQL و PostgreSQL در دسترس است. مقدار پیش‌فرض false است.

sql_ssl_cafile: Path

مسیر فایلی با گواهی‌های ریشه CA که برای تأیید اتصالات SQL استفاده می‌شود. به این معنی که گزینه‌های sql_ssl و sql_ssl_verify روی true تنظیم شده‌اند. هیچ مقدار پیش‌فرضی وجود ندارد که به این معنی است که تأیید گواهی غیرفعال است. این گزینه برای MS SQL تأثیری ندارد.

sql_ssl_certfile: Path

مسیر فایل گواهی که برای اتصالات SSL به سرور SQL استفاده می‌شود. به این معنی که گزینه sql_ssl روی true تنظیم شده است. هیچ مقدار پیش‌فرضی وجود ندارد که به این معنی است که ejabberd هیچ گواهی کلاینتی به سرور SQL ارائه نمی‌دهد. این گزینه برای MS SQL تأثیری ندارد.

sql_ssl_verify: true | false

تعیین می‌کند که آیا اتصال SSL به سرور SQL در برابر گواهی‌های ریشه CA تعریف‌شده در گزینه sql_ssl_cafile تأیید شود. به این معنی که گزینه sql_ssl روی true تنظیم شده است. این گزینه برای MS SQL تأثیری ندارد. مقدار پیش‌فرض false است.

sql_start_interval: timeout()

زمان انتظار قبل از تلاش مجدد برای بازیابی اتصال SQL ناموفق. مقدار پیش‌فرض 30 ثانیه است.

sql_type: mssql | mysql | odbc | pgsql | sqlite

نوع اتصال SQL. پیش‌فرض odbc است.

sql_username: Username

نام کاربری برای احراز هویت SQL. مقدار پیش‌فرض ejabberd است.

trusted_proxies: all | [Network1, Network2, ...]

مشخص می‌کند که هنگامی که یک درخواست HTTP حاوی هدر X-Forwarded-For است، کدام پروکسی‌ها مورد اعتماد هستند. می‌توانید all را برای اجازه دادن به تمام پروکسی‌ها مشخص کنید، یا فهرستی از IP‌ها را احتمالاً با ماسک مشخص کنید. مقدار پیش‌فرض یک فهرست خالی است. با استفاده از این گزینه می‌توانید IP واقعی درخواست را برای اهداف مدیریتی یا پیکربندی امنیتی بدانید (برای مثال با استفاده از mod_fail2ban). مهم: پروکسی باید پیکربندی شود که هدر X-Forwarded-For را تنظیم کند اگر این گزینه را فعال کنید، در غیر این صورت کلاینت می‌تواند آن را خودش تنظیم کند و در نتیجه مقدار IP برای قوانین امنیتی در ejabberd قابل اعتماد نیست.

update_sql_schema: true | false

توجه درباره این گزینه: در نسخه 24.06 به‌روز شد. به ejabberd اجازه می‌دهد طرح SQL را در پایگاه داده‌های MySQL، PostgreSQL و SQLite به‌روز کند. این گزینه در ejabberd نسخه 23.10 اضافه شد و از نسخه 24.06 به طور پیش‌فرض فعال است. مقدار پیش‌فرض true است.

update_sql_schema_timeout: timeout()

توجه درباره این گزینه: در نسخه 24.07 اضافه شد. زمان اختصاص‌یافته به کوئری‌های به‌روزرسانی طرح SQL. مقدار پیش‌فرض 5 دقیقه است.

use_cache: true | false

فعال یا غیرفعال کردن کش. پیش‌فرض true است. چندین ماژول گزینه مشابهی دارند؛ و برخی بخش‌های هسته ejabberd نیز از گزینه‌های مشابه پشتیبانی می‌کنند، به auth_use_cache، oauth_use_cache، router_use_cache و sm_use_cache مراجعه کنید.

validate_stream: true | false

تعیین می‌کند که آیا هر بسته XML ورودی طبق طرح‌های افزونه‌های پشتیبانی‌شده XMPP اعتبارسنجی شود. هشدار: این اعتبارسنجی تنها برای استفاده توسط توسعه‌دهندگان کلاینت در نظر گرفته شده است - آن را در محیط تولید فعال نکنید. مقدار پیش‌فرض false است.

version: string()

این گزینه می‌تواند برای تنظیم نسخه سفارشی ejabberd استفاده شود که توسط بخش‌های مختلف ejabberd استفاده می‌شود، برای مثال توسط ماژول mod_version. مقدار پیش‌فرض در زمان کامپایل از سیستم کنترل نسخه زیربنایی به دست می‌آید.

websocket_origin: ignore | URL

این گزینه اعتبارسنجی هدر Origin را برای محافظت در برابر اتصالات از دامنه‌های دیگر غیر از آنچه در فایل پیکربندی مشخص شده فعال می‌کند. به این ترتیب، لود بالانسر لایه پایین‌تر می‌تواند برای یک پیاده‌سازی خاص ejabberd انتخاب شود در حالی که یک اتصال WebSocket امن همچنان فراهم می‌شود. مقدار پیش‌فرض ignore است. یک مثال از مقدار URL می‌تواند "https://test.example.org:8081" باشد.

websocket_ping_interval: timeout()

زمان بین پینگ‌های ارسال‌شده از سرور به کلاینت (برای این منظور از پینگ‌های سطح پروتکل WebSocket استفاده می‌شود) برای زنده نگه داشتن اتصال را تعریف می‌کند. اگر کلاینت به دو پینگ متوالی پاسخ ندهد، اتصال بسته‌شده تلقی می‌شود. مقدار 0 می‌تواند برای غیرفعال کردن این قابلیت استفاده شود. این گزینه باعث می‌شود سرور پینگ‌ها را تنها برای اتصالاتی که از پروتکل مطابق با RFC استفاده می‌کنند ارسال کند. برای اتصالات با سبک قدیمی‌تر، سرور انتظار دارد که از پینگ‌های فضای خالی برای این منظور استفاده شود. مقدار پیش‌فرض 60 ثانیه است.

websocket_timeout: timeout()

مدت زمان بدون هیچ ارتباطی که پس از آن اتصال بسته می‌شود. مقدار پیش‌فرض 300 ثانیه است.

این بخش گزینه‌های ماژول‌های ejabberd 26.07 را توضیح می‌دهد. ماژول‌هایی که در این نسخه تغییر کرده‌اند با 🟠 مشخص شده‌اند.

def:ad-hoc command

: دستوری که می‌تواند توسط یک کلاینت XMPP با استفاده از XEP-0050 اجرا شود.

این ماژول XEP-0050: Ad-Hoc Commands را پیاده‌سازی می‌کند. یک ماژول کمکی است و تنها توسط برخی از ماژول‌های دیگر مورد نیاز است.

گزینه‌های موجود:

report_commands_node: true | false

آیتم Commands را در Service Discovery فراهم می‌کند. مقدار پیش‌فرض: false.

توجه درباره این گزینه: در نسخه 25.03 اضافه شده است.

اجرای (def:API commands) در یک کلاینت XMPP با استفاده از XEP-0050: Ad-Hoc Commands. این ماژول به mod_adhoc (برای اجرای دستورات) نیاز دارد، و استفاده از mod_disco (برای کشف دستورات) را توصیه می‌کند.

گزینه‌های موجود:

default_version: integer() | string()

نسخه API مورد استفاده. اگر نسخه ejabberd تنظیم شود، از آخرین نسخه API که در آن نسخه (def:c2s) ejabberd موجود بوده استفاده می‌کند. به عنوان مثال، تنظیم "24.06" در این گزینه معادل 2 است. مقدار پیش‌فرض آخرین نسخه است.

مثال:

acl:
  admin:
    user: jan@localhost
api_permissions:
  "adhoc commands":
    from: mod_adhoc_api
    who: admin
    what:
      - "[tag:roster]"
      - "[tag:session]"
      - stats
      - status
modules:
  mod_adhoc_api:
    default_version: 2

این ماژول دستورات مدیریتی اضافی فراهم می‌کند.

جزئیات برخی دستورات:

ban_account API: این دستور تمام نشست‌های متصل حساب کاربری را از سرور قطع می‌کند. همچنین رمز عبور آن‌ها را به یک رمز تصادفی تغییر می‌دهد تا دیگر نتوانند وارد شوند مگر اینکه مدیر سرور رمز عبور آن‌ها را مجدداً تغییر دهد. امکان تعریف دلیل مسدودسازی وجود دارد. رمز عبور جدید نیز شامل دلیل و تاریخ و زمان مسدودسازی است. مثالی در زیر آمده است.

push_roster API (و push_roster_all API): فایل roster باید در صورت استفاده از Windows، در دایرکتوری نصب ejabberd قرار گیرد: C:/Program Files/ejabberd یا مشابه آن. در صورت استفاده از سیستم‌عامل دیگر، فایل را در همان دایرکتوری که فایل‌های .beam نصب شده‌اند قرار دهید. در زیر یک فایل roster نمونه آمده است.

srg_create API: اگر می‌خواهید نام گروه را با فاصله وارد کنید، از کاراکترهای "' و '" برای مشخص کردن شروع و پایان نام استفاده کنید. مثالی در زیر آمده است.

این ماژول گزینه‌ای ندارد.

مثال‌ها:

با این پیکربندی، vCard‌ها فقط با دستورات mod_admin_extra قابل تغییر هستند:

acl:
  adminextraresource:
    - resource: "modadminextraf8x,31ad"
access_rules:
  vcard_set:
    - allow: adminextraresource
modules:
  mod_admin_extra: {}
  mod_vcard:
    access_set: vcard_set

محتوای فایل roster برای push_roster API:

[{<<"bob">>, <<"example.org">>, <<"workers">>, <<"Bob">>},
{<<"mart">>, <<"example.org">>, <<"workers">>, <<"Mart">>},
{<<"Rich">>, <<"example.org">>, <<"bosses">>, <<"Rich">>}].

با این فراخوانی، نشست‌های حساب محلی با JID boby@example.org قطع می‌شوند و رمز عبور آن به چیزی شبیه BANNED_ACCOUNT—20080425T21:45:07—2176635—Spammed_rooms تغییر می‌یابد

ejabberdctl vhost example.org ban_account boby "Spammed rooms"

فراخوانی srg_create API با استفاده از کوتیشن‌های دوتایی و تکی:

ejabberdctl srg_create g1 example.org "'Group number 1'" this_is_g1 g1

برچسب‌های API: ../../developer/ejabberd-api/admin-tags.md#accounts|accounts, ../../developer/ejabberd-api/admin-tags.md#erlang|erlang, ../../developer/ejabberd-api/admin-tags.md#last|last, ../../developer/ejabberd-api/admin-tags.md#private|private, ../../developer/ejabberd-api/admin-tags.md#purge|purge, ../../developer/ejabberd-api/admin-tags.md#roster|roster, ../../developer/ejabberd-api/admin-tags.md#session|session, ../../developer/ejabberd-api/admin-tags.md#shared_roster_group|shared_roster_group, ../../developer/ejabberd-api/admin-tags.md#stanza|stanza, ../../developer/ejabberd-api/admin-tags.md#statistics|statistics, ../../developer/ejabberd-api/admin-tags.md#vcard|vcard

از این ماژول می‌توان برای تبدیل پایگاه داده SQL موجود از طرح‌واره تک‌میزبانه به چندمیزبانه استفاده کرد. برای جزئیات بخش database.md#singlehost-or-multihost|Singlehost or Multihost را بررسی کنید. توجه داشته باشید که تنها MS SQL، MySQL و PostgreSQL پشتیبانی می‌شوند. پس از بارگذاری ماژول از update_sql API استفاده کنید.

این ماژول گزینه‌ای ندارد.

این ماژول به کاربران پیکربندی‌شده امکان می‌دهد اعلان‌ها را پخش کنند و پیام روز (MOTD) را تنظیم کنند. کاربران پیکربندی‌شده می‌توانند این اعمال را با یک کلاینت XMPP، یا از طریق Ad-Hoc Commands یا ارسال پیام به JIDهای خاص انجام دهند. دستورات معادل API نیز موجود هستند.


توجه

این ماژول در استقرارهای بزرگ می‌تواند منابع زیادی مصرف کند زیرا ممکن است پیام‌های زیادی پخش کند. این ماژول باید برای نمونه‌های ejabberd با صدها هزار کاربر غیرفعال شود.

برای ارسال اعلان‌ها با استفاده از XEP-0050: Ad-Hoc Commands، این ماژول به mod_adhoc (برای اجرای دستورات) نیاز دارد، و استفاده از mod_disco (برای کشف دستورات) را توصیه می‌کند.

برای ارسال اعلان‌ها از طریق ارسال پیام به JIDهای خاص، JIDهای مقصد به شرح زیر هستند:

•example.org/announce/all: پیام را به تمام کاربران ثبت‌شده در آن vhost ارسال می‌کند. اگر کاربر آنلاین باشد و به چندین منبع متصل باشد، تنها منبع با بالاترین اولویت پیام را دریافت می‌کند. اگر کاربر ثبت‌شده متصل نباشد، پیام به صورت آفلاین ذخیره می‌شود با این فرض که ذخیره‌سازی آفلاین (مراجعه کنید به mod_offline) فعال باشد.
•example.org/announce/online: پیام را به تمام کاربران متصل ارسال می‌کند. اگر کاربر آنلاین باشد و به چندین منبع متصل باشد، تمام منابع پیام را دریافت می‌کنند.
•example.org/announce/motd: پیام روز (MOTD) را تنظیم می‌کند که هنگام ورود به کاربران ارسال می‌شود. همچنین پیام را به تمام کاربران متصل ارسال می‌کند (مشابه announce/online).
•example.org/announce/motd/update: پیام روز (MOTD) را تنظیم می‌کند که هنگام ورود به کاربران ارسال می‌شود. این گزینه پیام را به هیچ کاربر متصل فعلی ارسال نمی‌کند.
•example.org/announce/motd/delete: پیام روز (MOTD) موجود را با ارسال یک پیام به این JID حذف می‌کند.

JIDهای مقصد مشابهی برای اعمال بر تمام میزبان‌های مجازی در ejabberd وجود دارد:

•example.org/announce/all-hosts/all: ارسال به تمام حساب‌های ثبت‌شده
•example.org/announce/all-hosts/online: ارسال به نشست‌های آنلاین
•example.org/announce/all-hosts/motd: تنظیم MOTD و ارسال به کاربران آنلاین
•example.org/announce/all-hosts/motd/update: به‌روزرسانی MOTD
•example.org/announce/all-hosts/motd/delete: حذف MOTD

گزینه‌های موجود:

access: AccessName

این گزینه مشخص می‌کند چه کسی مجاز به ارسال اعلان‌ها و تنظیم پیام روز است. مقدار پیش‌فرض none است (یعنی هیچ‌کس قادر به ارسال چنین پیام‌هایی نیست).

cache_life_time: timeout()

مشابه گزینه سطح بالای cache_life_time، اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

مشابه گزینه سطح بالای cache_missed، اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

مشابه گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال می‌شود.

db_type: mnesia | sql

مشابه گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال می‌شود.

use_cache: true | false

مشابه گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال می‌شود.

برچسب‌های API: ../../developer/ejabberd-api/admin-tags.md#announce|announce

توجه درباره این گزینه: در نسخه 25.07 اضافه شده است.

پیام‌های هرزنامه و درخواست‌های اشتراک دریافتی از سرورهای راه دور را بر اساس فهرست‌های بلوک بلادرنگ (RTBL)، فهرست‌های JID های اسپمر شناخته‌شده و/یا URLهای ذکرشده در پیام‌های هرزنامه فیلتر می‌کند. ترافیک طبقه‌بندی‌شده به عنوان هرزنامه با یک خطا رد می‌شود (و یک پیام [info] ثبت می‌گردد) مگر اینکه فرستنده در حضور گیرنده مشترک باشد.

گزینه‌های موجود:

access_spam: Access

قانون دسترسی که کنترل می‌کند چه حساب‌هایی ممکن است پیام‌های هرزنامه دریافت کنند. اگر این قانون برای یک گیرنده مشخص allow برگرداند، پیام‌های هرزنامه برای آن گیرنده رد نمی‌شوند. مقدار پیش‌فرض none است، که به این معنی است که همه گیرندگان تحت بررسی فیلتر هرزنامه قرار می‌گیرند.

cache_size: pos_integer()

حداکثر تعداد JID هایی که به دلیل ارسال URLهای هرزنامه در حافظه پنهان ذخیره می‌شوند. اگر این محدودیت بیش از حد شود، کم‌استفاده‌ترین ورودی‌ها از حافظه پنهان حذف می‌شوند. تنظیم این گزینه روی 0 ویژگی ذخیره‌سازی موقت را غیرفعال می‌کند. توجه داشته باشید که برای هر میزبان مجازی حافظه‌های پنهان جداگانه‌ای استفاده می‌شود و این حافظه‌های پنهان در بین گره‌های خوشه توزیع نمی‌شوند. مقدار پیش‌فرض 10000 است.

rtbl_services: [Service]

یک سرویس RTBL را برای دریافت دامنه‌های مسدود، مانند آنچه توسط xmppbl.org ارائه می‌شود، پرس‌وجو می‌کند. لطفاً توجه داشته باشید که در حال حاضر این گزینه فقط از یک سرویس در آن فهرست پشتیبانی می‌کند. برای مسدود کردن هرزنامه و سوءاستفاده در کانال‌های MUC، در حال حاضر از mod_muc_rtbl استفاده کنید. اگر فقط میزبان ارائه شود، نام گره‌های پیش‌فرض فرض می‌شوند. اگر نام گره با spam_source_domains متفاوت باشد، می‌توانید نام گره سفارشی را با گزینه spam_source_domains_node تنظیم کنید. مقدار پیش‌فرض یک فهرست خالی از سرویس‌ها است.

مثال:

rtbl_services:
  - pubsub.server1.localhost:
      spam_source_domains_node: actual_custom_pubsub_node

spam_domains_file: none | Path

مسیر یک فایل متنی ساده حاوی فهرستی از دامنه‌های هرزنامه شناخته‌شده، یک دامنه در هر خط. پیام‌ها و درخواست‌های اشتراک ارسال‌شده از یکی از دامنه‌های فهرست‌شده در صورتی که فرستنده در لیست مخاطبین گیرنده نباشد به عنوان هرزنامه طبقه‌بندی می‌شوند. این فهرست دامنه‌ها با فهرست بازیابی‌شده توسط یک میزبان RTBL در صورت وجود ادغام می‌شود. از یک مسیر مطلق یا کلیدواژه از پیش تعریف‌شده @CONFIG_PATH@ استفاده کنید اگر فایل در دایرکتوری پیکربندی موجود است. مقدار پیش‌فرض none است.

spam_dump_file: false | true | Path

مسیر فایلی برای ذخیره پیام‌های مسدودشده. از یک مسیر مطلق یا کلیدواژه از پیش تعریف‌شده @LOG_PATH@ استفاده کنید تا لاگ‌ها در همان مکان سایر فایل‌های لاگ ejabberd ذخیره شوند. اگر روی false تنظیم شود، استانزاها را ذخیره نمی‌کند، که پیش‌فرض است. اگر روی true تنظیم شود، در "@LOG_PATH@/spam_dump_@HOST@.log" ذخیره می‌کند.

spam_jids_file: none | Path

مسیر یک فایل متنی ساده حاوی فهرستی از JID های اسپمر شناخته‌شده، یک JID در هر خط. پیام‌ها و درخواست‌های اشتراک ارسال‌شده از یکی از JID های فهرست‌شده به عنوان هرزنامه طبقه‌بندی می‌شوند. پیام‌های حاوی حداقل یکی از JID های فهرست‌شده نیز به عنوان هرزنامه طبقه‌بندی می‌شوند. علاوه بر این، JID فرستنده در حافظه پنهان ذخیره می‌شود تا ترافیک آینده از آن JID نیز به عنوان هرزنامه طبقه‌بندی شود. از یک مسیر مطلق یا کلیدواژه از پیش تعریف‌شده @CONFIG_PATH@ استفاده کنید اگر فایل در دایرکتوری پیکربندی موجود است. مقدار پیش‌فرض none است.

spam_urls_file: none | Path

مسیر یک فایل متنی ساده حاوی فهرستی از URLهایی که در متن پیام‌های هرزنامه ذکر شده‌اند. پیام‌های حاوی حداقل یکی از URLهای فهرست‌شده به عنوان هرزنامه طبقه‌بندی می‌شوند. علاوه بر این، JID فرستنده در حافظه پنهان ذخیره می‌شود تا ترافیک آینده از آن JID نیز به عنوان هرزنامه طبقه‌بندی شود. از یک مسیر مطلق یا کلیدواژه از پیش تعریف‌شده @CONFIG_PATH@ استفاده کنید اگر فایل در دایرکتوری پیکربندی موجود است. مقدار پیش‌فرض none است.

whitelist_domains_file: none | Path

مسیر یک فایل حاوی فهرستی از دامنه‌هایی که باید از مسدود شدن معاف شوند، یک دامنه در هر خط. اگر دامنه‌ای در spam_domains_file یا واقع‌بینانه‌تر در دامنه‌ای ارسال‌شده توسط یک میزبان RTBL (گزینه rtbl_services را ببینید) باشد، این دامنه نادیده گرفته می‌شود و استانزاهای آن مسدود نمی‌شوند. از یک مسیر مطلق یا کلیدواژه از پیش تعریف‌شده @CONFIG_PATH@ استفاده کنید اگر فایل در دایرکتوری پیکربندی موجود است. مقدار پیش‌فرض none است.

مثال:

modules:
  mod_antispam:
    rtbl_services:
      - xmppbl.org
    spam_jids_file: "@CONFIG_PATH@/spam_jids.txt"
    spam_dump_file: "@LOG_PATH@/spam/host-@HOST@.log"

توجه درباره این گزینه: در نسخه 26.07 بهبود یافته است.

این ماژول پشتیبانی از XEP-0484: Fast Authentication Streamlining Tokens را اضافه می‌کند که به کاربران اجازه می‌دهد با استفاده از توکن‌های خودمدیریتی احراز هویت کنند.

گزینه‌های موجود:

db_type 🟠: mnesia | sql

توجه درباره این گزینه: در نسخه 26.07 بهبود یافته است. مشابه گزینه سطح بالای default_db اما فقط برای این ماژول اعمال می‌شود.

token_lifetime: timeout()

مدت زمانی که توکن‌ها نگهداری می‌شوند، اندازه‌گیری‌شده از زمان ایجاد آن‌ها. مقدار پیش‌فرض ۳۰ روز تنظیم شده است.

token_refresh_age: timeout()

این زمان سن توکنی را که واجد شرایط تجدید خودکار است تعیین می‌کند. مقدار پیش‌فرض ۱ روز تنظیم شده است.

مثال:

modules:
  mod_auth_fast:
    token_lifetime: 14days

هدف این ماژول رسیدگی به کلاینت‌های XMPP قدیمی و مدرنی است که آواتار ارسال می‌کنند. این فرآیند در XEP-0398: User Avatar to vCard-Based Avatars Conversion توضیح داده شده است.

همچنین، این ماژول از تبدیل بین فرمت‌های تصویر آواتار به صورت آنی پشتیبانی می‌کند.

این ماژول به mod_vcard، mod_vcard_xupdate و mod_pubsub وابسته است.

گزینه‌های موجود:

convert: {From: To}

قوانین تبدیل تصویر را تعریف می‌کند: فرمت در From به فرمت در To تبدیل می‌شود. مقدار From می‌تواند default هم باشد که یک قانون همه‌چیز-مطابقت است. توجه: فهرست فرمت‌های پشتیبانی‌شده در زمان کامپایل بسته به کتابخانه‌های تصویر نصب‌شده در سیستم تشخیص داده می‌شود.

مثال:

convert:
  webp: jpg
  default: png

rate_limit: Number

هر JID داده‌شده را بر اساس تعداد آواتارهایی که می‌تواند در دقیقه تبدیل کند محدود می‌کند. این برای محافظت از سرور در برابر DoS تبدیل تصویر است. مقدار پیش‌فرض 10 است.

این ماژول هر پیامی که از یک موجودیت ناشناخته می‌آید را مسدود و ثبت می‌کند. اگر یک موجودیت نویسنده در لیست مخاطبین شما نباشد، می‌توانید اجازه دهید این ماژول پیام را رد کند و/یا ثبت کند. به طور پیش‌فرض پیام از آن موجودیت دریافت نخواهید کرد. اگر می‌خواهید پیام‌های هرزنامه را رد کنید این ماژول را فعال کنید.

گزینه‌های موجود:

access: AccessName

این گزینه قرار است زمانی استفاده شود که allow_local_users و allow_transports کافی نیستند. این یک قانون دسترسی است که در آن deny به معنای رد شدن استانزا است؛ استثنایی وجود دارد اگر گزینه captcha پیکربندی شده باشد. و allow به این معنا است که فرستنده در لیست سفید قرار دارد و استانزا عبور خواهد کرد. مقدار پیش‌فرض none است، که به این معنی است که هیچ چیز در لیست سفید قرار ندارد.

allow_local_users: true | false

این گزینه مشخص می‌کند که آیا افراد ناشناس از همان میزبان محلی باید پذیرفته شوند یا نه. مقدار پیش‌فرض true است.

allow_transports: true | false

اگر روی true تنظیم شود و JID برخی سرورها در لیست مخاطبین کاربر باشد، پیام‌های هر کاربر از آن سرور حتی در صورت عدم وجود اشتراک پذیرفته می‌شوند. مقدار پیش‌فرض true است.

captcha: true | false

آیا در پاسخ به درخواست‌های اشتراک حضور ورودی از افراد ناشناس چالش‌های CAPTCHA ایجاد شود. همچنین بخش basic.md#captcha|CAPTCHA از راهنمای پیکربندی را ببینید. مقدار پیش‌فرض false است.

drop: true | false

این گزینه مشخص می‌کند که آیا پیام‌های افراد ناشناس باید رد شوند یا نه. مقدار پیش‌فرض true است.

log: true | false

این گزینه مشخص می‌کند که آیا پیام‌های افراد ناشناس باید (به عنوان پیام info) در ejabberd.log ثبت شوند. مقدار پیش‌فرض false است.

این ماژول XEP-0191: Blocking Command را پیاده‌سازی می‌کند.

این ماژول به mod_privacy وابسته است که در آن همه پیکربندی‌ها انجام می‌شود.

این ماژول هیچ گزینه‌ای ندارد.

این ماژول XMPP over BOSH را همان‌طور که در XEP-0124 و XEP-0206 تعریف شده پیاده‌سازی می‌کند. BOSH مخفف Bidirectional-streams Over Synchronous HTTP است. این امکان را فراهم می‌کند که اتصالات طولانی‌مدت مورد نیاز XMPP را از طریق پروتکل HTTP شبیه‌سازی کنید. در عمل، این ماژول امکان استفاده از XMPP را در مرورگر بدون پشتیبانی WebSocket فراهم می‌کند و به طور کلی راهی برای استفاده از XMPP در عبور از پروکسی HTTP است.

گزینه‌های موجود:

cache_life_time: timeout()

مشابه گزینه سطح بالای cache_life_time اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

مشابه گزینه سطح بالای cache_missed اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

مشابه گزینه سطح بالای cache_size اما فقط برای این ماژول اعمال می‌شود.

json: true | false

این گزینه هیچ تأثیری ندارد.

max_concat: pos_integer() | infinity

این گزینه تعداد استانزاهایی که سرور در یک درخواست bosh ارسال می‌کند را محدود می‌کند. مقدار پیش‌فرض unlimited است.

max_inactivity: timeout()

این گزینه حداکثر دوره عدم فعالیت را تعریف می‌کند. مقدار پیش‌فرض 30 ثانیه است.

max_pause: pos_integer()

حداکثر مدت توقف موقت جلسه (بر حسب ثانیه) که یک کلاینت می‌تواند درخواست کند را نشان می‌دهد. مقدار پیش‌فرض 120 است.

prebind: true | false

اگر فعال شود، کلاینت می‌تواند بدون گذر از احراز هویت جلسه ایجاد کند. اساساً یک جلسه جدید با احراز هویت ناشناس ایجاد می‌کند. مقدار پیش‌فرض false است.

queue_type: ram | file

مشابه گزینه سطح بالای queue_type اما فقط برای این ماژول اعمال می‌شود.

ram_db_type: mnesia | sql | redis

مشابه گزینه سطح بالای default_ram_db اما فقط برای این ماژول اعمال می‌شود.

use_cache: true | false

مشابه گزینه سطح بالای use_cache اما فقط برای این ماژول اعمال می‌شود.

مثال:

listen:
  -
    port: 5222
    module: ejabberd_c2s
  -
    port: 5443
    module: ejabberd_http
    request_handlers:
      /bosh: mod_bosh
modules:
  mod_bosh: {}

این ماژول XEP-0115: Entity Capabilities را پیاده‌سازی می‌کند. هدف اصلی این ماژول ارائه قابلیت PEP است (به mod_pubsub مراجعه کنید).

گزینه‌های موجود:

cache_life_time: timeout()

همانند گزینه سطح بالای cache_life_time است، اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

همانند گزینه سطح بالای cache_missed است، اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

همانند گزینه سطح بالای cache_size است، اما فقط برای این ماژول اعمال می‌شود.

db_type: mnesia | sql

همانند گزینه سطح بالای default_db است، اما فقط برای این ماژول اعمال می‌شود.

use_cache: true | false

همانند گزینه سطح بالای use_cache است، اما فقط برای این ماژول اعمال می‌شود.

این ماژول XEP-0280: Message Carbons را پیاده‌سازی می‌کند. این ماژول پیام‌ها را در تمام منابع (دستگاه‌های) متصل کاربر پخش می‌کند.

این ماژول هیچ گزینه‌ای ندارد.

این ماژول امکان صف‌بندی انواع خاصی از استانزاها را فراهم می‌کند، زمانی که کلاینت نشان می‌دهد که کاربر در حال حاضر به‌طور فعال از کلاینت استفاده نمی‌کند (به XEP-0352: Client State Indication مراجعه کنید). این قابلیت می‌تواند پهنای باند و منابع را صرفه‌جویی کند.

یک استانزا از صف حذف می‌شود اگر به‌طور مؤثر توسط یک استانزای جدید منسوخ شود (مثلاً یک استانزای حضور جدید، استانزای قدیمی از همان کلاینت را جایگزین می‌کند). صف خالی می‌شود اگر استانزایی برسد که در صف قرار نمی‌گیرد، یا اگر اندازه صف به حد معینی برسد (در حال حاضر ۱۰۰ استانزا)، یا اگر کلاینت دوباره فعال شود.

گزینه‌های موجود:

queue_chat_states: true | false

اعلان‌های وضعیت چت «مستقل» (همان‌طور که در XEP-0085: Chat State Notifications تعریف شده) را در حالت عدم فعالیت کلاینت در صف قرار می‌دهد. مقدار پیش‌فرض true است.

queue_pep: true | false

اعلان‌های PEP را در حالت عدم فعالیت کلاینت در صف قرار می‌دهد. هنگامی که صف خالی می‌شود، فقط جدیدترین اعلان یک گره PEP مشخص تحویل داده می‌شود. مقدار پیش‌فرض true است.

queue_presence: true | false

در حالت عدم فعالیت کلاینت، استانزاهای حضور که نشان‌دهنده در دسترس بودن یا نبودن هستند را در صف قرار می‌دهد. مقدار پیش‌فرض true است.

توجه درباره این گزینه: در نسخه ۲۵.۱۰ بهبود یافته است.

این ماژول قابلیت‌های پیکربندی کارگزار را با استفاده از XEP-0030: Service Discovery و XEP-0050: Ad-Hoc Commands فراهم می‌کند:

•فهرست و کشف اتصالات s2s خروجی، نشست‌های کلاینت آنلاین و تمام حساب‌های کاربری ثبت‌شده
•اکثر دستورات ad-hoc تعریف‌شده در XEP-0133: Service Administration
•دستورات ad-hoc سفارشی اضافی مخصوص ejabberd

دستورات ad-hoc از XEP-0133 که رفتار متفاوتی نسبت به XEP دارند:

•get-user-roster: به جای آیتم‌های فهرست مخاطبان که کلاینت نمی‌تواند نمایش دهد، فیلدهای استاندارد برمی‌گرداند

آن دستورات ad-hoc از XEP-0133 که کلاینت اجراکننده دستور را در پاسخ شامل نمی‌شوند:

•get-active-users-num
•get-idle-users-num
•get-active-users
•get-idle-users

آن دستورات ad-hoc از XEP-0133 که پیاده‌سازی نشده‌اند:

•edit-blacklist
•edit-whitelist
•edit-admin

این ماژول به mod_adhoc (برای اجرای دستورات) نیاز دارد، و استفاده از mod_disco (برای کشف دستورات) توصیه می‌شود.

توجه داشته باشید که تمام دستورات ad-hoc پیاده‌سازی‌شده توسط این ماژول، معادل یک دستور API دارند که می‌توانید با استفاده از mod_adhoc_api یا هر رابط API دیگری اجرا کنید.

گزینه‌های موجود:

access: AccessName

توجه درباره این گزینه: در نسخه ۲۵.۰۳ اضافه شده است. این گزینه تعیین می‌کند که کدام قانون دسترسی برای کنترل اینکه چه کسی مجاز به دسترسی به قابلیت‌های ارائه‌شده توسط این ماژول است، استفاده می‌شود. مقدار پیش‌فرض configure است.

مثال:

acl:
  admin:
    user: sun@localhost
access_rules:
  configure:
    allow: admin
modules:
  mod_configure:
    access: configure

توجه درباره این گزینه: در نسخه ۲۵.۰۷ بهبود یافته است.

این ماژول یک صفحه ساده برای کلاینت وب XMPP به نام Converse ارائه می‌دهد.

برای استفاده از این ماژول، علاوه بر افزودن آن به بخش modules، باید آن را در listen → ejabberd_http → listen-options.md#request_handlers|request_handlers نیز فعال کنید.

مطمئن شوید که mod_bosh یا listen.md#ejabberd_http_ws|ejabberd_http_ws حداقل در یک request_handlers فعال باشد.

وقتی conversejs_css و conversejs_script روی auto تنظیم شده‌اند، به‌طور پیش‌فرض به کلاینت عمومی Converse اشاره می‌کنند.

وقتی این ماژول در modules فعال می‌شود، به‌طور خودکار یک request handler و لینک در WebAdmin اضافه می‌کند. .

این ماژول از نسخه ejabberd 21.12 در دسترس است.

گزینه‌های موجود:

bosh_service_url: auto | BoshURL

آدرس URL سرویس BOSH که Converse می‌تواند به آن متصل شود. کلیدواژه @HOST@ با نام میزبان مجازی واقعی جایگزین می‌شود. اگر روی auto تنظیم شود، URL اولین request handler BOSH پیکربندی‌شده را می‌سازد. مقدار پیش‌فرض auto است.

conversejs_css: auto | URL

آدرس URL فایل CSS مربوط به Converse. کلیدواژه @HOST@ با نام میزبان جایگزین می‌شود. مقدار پیش‌فرض auto است.

conversejs_options: {Name: Value}

توجه درباره این گزینه: در نسخه ۲۲.۰۵ اضافه شده است. گزینه‌های اضافی را برای ارسال به Converse مشخص می‌کند. به پیکربندی Converse مراجعه کنید. فقط مقادیر boolean، عدد صحیح و رشته پشتیبانی می‌شوند؛ لیست‌ها پشتیبانی نمی‌شوند.

conversejs_plugins: [Filename]

فهرستی از فایل‌های محلی اضافی که به عنوان اسکریپت در صفحه اصلی گنجانده می‌شوند. لطفاً مطمئن شوید که این فایل‌ها در مسیر مشخص‌شده در گزینه conversejs_resources ، در زیردایرکتوری plugins/ موجود هستند. توجه داشته باشید که libsignal فقط برای رمزگذاری OMEMO در Converse نسخه ۱۳ یا پایین‌تر لازم است؛ Converse نسخه ۱۴ از libomemo استفاده می‌کند و آن را شامل می‌شود. اگر از کلاینت عمومی Converse استفاده می‌کنید، "libsignal" با URL کتابخانه عمومی جایگزین می‌شود. مقدار پیش‌فرض [] است.

conversejs_resources: Path

توجه درباره این گزینه: در نسخه ۲۲.۰۵ اضافه شده است. مسیر محلی به فایل‌های Converse. اگر تنظیم نشود، از کلاینت عمومی Converse استفاده خواهد شد.

conversejs_script: auto | URL

آدرس URL اسکریپت اصلی Converse. کلیدواژه @HOST@ با نام میزبان جایگزین می‌شود. مقدار پیش‌فرض auto است.

default_domain: Domain

یک دامنه را به عنوان پیش‌فرض برای JIDهای کاربری مشخص می‌کند. کلیدواژه @HOST@ با نام میزبان جایگزین می‌شود. مقدار پیش‌فرض @HOST@ است.

websocket_url: auto | WebSocketURL

یک آدرس URL WebSocket که Converse می‌تواند به آن متصل شود. کلیدواژه @HOST@ با نام میزبان مجازی واقعی جایگزین می‌شود. اگر روی auto تنظیم شود، URL اولین request handler WebSocket پیکربندی‌شده را می‌سازد. مقدار پیش‌فرض auto است.

مثال‌ها:

تنظیم دستی آدرس URL WebSocket و استفاده از کلاینت عمومی Converse:

listen:
  -
    port: 5280
    module: ejabberd_http
    request_handlers:
      /bosh: mod_bosh
      /websocket: ejabberd_http_ws
      /conversejs: mod_conversejs
modules:
  mod_bosh: {}
  mod_conversejs:
    websocket_url: "ws://@HOST@:5280/websocket"

میزبانی محلی Converse و تشخیص خودکار آدرس‌های URL WebSocket و Converse:

listen:
  -
    port: 443
    module: ejabberd_http
    tls: true
    request_handlers:
      /websocket: ejabberd_http_ws
      /conversejs: mod_conversejs
modules:
  mod_conversejs:
    conversejs_resources: "/home/ejabberd/conversejs-x.y.z/package/dist"
    conversejs_plugins: ["libsignal-protocol.min.js"]
    # File path is: /home/ejabberd/conversejs-x.y.z/package/dist/plugins/libsignal-protocol.min.js

پیکربندی برخی گزینه‌های اضافی برای Converse

modules:
  mod_conversejs:
    websocket_url: auto
    conversejs_options:
      auto_away: 30
      clear_cache_on_logout: true
      i18n: "pt"
      locked_domain: "@HOST@"
      message_archiving: always
      theme: dracula

این ماژول پیاده‌سازی XEP-0355: Namespace Delegation است. تاکنون تنها حالت مدیریتی (admin mode) پیاده‌سازی شده است. واگذاری فضای نام (Namespace delegation) به سرویس‌های خارجی اجازه می‌دهد تا IQ با فضای نام مشخصی را مدیریت کنند. این قابلیت ممکن است برای سرویس PEP خارجی به کار رود.


هشدار

مسئله امنیتی: واگذاری فضای نام به کامپوننت‌ها دسترسی به داده‌های حساس را فراهم می‌کند، بنابراین مجوزها باید با احتیاط و تنها در صورت اعتماد به کامپوننت اعطا شوند.


توجه

این ماژول مکمل mod_privilege است اما می‌تواند به صورت مستقل نیز استفاده شود.

گزینه‌های موجود:

namespaces: {Namespace: Options}

اگر می‌خواهید فضاهای نام را به یک کامپوننت واگذار کنید، آن‌ها را در این گزینه مشخص کرده و به یک قانون دسترسی مرتبط سازید. Options عبارتند از:

access: AccessName

این گزینه تعیین می‌کند کدام کامپوننت‌ها برای واگذاری فضای نام مجاز هستند. مقدار پیش‌فرض none است.

filtering: Attributes

فهرست ویژگی‌ها. در حال حاضر استفاده نمی‌شود.

مثال‌ها:

مطمئن شوید که یک فضای نام را به چندین سرویس به صورت همزمان واگذار نمی‌کنید. همان‌طور که در مثال زیر نشان داده شده، برای اینکه کامپوننت sat-pubsub.example.org به درستی کار کند، ماژول mod_pubsub را غیرفعال کنید.

access_rules:
  external_pubsub:
    allow: external_component
  external_mam:
    allow: external_component
acl:
  external_component:
    server: sat-pubsub.example.org
modules:
  mod_delegation:
    namespaces:
      urn:xmpp:mam:1:
        access: external_mam
      http://jabber.org/protocol/pubsub:
        access: external_pubsub

این ماژول پشتیبانی از XEP-0030: Service Discovery را اضافه می‌کند. با فعال بودن این ماژول، سرویس‌های موجود در کارگزار شما توسط کلاینت‌های XMPP قابل کشف هستند.

گزینه‌های موجود:

extra_domains: [Domain, ...]

با این گزینه می‌توانید فهرستی از دامنه‌های اضافی را مشخص کنید که به فهرست آیتم‌های Service Discovery افزوده می‌شوند. مقدار پیش‌فرض یک فهرست خالی است.

name: Name

نام کارگزار در Service Discovery. این نام تنها توسط کلاینت‌های XMPP خاص نمایش داده می‌شود. مقدار پیش‌فرض ejabberd است.

server_info: [Info, ...]

اطلاعات اضافی درباره کارگزار را مشخص می‌کند، همان‌طور که در XEP-0157: Contact Addresses for XMPP Services توضیح داده شده است. هر عنصر Info در فهرست از گزینه‌های زیر ساخته می‌شود:

modules: all | [Module, ...]

مقدار می‌تواند کلیدواژه all باشد که در آن صورت اطلاعات در همه سرویس‌ها گزارش می‌شود، یا فهرستی از ماژول‌های ejabberd که در آن صورت اطلاعات تنها برای سرویس‌های ارائه شده توسط آن ماژول‌ها مشخص می‌شود.

name: Name

نام فیلد var که تعریف خواهد شد. برای نام‌های استاندارد شده به XEP-0157 مراجعه کنید.

urls: [URI, ...]

فهرستی از URIهای تماس، مانند URLهای HTTP، URIهای XMPP و موارد مشابه.

مثال:

server_info:
  -
    modules: all
    name: abuse-addresses
    urls: ["mailto:abuse@shakespeare.lit"]
  -
    modules: [mod_muc]
    name: "Web chatroom logs"
    urls: ["http://www.example.org/muc-logs"]
  -
    modules: [mod_disco]
    name: feedback-addresses
    urls:
      - http://shakespeare.lit/feedback.php
      - mailto:feedback@shakespeare.lit
      - xmpp:feedback@shakespeare.lit
  -
    modules:
      - mod_disco
      - mod_vcard
    name: admin-addresses
    urls:
      - mailto:xmpp@shakespeare.lit
      - xmpp:admins@shakespeare.lit

این ماژول آدرس‌های IP که نشانه‌های مخرب نشان می‌دهند را مسدود می‌کند. در حال حاضر تنها شکست‌های احراز هویت C2S شناسایی می‌شوند.

برخلاف برنامه مستقل، mod_fail2ban پس از گذشت مدتی از اولین شکست یا در صورت احراز هویت موفق، سابقه شکست‌های احراز هویت را پاک می‌کند. همچنین به جای مسدود کردن ساده ترافیک شبکه، یک پیام خطای توصیفی برای کلاینت ارسال می‌کند.


هشدار

نباید از این ماژول پشت یک پروکسی یا load balancer استفاده کنید. ejabberd شکست‌ها را از دیدگاه load balancer می‌بیند و هنگامی که آستانه شکست‌های احراز هویت به حد مجاز رسید، تمام اتصالات از load balancer را رد خواهد کرد. استفاده از این ماژول پشت یک پروکسی می‌تواند باعث شود همه کاربران شما از ejabberd قفل شوند.

گزینه‌های موجود:

access: AccessName

یک قانون دسترسی برای لیست سفید کردن آدرس‌های IP یا شبکه‌ها مشخص می‌کند. اگر قانون برای یک آدرس IP خاص allow برگرداند، آن آدرس هرگز مسدود نخواهد شد. AccessName باید از نوع ip باشد. مقدار پیش‌فرض none است.

c2s_auth_ban_lifetime: timeout()

مدت زمان مسدودیت IP ناشی از تعداد زیاد شکست‌های احراز هویت C2S. مقدار پیش‌فرض 1 ساعت است.

c2s_max_auth_failures: Number

تعداد شکست‌های احراز هویت C2S برای فعال‌سازی مسدودیت IP. مقدار پیش‌فرض 20 است.

برچسب‌های API: ../../developer/ejabberd-api/admin-tags.md#accounts|accounts

توجه درباره این گزینه: در نسخه 22.05 اضافه شده است.

این ماژول فایل‌های کوچک host-meta را همان‌طور که در XEP-0156: Discovering Alternative XMPP Connection Methods توضیح داده شده، ارائه می‌دهد.

برای استفاده از این ماژول، علاوه بر افزودن آن به بخش modules، باید آن را در listen → ejabberd_http → listen-options.md#request_handlers|request_handlers نیز فعال کنید.

توجه داشته باشید که این ماژول تنها زمانی کار می‌کند که listen.md#ejabberd_http|ejabberd_http دارای listen-options.md#tls|tls فعال باشد.

گزینه‌های موجود:

bosh_service_url: undefined | auto | BoshURL

URL سرویس BOSH برای اعلام. کلیدواژه @HOST@ با نام واقعی میزبان مجازی جایگزین می‌شود. اگر روی auto تنظیم شود، URL اولین کنترل‌کننده درخواست BOSH پیکربندی شده را می‌سازد. مقدار پیش‌فرض auto است.

websocket_url: undefined | auto | WebSocketURL

URL WebSocket برای اعلام. کلیدواژه @HOST@ با نام واقعی میزبان مجازی جایگزین می‌شود. اگر روی auto تنظیم شود، URL اولین کنترل‌کننده درخواست WebSocket پیکربندی شده را می‌سازد. مقدار پیش‌فرض auto است.

مثال:

listen:
  -
    port: 443
    module: ejabberd_http
    tls: true
    request_handlers:
      /bosh: mod_bosh
      /websocket: ejabberd_http_ws
      /.well-known/host-meta: mod_host_meta
      /.well-known/host-meta.json: mod_host_meta
modules:
  mod_bosh: {}
  mod_host_meta:
    bosh_service_url: "https://@HOST@:5443/bosh"
    websocket_url: "wss://@HOST@:5443/websocket"

این ماژول یک رابط ReST برای فراخوانی دستورات ../../developer/ejabberd-api/index.md|ejabberd API با استفاده از داده‌های JSON فراهم می‌کند.

برای استفاده از این ماژول، علاوه بر افزودن آن به بخش modules، باید آن را در listen → ejabberd_http → listen-options.md#request_handlers|request_handlers نیز فعال کنید.

برای استفاده از نسخه API خاص N، هنگام تعریف مسیر URL در request_handlers، یک vN اضافه کنید. به عنوان مثال: /api/v2: mod_http_api.

برای اجرای یک دستور، یک درخواست POST به URL مربوطه ارسال کنید: http://localhost:5280/api/COMMAND-NAME

گزینه‌های موجود:

default_version: integer() | string()

توجه درباره این گزینه: در نسخه 24.12 اضافه شده است. تعیین می‌کند که هنگامی که هیچ نسخه‌ای در مسیر URL مشخص نشده، از کدام نسخه API استفاده شود. اگر یک نسخه ejabberd تنظیم شود، از آخرین نسخه API که در آن نسخه ejabberd موجود بوده استفاده خواهد کرد. به عنوان مثال، تنظیم "24.06" در این گزینه به معنای 2 است. مقدار پیش‌فرض آخرین نسخه است.

مثال:

listen:
  -
    port: 5280
    module: ejabberd_http
    request_handlers:
      /api: mod_http_api
modules:
  mod_http_api:
    default_version: 2

توجه درباره این گزینه: بهبود docroot در نسخه ۲۶.۰۱.

این ماژول ساده، فایل‌ها را از دیسک محلی از طریق HTTP ارائه می‌دهد.

گزینه‌های موجود:

accesslog: Path

فایلی برای ثبت دسترسی‌ها با فرمت مشابه Apache. اگر این گزینه مشخص نشود، هیچ گزارشی ثبت نخواهد شد.

content_types: {Extension: Type}

نگاشت پسوند به نوع محتوا را مشخص می‌کند. چندین نوع محتوا از پیش تعریف شده‌اند. با این گزینه می‌توانید تعاریف جدید اضافه کنید یا تعاریف موجود را تغییر دهید. مقادیر پیش‌فرض عبارتند از:

مثال:

content_types:
  .avi: video/avi
  .bmp: image/bmp
  .bz2: application/x-bzip2
  .css: text/css
  .gif: image/gif
  .gz: application/x-gzip
  .html: text/html
  .ico: image/vnd.microsoft.icon
  .jar: application/java-archive
  .jpeg: image/jpeg
  .jpg: image/jpeg
  .js: text/javascript
  .json: application/json
  .m4a: audio/mp4
  .map: application/json
  .mp3: audio/mpeg
  .mp4: video/mp4
  .mpeg: video/mpeg
  .mpg: video/mpeg
  .ogg: application/ogg
  .pdf: application/pdf
  .png: image/png
  .rtf: application/rtf
  .svg: image/svg+xml
  .tiff: image/tiff
  .ttf: font/ttf
  .txt: text/plain
  .wav: audio/wav
  .wasm: application/wasm
  .webp: image/webp
  .woff: font/woff
  .woff2: font/woff2
  .xml: application/xml
  .xpi: application/x-xpinstall
  .xul: application/vnd.mozilla.xul+xml
  .xz: application/x-xz
  .zip: application/zip

custom_headers: {Name: Value}

سرآیندهای سفارشی HTTP که باید در تمام پاسخ‌ها گنجانده شوند را مشخص می‌کند. به‌طور پیش‌فرض هیچ سرآیند سفارشی وجود ندارد.

default_content_type: Type

نوع محتوا برای پسوندهای ناشناخته را مشخص می‌کند. مقدار پیش‌فرض application/octet-stream است.

directory_indices: [Index, ...]

یک یا چند فایل فهرست دایرکتوری را مشخص می‌کند، مشابه متغیر DirectoryIndex در Apache. هنگامی که یک درخواست HTTP به جای فایل معمولی به یک دایرکتوری می‌رسد، این فایل‌های فهرست به ترتیب جستجو می‌شوند و اولین مورد یافت‌شده بازگردانده می‌شود. مقدار پیش‌فرض یک لیست خالی است.

docroot: PathDir | {PathURL, PathDir}

توجه درباره این گزینه: بهبود یافته در نسخه ۲۶.۰۱. دایرکتوری برای ارائه فایل‌ها، یا نگاشتی از چندین مسیر URL (طبق مشخصات listen-options.md#request_handlers|request_handlers) و دایرکتوری‌های متناظر آن‌ها. این یک گزینه اجباری است.

مثال:

listen:
  -
    port: 5280
    module: ejabberd_http
    request_handlers:
      /pub/content: mod_http_fileserver
      /share: mod_http_fileserver
      /: mod_http_fileserver
modules:
  mod_http_fileserver:
    docroot:
      /pub/content: /var/service/www
      /share: /usr/share/javascript
      /: /var/www

must_authenticate_with: [{Username, Hostname}, ...]

فهرست حساب‌هایی که مجاز به استفاده از این سرویس هستند. مقدار پیش‌فرض: [].

مثال‌ها:

این پیکربندی نمونه، فایل‌ها را از دایرکتوری محلی /var/www در آدرس http://example.org:5280/pub/content/ ارائه می‌دهد. در این مثال یک نوع محتوای جدید ogg تعریف شده، png بازتعریف شده و تعریف jpg حذف شده است:

listen:
  -
    port: 5280
    module: ejabberd_http
    request_handlers:
      /pub/content: mod_http_fileserver
modules:
  mod_http_fileserver:
    docroot: /var/www
    accesslog: /var/log/ejabberd/access.log
    directory_indices:
      - index.html
      - main.htm
    custom_headers:
      X-Powered-By: Erlang/OTP
      X-Fry: "It's a widely-believed fact!"
    content_types:
      .ogg: audio/ogg
      .png: image/png
    default_content_type: text/html

توجه درباره این گزینه: content_types در نسخه ۲۶.۰۱ اضافه شد.

این ماژول امکان درخواست مجوز برای آپلود فایل از طریق HTTP را فراهم می‌کند، طبق XEP-0363: HTTP File Upload. اگر درخواست پذیرفته شود، کلاینت یک URL برای آپلود فایل و یک URL دیگر برای دانلود آن فایل دریافت می‌کند.

برای استفاده از این ماژول، باید در listen → ejabberd_http → listen-options.md#request_handlers|request_handlers فعال‌سازی شود.

گزینه‌های موجود:

access: AccessName

این گزینه قانون دسترسی را برای محدود کردن افرادی که مجاز به استفاده از سرویس آپلود HTTP هستند تعریف می‌کند. مقدار پیش‌فرض local است. اگر قانون دسترسی با آن نام وجود نداشته باشد، هیچ کاربری مجاز به استفاده از سرویس نخواهد بود.

append_module_config 🟠: {UploadHost: Options}

توجه درباره این گزینه: در نسخه ۲۶.۰۷ اضافه شد. چند گزینه خاص را به یک هاست آپلود مشخص که پیشتر در گزینه hosts ماژول mod_http_upload تعریف شده، اضافه می‌کند. در حال حاضر فقط name و vcard می‌توانند اینجا تعریف شوند. این مشابه گزینه سطح بالای append_host_config است، با این تفاوت که روی گزینه‌های این ماژول اعمال می‌شود.

مثال:

modules:
  mod_http_upload:
    hosts:
      - service1.@HOST@
      - service2.@HOST@
    name: "Service General"
    append_module_config:
      service1.localhost:
        name: "Service 1"
      service2.example.net:
        name: "Service 2"

content_types: {Extension: Type}

توجه درباره این گزینه: در نسخه ۲۶.۰۱ اضافه شد. نگاشت پسوند به نوع محتوا را مشخص می‌کند، مشابه گزینه content_types در mod_http_fileserver.

custom_headers: {Name: Value}

این گزینه فیلدهای سرآیند اضافی را که باید در تمام پاسخ‌های HTTP گنجانده شوند مشخص می‌کند. به‌طور پیش‌فرض هیچ سرآیند سفارشی وجود ندارد.

dir_mode: Permission

این گزینه بیت‌های مجوز دایرکتوری docroot و هر دایرکتوری ایجادشده در هنگام آپلود فایل را تعریف می‌کند. بیت‌ها به صورت عدد مبنای هشت (مراجعه کنید به صفحه راهنمای chmod(1)) داخل گیومه دوتایی مشخص می‌شوند. به عنوان مثال: "0755". مقدار پیش‌فرض تعریف‌نشده است، یعنی هیچ مجوز صریحی تنظیم نخواهد شد.

docroot: Path

فایل‌های آپلودشده در زیر دایرکتوری مشخص‌شده (به عنوان مسیر مطلق) با این گزینه ذخیره می‌شوند. کلیدواژه @HOME@ با دایرکتوری خانگی کاربری که ejabberd را اجرا می‌کند جایگزین می‌شود، و کلیدواژه @HOST@ با نام هاست مجازی. مقدار پیش‌فرض "@HOME@/upload" است.

external_secret: Text

این گزینه امکان واگذاری تمام پردازش‌های HTTP Upload به یک سرور HTTP جداگانه را فراهم می‌کند. هر دو سرور ejabberd و سرور HTTP باید این رمز مشترک را داشته باشند و دقیقاً طبق مشخصات Prosody’s mod_http_upload_external: Implementation عمل کنند. هیچ مقدار پیش‌فرضی وجود ندارد.

file_mode: Permission

این گزینه بیت‌های مجوز فایل‌های آپلودشده را تعریف می‌کند. بیت‌ها به صورت عدد مبنای هشت (مراجعه کنید به صفحه راهنمای chmod(1)) داخل گیومه دوتایی مشخص می‌شوند. به عنوان مثال: "0644". مقدار پیش‌فرض تعریف‌نشده است، یعنی هیچ مجوز صریحی تنظیم نخواهد شد.

get_url: URL

این گزینه بخش ابتدایی URL‌های GET که برای دانلود فایل‌ها استفاده می‌شوند را مشخص می‌کند. مقدار پیش‌فرض undefined است. هنگامی که این گزینه undefined باشد، مقدار آن با مقدار put_url یکسان تنظیم می‌شود. کلیدواژه @HOST@ با نام هاست مجازی جایگزین می‌شود. توجه: اگر درخواست‌های GET توسط این ماژول پردازش شوند، get_url باید با put_url مطابقت داشته باشد. تنظیم آن به مقدار متفاوت تنها زمانی منطقی است که از یک وب‌سرور خارجی یا mod_http_fileserver برای ارائه فایل‌های آپلودشده استفاده شود.

host

منسوخ شده. به جای آن از hosts استفاده کنید.

hosts: [Host, ...]

این گزینه شناسه‌های Jabber سرویس را تعریف می‌کند. اگر گزینه hosts مشخص نشود، تنها شناسه Jabber، نام هاست مجازی با پیشوند "upload." خواهد بود. کلیدواژه @HOST@ با نام هاست مجازی واقعی جایگزین می‌شود.

jid_in_url: node | sha1

وقتی این گزینه روی node تنظیم شود، شناسه گره JID کاربر (یعنی نام کاربری) در URL‌های GET و PUT تولیدشده توسط mod_http_upload گنجانده می‌شود. در غیر این صورت، به جای آن یک هش SHA-1 از JID ساده کاربر گنجانده می‌شود. مقدار پیش‌فرض sha1 است.

max_size: Size

این گزینه حداکثر حجم قابل قبول فایل را محدود می‌کند. باید یک عدد بایت (بزرگ‌تر از صفر) یا infinity مشخص شود. مقدار پیش‌فرض 104857600 است.

name: Name

نام سرویس در Service Discovery. مقدار پیش‌فرض "HTTP File Upload" است. توجه داشته باشید که این نام تنها توسط برخی کلاینت‌های XMPP نمایش داده می‌شود.

put_url: URL

این گزینه بخش ابتدایی URL‌های PUT که برای آپلود فایل استفاده می‌شوند را مشخص می‌کند. کلیدواژه @HOST@ با نام هاست مجازی جایگزین می‌شود. و @HOST_URL_ENCODE@ با نام هاست کدگذاری‌شده برای URL جایگزین می‌شود، که برای هاست‌های مجازی حاوی کاراکترهای غیرلاتین مفید است. توجه: هاست‌های مجازی مختلف نمی‌توانند از یک URL PUT یکسان استفاده کنند. مقدار پیش‌فرض "https://@HOST@:5443/upload" است.

rm_on_unregister: true | false

این گزینه مشخص می‌کند که آیا فایل‌های آپلودشده توسط یک کاربر هنگام لغو ثبت‌نام آن کاربر باید حذف شوند یا خیر. مقدار پیش‌فرض true است.

secret_length: Length

این گزینه طول رشته تصادفی گنجانده‌شده در URL‌های GET و PUT تولیدشده توسط mod_http_upload را تعریف می‌کند. حداقل طول 8 کاراکتر است، اما توصیه می‌شود مقدار بزرگ‌تری انتخاب شود. مقدار پیش‌فرض 40 است.

service_url

منسوخ شده.

thumbnail: true | false

این گزینه مشخص می‌کند که آیا ejabberd باید تصاویر کوچک (thumbnail) از تصاویر آپلودشده ایجاد کند یا خیر. اگر یک تصویر کوچک ایجاد شود، یک عنصر <thumbnail/> که حاوی <uri/> دانلود و برخی متادیتا است، همراه با پاسخ PUT بازگردانده می‌شود. مقدار پیش‌فرض false است.

vcard: vCard

یک vCard سفارشی برای سرویس که توسط برخی کلاینت‌های XMPP در Service Discovery نمایش داده می‌شود. مقدار vCard یک نگاشت YAML است که از نمایش XML یک vCard ساخته شده. از آنجا که این نمایش فاقد ویژگی (attribute) است، نگاشت ساده است.

مثال:

# This XML representation of vCard:
#   <vCard xmlns='vcard-temp'>
#     <FN>Conferences</FN>
#     <ADR>
#       <WORK/>
#       <STREET>Elm Street</STREET>
#     </ADR>
#   </vCard>
#
# is translated to:
vcard:
  fn: Conferences
  adr:
    -
      work: true
      street: Elm Street

مثال:

listen:
  -
    port: 5443
    module: ejabberd_http
    tls: true
    request_handlers:
      /upload: mod_http_upload
modules:
  mod_http_upload:
    docroot: /ejabberd/upload
    put_url: "https://@HOST@:5443/upload"

این ماژول پشتیبانی از سهمیه (quota) را برای mod_http_upload اضافه می‌کند.

این ماژول به mod_http_upload وابسته است.

گزینه‌های موجود:

access_hard_quota: AccessName

این گزینه تعریف می‌کند که کدام قانون دسترسی برای تعیین «سهمیه سخت» (hard quota) برای JIDهای مطابق استفاده می‌شود. آن قانون باید برای هر JIDی که قرار است محدودیت سهمیه داشته باشد، یک عدد مثبت برگرداند. این عدد، مقدار مگابایتی است که کاربر مربوطه می‌تواند آپلود کند. هنگامی که این آستانه از حد تجاوز کند، ejabberd قدیمی‌ترین فایل‌های آپلود شده توسط آن کاربر را حذف می‌کند تا مصرف دیسک آن‌ها برابر یا کمتر از سهمیه نرم (soft quota) مشخص شده شود (همچنین گزینه access_soft_quota را ببینید). مقدار پیش‌فرض hard_upload_quota است.

access_soft_quota: AccessName

این گزینه تعریف می‌کند که کدام قانون دسترسی برای تعیین «سهمیه نرم» (soft quota) برای JIDهای مطابق استفاده می‌شود. آن قانون باید برای هر JIDی که قرار است محدودیت سهمیه داشته باشد، یک عدد مثبت بر حسب مگابایت برگرداند. برای جزئیات بیشتر توضیحات گزینه access_hard_quota را ببینید. مقدار پیش‌فرض soft_upload_quota است.

max_days: Days

اگر عددی بزرگ‌تر از صفر مشخص شود، هر فایل (و دایرکتوری) که قدیمی‌تر از این تعداد روز باشد، یک بار در روز از زیردایرکتوری‌های دایرکتوری docroot حذف می‌شود. مقدار پیش‌فرض infinity است.

مثال‌ها:

توجه داشته باشید که برای استفاده از قابلیت سهمیه، لازم نیست گزینه‌های access_hard_quota و access_soft_quota را مشخص کنید. می‌توانید از نام‌های پیش‌فرض استفاده کنید و فقط قوانین دسترسی مانند این مثال را تعریف کنید:

shaper_rules:
  soft_upload_quota:
    1000: all # MiB
  hard_upload_quota:
    1100: all # MiB
modules:
  mod_http_upload: {}
  mod_http_upload_quota:
    max_days: 100

توجه در مورد این گزینه: بهبودیافته در نسخه 26.07.

این ماژول دعوت‌نامه کاربر و ایجاد حساب کاربری را برای ایجاد لینک‌های خارج از باند (out-of-band) جهت عضویت دیگران در شبکه XMPP و برقراری اشتراک متقابل فراهم می‌کند. این ماژول XEP-0379: Pre-Authenticated Roster Subscription، XEP-0401: Ad-hoc Account Invitation Generation و XEP-0445: Pre-Authenticated In-Band Registration را پیاده‌سازی می‌کند.

این دعوت‌نامه‌ها به صورت URI های XMPP، از طریق دستورات ad-hoc یا دستورات API (مانند API generate_invite و API generate_invite_with_username) ایجاد می‌شوند و سپس قرار است به صورت خارج از باند ارسال شوند.

کاربر دریافت‌کننده باید یک کلاینت نصب کرده باشد که از این دعوت‌نامه‌ها پشتیبانی کند. از آنجا که این موضوع به یک مانع رایج برای استقرار آسان تبدیل شده است، این ماژول با یک پارامتر صفحه فرود اختیاری ارائه می‌شود که می‌تواند یا یک سرویس خارجی مانند نصب easy-xmpp-invitation، یک سرویس شخص ثالث مانند JoinJabber یا برای راحتی یک سرویس داخلی باشد. این صفحه فرود سپس گیرنده را در راه‌اندازی یک کلاینت و در صورت نیاز ایجاد یک حساب کاربری راهنمایی می‌کند.

برای استفاده از قابلیت صفحه فرود داخلی، باید landing_page را روی auto یا یک قالب URL مانند https://{{ host }}/invites/{{ invite.token }} تنظیم کنید، اگر تنظیمات سرور شما شامل یک پروکسی معکوس (reverse proxy) است. علاوه بر این، باید این ماژول را به عنوان یک هندلر برای شنونده ejabberd_http متصل کنید، همانطور که در مثال زیر نشان داده شده است.

برای راحتی، اکنون یک صفحه شروع نیز در هر جایی که mod_invites را در هندلر ejabberd_http متصل می‌کنید گنجانده شده است. این صفحه شروع به افراد اجازه می‌دهد با وارد کردن نام کاربری و رمز عبور خود، دعوت‌نامه تولید کنند. به همین دلیل URL باید توسط HTTPS محافظت شود. مورد استفاده اصلی زمانی است که افراد فقط کلاینت‌هایی دارند که از تولید دعوت‌نامه به صورت بومی پشتیبانی نمی‌کنند.

اگر ترجیح می‌دهید از یک سرویس خارجی استفاده کنید، landing_page را روی چیزی مانند http://{{ host }}:8080/easy-xmpp-invites/#{{ invite.uri|strip_protocol }} یا https://invites.joinjabber.org/#{{ invite.uri|strip_protocol }} تنظیم کنید.

گزینه‌های موجود:

access_create_account: Access Rule Name

این نام یک قانون دسترسی است که مشخص می‌کند چه کسی مجاز به ایجاد دعوت‌نامه‌های create account است. مقدار پیش‌فرض none است، یعنی هیچ‌کس قادر به ایجاد چنین دعوت‌نامه‌هایی نیست. علاوه بر این، این گزینه بر دعوت‌نامه‌های roster اعمال می‌شود و اگر کاربر فرستنده توسط این قانون مجاز باشد، ثبت‌نام درون‌باند (IBR) را نیز امکان‌پذیر می‌کند. کاربران از ACL admin همیشه مجاز به ایجاد این دعوت‌نامه‌ها هستند.

مثال:

mod_invites:
  access_create_account: local

db_type: mnesia | sql

همانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال می‌شود.

landing_page: none | auto | LandingPageURLTemplate

آیا برای دعوت‌نامه‌هایی که ایجاد می‌شوند از یک صفحه فرود استفاده شود یا خیر. در صورت استفاده از یک قالب URL، این می‌تواند خارجی یا داخلی باشد. متغیرهای قالب شامل host، invite.token و invite.uri هستند، همچنین فیلترهایی تعریف شده‌اند که مهم‌ترین آن‌ها strip_protocol است. این یک مثال است: http://{{ host }}:8080/easy-xmpp-invites/#{{ invite.uri|strip_protocol }}. برای راحتی می‌توانید auto را انتخاب کنید و هندلر ejabberd_http برای mod_invites برای ساختن URL صفحه فرود استفاده می‌شود. مقدار پیش‌فرض none است.

max_invites: pos_integer() | infinity

حداکثر تعداد دعوت‌نامه‌های create account که یک کاربر منفرد می‌تواند ایجاد کند. کاربرانی که با ACL admin مطابقت دارند از این محدودیت معاف هستند. علاوه بر این، استفاده از دعوت‌نامه‌های roster برای ایجاد حساب کاربری را محدود می‌کند. مقدار پیش‌فرض infinity است.

site_name: Site Name

یک نام قابل خواندن توسط انسان برای سایت شما. مثلاً "My Beautiful Laundrette". در قالب‌های صفحه فرود استفاده می‌شود.

templates_dir: Path

دایرکتوری حاوی قالب‌ها و فایل‌های ایستا که برای صفحه فرود و فرم ثبت‌نام وب استفاده می‌شوند. فقط در صورتی باید تنظیم شود که بخواهید مجموعه قالب‌های خود یا فهرست برنامه‌های توصیه‌شده خود را ارسال کنید.

token_expire_seconds: pos_integer()

تعداد ثانیه‌ها تا انقضای توکن. مقدار پیش‌فرض 432000 است (یعنی پنج روز: 5 * 24 * 60 * 60).

webchat_url: none | auto | Webchat URL

توجه در مورد این گزینه: اضافه‌شده در نسخه 26.03. URL به یک کلاینت وب‌چت. در هنگام ثبت‌نام دستی از طریق فرم وب، این گزینه برای شروع کار توصیه می‌شود. اگر auto انتخاب شود، mod_conversejs از بخش شنوندگان انتخاب می‌شود. مقدار پیش‌فرض auto است.

مثال‌ها:

پیکربندی پایه با صفحه فرود اما بدون ایجاد حساب کاربری، فقط دعوت‌نامه‌های roster:

listen:
  -
    port: 5281
    module: ejabberd_http
    request_handlers:
      /invites: mod_invites
# [...]
modules:
  mod_invites:
    landing_page: auto

برای اینکه فقط کاربران admin بتوانند دعوت‌نامه‌های create account ایجاد کنند و ثبت‌نام درون‌باند معمولی را غیرفعال کنید، پیکربندی زیر را خواهید داشت:

acl:
  admin:
    - user: "my_admin_user@example.com"
access_rules:
  register:
    allow: admin
modules:
  mod_invites:
    landing_page: auto
  mod_register:
    allow_modules:
      - mod_invites

اگر می‌خواهید همه کاربران شما بتوانند دعوت‌نامه‌های create account ارسال کنند، به جای آن سرور خود را این‌گونه پیکربندی کنید. توجه داشته باشید که نام قوانین دسترسی فقط مثال هستند و شما آزاد هستید آن‌ها را تغییر دهید.

acl:
  local:
    user_regexp: ""
access_rules:
  create_account_invite:
    allow: local
modules:
  mod_invites:
    access_create_account: create_account_invite
    landing_page: auto
  mod_register:
    allow_modules:
      - mod_invites

این ماژول به کلاینت‌های XMPP اجازه می‌دهد از سرور بخواهند که یک JID را طبق قوانین مشخص‌شده در RFC 6122: XMPP Address Format نرمال‌سازی کند. این ممکن است برای کلاینت‌هایی در محیط‌های محدود خاص، یا برای اهداف آزمایشی مفید باشد.

گزینه‌های موجود:

access: AccessName

این گزینه تعریف می‌کند که کدام قانون دسترسی برای کنترل اینکه چه کسی مجاز به استفاده از این سرویس است استفاده می‌شود. مقدار پیش‌فرض local است.

این ماژول پشتیبانی از XEP-0012: Last Activity را اضافه می‌کند. می‌توان از آن برای کشف آخرین زمان دسترسی یک کاربر قطع‌شده به سرور، دانستن آخرین فعالیت یک کاربر متصل روی سرور، یا پرس‌وجو از مدت زمان فعالیت سرور ejabberd استفاده کرد.

گزینه‌های موجود:

cache_life_time: timeout()

همانند گزینه سطح بالای cache_life_time، اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

همانند گزینه سطح بالای cache_missed، اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

همانند گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال می‌شود.

db_type: mnesia | sql

همانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال می‌شود.

use_cache: true | false

همانند گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال می‌شود.

این ماژول XEP-0078: Non-SASL Authentication را پیاده‌سازی می‌کند.


توجه

این نوع احراز هویت در سال ۲۰۰۸ منسوخ شد و احتمالاً نیازی به این ماژول ندارید مگر اینکه چیزی مانند ربات‌های جبر قدیمی داشته باشید.

این ماژول هیچ گزینه‌ای ندارد.

این ماژول XEP-0313: Message Archive Management و XEP-0441: Message Archive Management Preferences را پیاده‌سازی می‌کند. کلاینت‌های XMPP سازگار می‌توانند از آن برای ذخیره تاریخچه چت خود در سرور استفاده کنند.


توجه

پشتیبان Mnesia برای mod_mam توصیه نمی‌شود: محدود به ۲ گیگابایت است و اغلب هنگام رسیدن به این محدودیت خراب می‌شود. پشتیبان SQL توصیه می‌شود. به طور خاص، برای سرورهای کوچک SQLite انتخاب ترجیحی است زیرا پیکربندی آن بسیار آسان است.

گزینه‌های موجود:

access_preferences: AccessName

این قانون دسترسی تعریف می‌کند که چه کسی مجاز به تغییر تنظیمات MAM است. مقدار پیش‌فرض all است.

archive_muc_as_mucsub: true | false

توجه در مورد این گزینه: اضافه‌شده در نسخه 25.10. هنگامی که این گزینه فعال است، پیام‌های groupchat دریافتی برای کاربرانی که اشتراک mucsub در اتاقی دارند که پیام از آن نشأت گرفته، پس از تبدیل به پیام‌های رویداد mucsub بایگانی می‌شوند. مقدار پیش‌فرض false است.

assume_mam_usage: true | false

این گزینه تعیین می‌کند که کد مدیریت جریان ejabberd (به mod_stream_mgmt مراجعه کنید) چگونه پیام‌های تأییدنشده را هنگام از دست رفتن اتصال مدیریت کند. معمولاً چنین پیام‌هایی یا برگشت داده می‌شوند یا مجدداً ارسال می‌شوند. با این حال، اگر این گزینه روی true تنظیم شود، هیچ‌کدام از این کارها برای پیام‌هایی که در بایگانی MAM کاربر ذخیره شده‌اند انجام نمی‌شود. در این حالت، ejabberd فرض می‌کند که آن پیام‌ها از بایگانی بازیابی خواهند شد. مقدار پیش‌فرض false است.

cache_life_time: timeout()

همانند گزینه سطح بالای cache_life_time، اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

همانند گزینه سطح بالای cache_missed، اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

همانند گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال می‌شود.

clear_archive_on_room_destroy: true | false

آیا هنگام نابودی بایگانی پیام یک اتاق (به mod_muc مراجعه کنید)، آن بایگانی حذف شود. مقدار پیش‌فرض true است.

compress_xml: true | false

هنگامی که فعال است، پیام‌های جدید اضافه‌شده به بایگانی‌ها با استفاده از یک الگوریتم فشرده‌سازی سفارشی فشرده می‌شوند. این قابلیت فقط با پشتیبان‌های SQL کار می‌کند. مقدار پیش‌فرض false است.

db_type: mnesia | sql

همانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال می‌شود.

default: always | never | roster

این گزینه سیاست پیش‌فرض برای تاریخچه چت را تعریف می‌کند. هنگامی که always تنظیم شود، هر پیام چت ذخیره می‌شود. با roster فقط تاریخچه چت با مخاطبین موجود در roster کاربر ذخیره می‌شود. و never تاریخچه چت را به طور کامل غیرفعال می‌کند. توجه داشته باشید که یک کلاینت می‌تواند سیاست خود را از طریق دستورات پروتکل تغییر دهد. مقدار پیش‌فرض never است.

request_activates_archiving: true | false

اگر مقدار true باشد، تا زمانی که کلاینت کاربر یک درخواست MAM صادر نکند، هیچ پیامی برای آن کاربر ذخیره نمی‌شود، صرف نظر از مقدار گزینه default. پس از اینکه سرور یک درخواست دریافت کرد، پیام‌های آن کاربر طبق معمول بایگانی می‌شوند. مقدار پیش‌فرض false است.

use_cache: true | false

همانند گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال می‌شود.

user_mucsub_from_muc_archive: true | false

هنگامی که این گزینه غیرفعال است، برای هر مشترک منفرد یک پیام mucsub جداگانه ذخیره می‌شود. با فعال بودن این گزینه، هنگامی که کاربر بایگانی مجازی mucsub را دریافت می‌کند، پیام‌ها از بایگانی‌های muc تولید می‌شوند. مقدار پیش‌فرض false است.

برچسب‌های API: ../../developer/ejabberd-api/admin-tags.md#mam|mam، ../../developer/ejabberd-api/admin-tags.md#purge|purge

توجه درباره این گزینه: بهبودیافته در نسخه ۲۵.۰۸.

دروازه Matrix. از نسخه‌های اتاق ۹، ۱۰ و ۱۱ از ejabberd 25.03 پشتیبانی می‌کند؛ از نسخه‌های اتاق ۴ و بالاتر از ejabberd 25.07؛ از نسخه اتاق ۱۲ (اتاق‌های hydra) از ejabberd 25.08. برای استفاده از این ماژول، Erlang/OTP 25 یا بالاتر لازم است. این ماژول از ejabberd 24.02 در دسترس است.

گزینه‌های موجود:

host: Host

این گزینه شناسه‌های Jabber سرویس را تعریف می‌کند. اگر گزینه host مشخص نشود، شناسه Jabber همان نام میزبان مجازی با پیشوند "matrix." خواهد بود. کلیدواژه @HOST@ با نام واقعی میزبان مجازی جایگزین می‌شود.

key: string()

مقدار کلید امضای matrix، به صورت base64.

key_name: string()

نام کلید امضای matrix.

leave_timeout: integer()

تأخیر به ثانیه بین خروج کاربر از اتاق MUC و ارسال رویداد leave در Matrix.

matrix_domain: Domain

یک دامنه در فدراسیون Matrix مشخص می‌کند. کلیدواژه @HOST@ با نام میزبان جایگزین می‌شود. مقدار پیش‌فرض @HOST@ است.

matrix_id_as_jid: true | false

اگر روی true تنظیم شود، تمام بسته‌هایی که تحویل آن‌ها از طریق اتصال سرور به سرور XMPP ناموفق است، با ترجمه شناسه Jabber user@matrixdomain.tld به شناسه کاربری Matrix @user:matrixdomain.tld به دروازه Matrix هدایت می‌شوند. وقتی روی false تنظیم شود، پیام‌ها باید صریحاً به شناسه Jabber سرویس دروازه matrix ارسال شوند تا به سرور Matrix راه دور هدایت گردند. در این صورت، برای ارسال پیام به کاربر Matrix @user:matrixdomain.tld، کلاینت باید پیامی به JID user%matrixdomain.tld@matrix.myxmppdomain.tld ارسال کند، که در آن matrix.myxmppdomain.tld همان JID سرویس دروازه است که توسط گزینه host تعیین می‌شود. مقدار پیش‌فرض false است.

notary_servers: [Server, ...]

فهرستی از سرورهای notary.

مثال:

listen:
  -
    port: 8448
    module: ejabberd_http
    tls: true
    request_handlers:
      "/_matrix": mod_matrix_gw
modules:
  mod_matrix_gw:
    key_name: "key1"
    key: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    matrix_id_as_jid: true

این ماژول رویدادها را به پشتیبان خارجی ارسال می‌کند (در حال حاضر فقط grapherl پشتیبانی می‌شود). رویدادهای پشتیبانی‌شده عبارتند از:

•sm_register_connection
•sm_remove_connection
•user_send_packet
•user_receive_packet
•s2s_send_packet
•s2s_receive_packet
•register_user
•remove_user
•offline_message

وقتی فعال باشد، هر فراخوانی به این هوک‌ها یک رویداد شمارنده را به پشتیبان خارجی ارسال می‌کند.

گزینه‌های موجود:

ip: IPv4Address

آدرس IPv4 محلی که پشتیبان در آن قرار دارد. مقدار پیش‌فرض 127.0.0.1 است.

port: Port

شماره پورت اینترنتی که پشتیبان برای دریافت اتصالات/بسته‌های ورودی روی آن گوش می‌دهد. مقدار پیش‌فرض 11111 است.

توجه درباره این گزینه: اضافه‌شده در ۱۶.۰۳ و بهبودیافته در ۱۹.۰۲.

این ماژول یک پیاده‌سازی آزمایشی از XEP-0369: Mediated Information eXchange (MIX) است. ادعا می‌شود که پروتکل MIX در آینده جایگزین پروتکل MUC خواهد شد (نگاه کنید به mod_muc).

برای آشنایی بیشتر با نحوه استفاده از این قابلیت، می‌توانید به آموزش ما مراجعه کنید: ../../tutorials/mix-010.md|Getting started with MIX

این ماژول به mod_mam وابسته است.

گزینه‌های موجود:

access_create: AccessName

یک قانون دسترسی برای کنترل ایجاد کانال‌های MIX. مقدار پیش‌فرض all است.

db_type: mnesia | sql

همانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال می‌شود.

host

منسوخ‌شده. به جای آن از hosts استفاده کنید.

hosts: [Host, ...]

این گزینه شناسه‌های Jabber سرویس را تعریف می‌کند. اگر گزینه hosts مشخص نشود، تنها شناسه Jabber همان نام میزبان مجازی با پیشوند "mix." خواهد بود. کلیدواژه @HOST@ با نام واقعی میزبان مجازی جایگزین می‌شود.

name: Name

نام سرویس در Service Discovery. این نام فقط توسط کلاینت‌های XMPP خاص نمایش داده می‌شود. مقدار پیش‌فرض Channels است.

این ماژول XEP-0405: Mediated Information eXchange (MIX): Participant Server Requirements را پیاده‌سازی می‌کند. این ماژول در صورتی لازم است که کلاینت‌های سازگار با MIX روی سرور شما قصد پیوستن به کانال‌های MIX را داشته باشند (چه روی سرور شما و چه روی سرورهای راه دور).


توجه

mod_mix برای کارکرد این ماژول لازم نیست، اما بدون mod_mix_pam قابلیت MIX کلاینت‌های XMPP محلی شما دچار اشکال خواهد شد.

گزینه‌های موجود:

cache_life_time: timeout()

همانند گزینه سطح بالای cache_life_time، اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

همانند گزینه سطح بالای cache_missed، اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

همانند گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال می‌شود.

db_type: mnesia | sql

همانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال می‌شود.

use_cache: true | false

همانند گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال می‌شود.

این ماژول پشتیبانی از پروتکل ../guide/mqtt/index.md|MQTT نسخه‌های 3.1.1 و 5.0 را اضافه می‌کند. به یاد داشته باشید که mod_mqtt را در بخش‌های modules و listen پیکربندی کنید.

گزینه‌های موجود:

access_publish: {TopicFilter: AccessName}

قوانین دسترسی برای محدودکردن دسترسی به موضوعات برای ناشران. به طور پیش‌فرض هیچ محدودیتی وجود ندارد.

access_subscribe: {TopicFilter: AccessName}

قوانین دسترسی برای محدودکردن دسترسی به موضوعات برای مشترکین. به طور پیش‌فرض هیچ محدودیتی وجود ندارد.

cache_life_time: timeout()

همانند گزینه سطح بالای cache_life_time، اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

همانند گزینه سطح بالای cache_missed، اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

همانند گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال می‌شود.

db_type: mnesia | sql

همانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال می‌شود.

match_retained_limit: pos_integer() | infinity

این گزینه تعداد پیام‌های نگه‌داشته‌شده‌ای را که هنگام اشتراک در یک فیلتر موضوع به کلاینت بازگردانده می‌شود محدود می‌کند. مقدار پیش‌فرض 1000 است.

max_queue: Size

حداکثر اندازه صف برای بسته‌های خروجی. مقدار پیش‌فرض 5000 است.

max_topic_aliases: 0..65535

حداکثر تعداد نام مستعاری که یک کلاینت می‌تواند با موضوعات مرتبط کند. مقدار پیش‌فرض 100 است.

max_topic_depth: Depth

حداکثر عمق موضوع، یعنی تعداد اسلش‌ها (/) در موضوع. مقدار پیش‌فرض 8 است.

queue_type: ram | file

همانند گزینه سطح بالای queue_type، اما فقط برای این ماژول اعمال می‌شود.

ram_db_type: mnesia

همانند گزینه سطح بالای default_ram_db، اما فقط برای این ماژول اعمال می‌شود.

session_expiry: timeout()

این گزینه مدت زمان انتظار برای از سرگیری نشست MQTT را مشخص می‌کند. وقتی روی 0 تنظیم شود، نشست با بسته شدن اتصال زیرین کلاینت از بین می‌رود. مقدار پیش‌فرض 5 دقیقه است.

use_cache: true | false

همانند گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال می‌شود.

این ماژول قابلیت همگام‌سازی موضوعات (topics) محلی MQTT با داده‌های روی سرورهای راه‌دور را اضافه می‌کند. می‌تواند هنگامی که کاربر محلی موضوع محلی را به‌روز می‌کند، موضوعات را روی سرورهای راه‌دور به‌روز کند، یا می‌تواند مشترک تغییرات سرور راه‌دور شود و نسخه محلی را هنگام به‌روزرسانی داده‌های راه‌دور به‌روز کند. این ماژول از ejabberd 23.01 در دسترس است.

گزینه‌های موجود:

replication_user: JID

شناسه کاربری که به عنوان مالک تغییرات محلی تعیین خواهد شد.

servers: {ServerUrl: {Key: Value}}

اعلان داده‌های مشترک برای هر ServerUrl. آدرس‌های URL سرور می‌توانند از طرح‌واره‌های زیر استفاده کنند: mqtt, mqtts (mqtt با tls), mqtt5, mqtt5s (هر دو برای فعال‌سازی پروتکل v5), ws, wss, ws5, wss5. کلیدها باید به شرح زیر باشند:

authentication: {AuthKey: AuthValue}

فهرست اطلاعات احراز هویت که AuthKey می‌تواند باشد: username و password یا certfile که به گواهی‌نامه کلاینت اشاره می‌کند. احراز هویت با گواهی‌نامه فقط با mqtts, mqtt5s, wss, wss5 قابل استفاده است.

publish: {LocalTopic: RemoteTopic}

باید publish یا subscribe یا هر دو تنظیم شوند.

subscribe: {RemoteTopic: LocalTopic}

باید publish یا subscribe یا هر دو تنظیم شوند.

مثال:

modules:
  mod_mqtt_bridge:
    replication_user: "mqtt@xmpp.server.com"
    servers:
      "mqtt://server.com":
        authentication:
          certfile: "/etc/ejabberd/mqtt_server.pem"
        publish:
          "localA": "remoteA" # local changes to 'localA' will be replicated on remote server as 'remoteA'
          "topicB": "topicB"
        subscribe:
          "remoteB": "localB" # changes to 'remoteB' on remote server will be stored as 'localB' on local server

توجه درباره این گزینه: ماژول mod_muc_occupantid در نسخه 26.02 ادغام شد.

این ماژول پشتیبانی از چت چندکاربره (MUC) را فراهم می‌کند. کاربران می‌توانند اتاق‌های موجود را کشف کنند، به آن‌ها بپیوندند یا اتاق جدید ایجاد کنند. حاضران در اتاق می‌توانند به صورت عمومی چت کنند یا مکالمات خصوصی داشته باشند.

پروتکل‌های پیاده‌سازی شده در این ماژول:

•XEP-0045: Multi-User Chat
•XEP-0249: Direct MUC Invitations
•XEP-0421: Occupant identifiers for semi-anonymous MUCs
•XEP-0486: MUC Avatars
•Muc/Sub: Multi-User Chat Subscriptions

سرویس MUC به هر Jabber ID اجازه می‌دهد یک نام‌مستعار (nickname) ثبت کند تا هیچ‌کس دیگری نتواند از آن نام‌مستعار در هیچ اتاقی در سرویس MUC استفاده کند. برای ثبت نام‌مستعار، کشف سرویس را در کلاینت XMPP خود باز کنید و در سرویس MUC ثبت‌نام کنید.

همچنین امکان ثبت نام‌مستعار در یک اتاق وجود دارد تا هیچ‌کس دیگری نتواند از آن نام‌مستعار در آن اتاق استفاده کند. اگر یک نام‌مستعار در سرویس MUC ثبت شده باشد، نمی‌توان آن نام‌مستعار را در هیچ اتاقی ثبت کرد، و بالعکس: نام‌مستعاری که در یک اتاق ثبت شده، نمی‌تواند در سرویس MUC ثبت شود.

این ماژول از خوشه‌بندی و توازن بار پشتیبانی می‌کند. یک نمونه ماژول می‌تواند برای هر گره خوشه راه‌اندازی شود. اتاق‌ها در زمان ایجاد بر روی تمام نمونه‌های ماژول MUC موجود توزیع می‌شوند. ماژول چت چندکاربره خوشه‌بندی شده است اما خود اتاق‌ها نه خوشه‌بندی شده‌اند و نه مقاوم در برابر خرابی: اگر گره مدیریت‌کننده مجموعه‌ای از اتاق‌ها خاموش شود، اتاق‌ها حذف می‌شوند و در اولین تلاش برای اتصال روی گره موجود دیگری بازسازی خواهند شد.

گزینه‌های موجود:

access: AccessName

می‌توانید مشخص کنید چه کسانی مجاز به استفاده از سرویس چت چندکاربره هستند. به طور پیش‌فرض همه مجاز به استفاده از آن هستند.

access_admin: AccessName

این گزینه مشخص می‌کند چه کسانی مجاز به مدیریت سرویس چت چندکاربره هستند. مقدار پیش‌فرض none است، به این معنی که فقط سازنده اتاق می‌تواند اتاق خود را مدیریت کند. مدیران می‌توانند یک پیام معمولی به JID سرویس ارسال کنند و در تمام اتاق‌های فعال به عنوان پیام سرویس نمایش داده خواهد شد. مدیران می‌توانند یک پیام groupchat به JID یک اتاق فعال ارسال کنند و پیام به عنوان پیام سرویس در اتاق نمایش داده خواهد شد.

access_create: AccessName

برای پیکربندی اینکه چه کسانی مجاز به ایجاد اتاق‌های جدید در سرویس چت چندکاربره هستند، می‌توان از این گزینه استفاده کرد. مقدار پیش‌فرض all است، به این معنی که همه مجاز به ایجاد اتاق هستند.

access_mam: AccessName

برای پیکربندی اینکه چه کسانی مجاز به تغییر گزینه اتاق mam هستند. مقدار پیش‌فرض all است، به این معنی که همه مجاز به تغییر آن گزینه هستند.

access_persistent: AccessName

برای پیکربندی اینکه چه کسانی مجاز به تغییر گزینه اتاق persistent هستند. مقدار پیش‌فرض all است، به این معنی که همه مجاز به تغییر آن گزینه هستند.

access_register: AccessName

توجه درباره این گزینه: در نسخه 23.10 بهبود یافت. این گزینه مشخص می‌کند چه کسانی مجاز به ثبت نام‌مستعار در سرویس چت چندکاربره و اتاق‌ها هستند. مقدار پیش‌فرض all برای سازگاری با نسخه‌های قبلی است، به این معنی که هر کاربری مجاز است هر نام‌مستعار آزادی را در سرویس MUC و در اتاق‌ها ثبت کند.

append_module_config 🟠: {MUCHost: Options}

توجه درباره این گزینه: در نسخه 26.07 اضافه شد. چند گزینه خاص را به یک MUC host مشخص که قبلاً در گزینه hosts ماژول mod_muc تعریف شده اضافه می‌کند. این مشابه گزینه سطح بالای append_host_config است، اما در این مورد برای گزینه‌های mod_muc اعمال می‌شود.

مثال:

modules:
  mod_muc:
    hosts:
      - service1.@HOST@
      - service2.@HOST@
    name: "Service General"
    append_module_config:
      service1.localhost:
        name: "Service 1"
      service2.example.net:
        name: "Service 2"

cleanup_affiliations_on_start: true | false

توجه درباره این گزینه: در نسخه 22.05 اضافه شد. در هنگام راه‌اندازی، وابستگی‌ها (affiliations) برای کاربران محلی غیرموجود حذف می‌شوند. مقدار پیش‌فرض false است.

db_type: mnesia | sql

مانند گزینه سطح بالای default_db ، اما فقط برای این ماژول اعمال می‌شود.

default_room_options: Options

گزینه‌های پیش‌فرض اتاق را تعریف می‌کند. توجه داشته باشید که سازنده اتاق می‌تواند در هر زمان با استفاده از یک کلاینت XMPP با قابلیت MUC، گزینه‌های اتاق خود را تغییر دهد. گزینه‌های Options عبارتند از:

allow_change_subj: true | false

به حاضران اجازه می‌دهد موضوع را تغییر دهند. مقدار پیش‌فرض true است.

allow_private_messages_from_visitors: anyone | moderators | nobody

بازدیدکنندگان می‌توانند پیام خصوصی برای سایر حاضران ارسال کنند. مقدار پیش‌فرض anyone است که به این معنی است که بازدیدکنندگان می‌توانند برای هر حاضری پیام خصوصی ارسال کنند.

allow_query_users: true | false

حاضران می‌توانند پرس‌وجوهای IQ برای سایر حاضران ارسال کنند. مقدار پیش‌فرض true است.

allow_subscription: true | false

به کاربران اجازه می‌دهد مشترک رویدادهای اتاق شوند همان‌طور که در ../../developer/xmpp-clients-bots/extensions/muc-sub.md|Multi-User Chat Subscriptions توضیح داده شده است. مقدار پیش‌فرض false است.

allow_user_invites: true | false

به حاضران اجازه می‌دهد دعوت‌نامه ارسال کنند. مقدار پیش‌فرض false است.

allow_visitor_nickchange: true | false

به بازدیدکنندگان اجازه می‌دهد نام‌مستعار را تغییر دهند. مقدار پیش‌فرض true است.

allow_visitor_status: true | false

به بازدیدکنندگان اجازه می‌دهد متن وضعیت را در به‌روزرسانی‌های حضور ارسال کنند. اگر غیرمجاز باشد، متن وضعیت قبل از ارسال به‌روزرسانی حضور به تمام حاضران اتاق، حذف می‌شود. مقدار پیش‌فرض true است.

allow_voice_requests: true | false

به بازدیدکنندگان در اتاق‌های کنترل‌شده اجازه می‌دهد درخواست حق صحبت کنند. مقدار پیش‌فرض true است.

allowpm: anyone | participants | moderators | none

چه کسانی می‌توانند پیام خصوصی ارسال کنند. مقدار پیش‌فرض anyone است.

anonymous: true | false

اتاق ناشناس است: حاضران JID واقعی سایر حاضران را نمی‌بینند. توجه داشته باشید که مدیران اتاق همیشه می‌توانند JID واقعی حاضران را ببینند. مقدار پیش‌فرض true است.

captcha_protected: true | false

وقتی کاربری تلاش می‌کند به اتاقی بپیوندد که در آن هیچ وابستگی ندارد (نه مالک، نه مدیر و نه عضو)، اتاق از او می‌خواهد یک چالش CAPTCHA را تکمیل کند (به بخش basic.md#captcha|CAPTCHA مراجعه کنید) تا پیوستن وی به اتاق پذیرفته شود. مقدار پیش‌فرض false است.

description: Room Description

توضیح کوتاهی از اتاق. مقدار پیش‌فرض رشته خالی است.

enable_hats: true | false

توجه درباره این گزینه: در نسخه 25.10 بهبود یافت. اجازه می‌دهد نقش‌های گسترده‌ای که در XEP-0317: Hats تعریف شده‌اند، استفاده شوند. برای نسخه‌های ejabberd قدیمی‌تر از 25.10 به صفحه ../../tutorials/muc-hats.md|MUC Hats مراجعه کنید. مقدار پیش‌فرض true است.

lang: Language

زبان ترجیحی برای بحث‌های اتاق. فرمت زبان باید مطابق RFC 5646 باشد. هیچ مقدار پیش‌فرضی وجود ندارد.

logging: true | false

پیام‌های عمومی با استفاده از mod_muc_log ثبت می‌شوند. مقدار پیش‌فرض false است.

mam: true | false

بایگانی پیام را فعال می‌کند. مستلزم فعال بودن mod_mam است. مقدار پیش‌فرض false است.

max_users: Number

حداکثر تعداد حاضران در اتاق. مقدار پیش‌فرض 200 است.

members_by_default: true | false

حاضرانی که وارد اتاق می‌شوند به طور پیش‌فرض شرکت‌کننده هستند، بنابراین "حق صحبت" دارند. مقدار پیش‌فرض true است.

members_only: true | false

فقط اعضای اتاق می‌توانند وارد شوند. مقدار پیش‌فرض false است.

moderated: true | false

فقط حاضرانی که "حق صحبت" دارند می‌توانند پیام عمومی ارسال کنند. مقدار پیش‌فرض true است.

password: Password

رمز عبور اتاق. مستلزم تنظیم گزینه password_protected بر روی true است. هیچ مقدار پیش‌فرضی وجود ندارد.

password_protected: true | false

برای ورود به اتاق رمز عبور لازم است. مقدار پیش‌فرض false است.

persistent: true | false

اتاق حتی اگر آخرین شرکت‌کننده خارج شود باقی می‌ماند. مقدار پیش‌فرض false است.

presence_broadcast: [Role]

فهرست نقش‌هایی که حضورشان به همه اعلام می‌شود. فهرست می‌تواند یک یا چند مورد از موارد زیر را شامل شود: moderator, participant, visitor. مقدار پیش‌فرض در مثال زیر نشان داده شده است:

مثال:

presence_broadcast:
  - moderator
  - participant
  - visitor

public: true | false

اتاق در فهرست سرویس MUC عمومی است و قابل کشف است. مدیران MUC و شرکت‌کنندگان اتاق، اتاق‌های خصوصی را در کشف سرویس می‌بینند اگر کلاینت XMPP آن‌ها از این ویژگی پشتیبانی کند. مقدار پیش‌فرض true است.

public_list: true | false

فهرست شرکت‌کنندگان بدون نیاز به ورود به اتاق، عمومی است. مقدار پیش‌فرض true است.

pubsub: PubSub Node

URI از XMPP گره Publish/Subscribe مرتبط. مقدار پیش‌فرض رشته خالی است.

title: Room Title

عنوان قابل خواندن توسط انسان برای اتاق. هیچ مقدار پیش‌فرضی وجود ندارد.

vcard: vCard

یک vCard سفارشی برای اتاق. به گزینه معادل آن در mod_muc مراجعه کنید. مقدار پیش‌فرض رشته خالی است.

vcard_xupdate: undefined | external | AvatarHash

هش تصویر آواتار را تنظیم می‌کند. مقدار پیش‌فرض undefined است.

voice_request_min_interval: Number

حداقل فاصله بین درخواست‌های حق صحبت، بر حسب ثانیه. مقدار پیش‌فرض 1800 است.

hibernation_timeout: infinity | Seconds

مهلت زمانی قبل از به حالت خواب بردن فرآیند اتاق، بر حسب ثانیه. مقدار پیش‌فرض infinity است.

history_size: Size

یک تاریخچه کوچک از بحث جاری هنگامی که کاربران وارد اتاق می‌شوند برای آن‌ها ارسال می‌شود. با این گزینه می‌توانید تعداد پیام‌های تاریخچه‌ای که باید نگه‌داری و برای کاربرانی که به اتاق می‌پیوندند ارسال شود را تعریف کنید. این مقدار یک عدد صحیح غیرمنفی است. تنظیم مقدار به 0 ویژگی تاریخچه را غیرفعال می‌کند و در نتیجه هیچ چیزی در حافظه نگه‌داری نمی‌شود. مقدار پیش‌فرض 20 است. این مقدار بر تمام اتاق‌های سرویس تأثیر می‌گذارد. توجه: کلاینت‌های مدرن XMPP به بایگانی پیام (XEP-0313) متکی هستند، بنابراین اگر فقط از کلاینت‌های مدرن استفاده می‌کنید و ماژول mod_mam را بارگذاری کرده‌اید، می‌توانید آزادانه ویژگی تاریخچه را غیرفعال کنید.

host

منسوخ شده. به جای آن از hosts استفاده کنید.

hosts: [Host, ...]

این گزینه Jabber IDهای سرویس را تعریف می‌کند. اگر گزینه hosts مشخص نشود، تنها Jabber ID نام میزبان مجازی با پیشوند "conference." خواهد بود. کلیدواژه @HOST@ با نام واقعی میزبان مجازی جایگزین می‌شود.

max_captcha_whitelist: Number

توجه درباره این گزینه: در نسخه 21.01 اضافه شد. این گزینه حداکثر تعداد کاراکترهایی که Captcha Whitelist هنگام پیکربندی اتاق می‌تواند داشته باشد را تعریف می‌کند. مقدار پیش‌فرض infinity است.

max_password: Number

توجه درباره این گزینه: در نسخه 21.01 اضافه شد. این گزینه حداکثر تعداد کاراکترهایی که رمز عبور هنگام پیکربندی اتاق می‌تواند داشته باشد را تعریف می‌کند. مقدار پیش‌فرض infinity است.

max_room_desc: Number

این گزینه حداکثر تعداد کاراکترهایی که توضیحات اتاق هنگام پیکربندی اتاق می‌تواند داشته باشد را تعریف می‌کند. مقدار پیش‌فرض infinity است.

max_room_id: Number

این گزینه حداکثر تعداد کاراکترهایی که Room ID هنگام ایجاد اتاق جدید می‌تواند داشته باشد را تعریف می‌کند. مقدار پیش‌فرض infinity است.

max_room_name: Number

این گزینه حداکثر تعداد کاراکترهایی که نام اتاق هنگام پیکربندی اتاق می‌تواند داشته باشد را تعریف می‌کند. مقدار پیش‌فرض infinity است.

max_rooms_discoitems: Number

وقتی تعداد اتاق‌ها از این Number بیشتر باشد، فقط اتاق‌های غیرخالی در پرس‌وجوی کشف سرویس برگردانده می‌شوند. مقدار پیش‌فرض 100 است.

max_user_conferences: Number

این گزینه حداکثر تعداد اتاق‌هایی که هر کاربر می‌تواند به آن‌ها بپیوندد را تعریف می‌کند. مقدار پیش‌فرض 100 است. این گزینه برای جلوگیری از سوءاستفاده‌های احتمالی استفاده می‌شود. توجه داشته باشید که این یک محدودیت نرم است: برخی کاربران گاهی اوقات می‌توانند در پیکربندی‌های خوشه‌ای به کنفرانس‌های بیشتری بپیوندند.

max_users: Number

این گزینه در سطح سرویس، حداکثر تعداد کاربران مجاز در هر اتاق را تعریف می‌کند. می‌توان آن را در پیکربندی هر اتاق کاهش داد اما نمی‌توان در پیکربندی اتاق‌های منفرد افزایش داد. مقدار پیش‌فرض 200 است.

max_users_admin_threshold: Number

این گزینه تعداد مدیران سرویس یا مالکان اتاق مجاز به ورود به اتاق را وقتی که حداکثر تعداد حاضران مجاز رسیده است تعریف می‌کند. محدودیت پیش‌فرض 5 است.

max_users_presence: Number

این گزینه تعریف می‌کند که پس از چه تعداد کاربر در اتاق، اتاق شلوغ محسوب می‌شود. وقتی یک اتاق MUC شلوغ محسوب می‌شود، ارسال اعلان‌های حضور محدود می‌شود تا بار، ترافیک و "طوفان" بیش از حد حضور دریافتی توسط شرکت‌کنندگان کاهش یابد. مقدار پیش‌فرض 1000 است.

min_message_interval: Number

این گزینه حداقل فاصله بین دو پیام ارسال شده توسط یک حاضر را بر حسب ثانیه تعریف می‌کند. این گزینه سراسری است و برای تمام اتاق‌ها معتبر است. می‌توان از یک مقدار اعشاری استفاده کرد. وقتی این گزینه تعریف نشده باشد، نرخ پیام محدود نمی‌شود. این ویژگی می‌تواند برای محافظت از یک سرویس MUC در برابر سوءاستفاده حاضران و محدود کردن تعداد پیام‌هایی که توسط سرویس ارسال می‌شود استفاده شود. یک مقدار مناسب برای این حداقل فاصله پیام 0.4 ثانیه است. اگر یک حاضر سعی کند پیام‌ها را سریع‌تر ارسال کند، یک خطا ارسال می‌شود که توضیح می‌دهد پیام دور انداخته شده و دلیل غیرقابل قبول بودن پیام را شرح می‌دهد.

min_presence_interval: Number

این گزینه حداقل زمان بین تغییرات حضور از یک حاضر مشخص را بر حسب ثانیه تعریف می‌کند. این گزینه سراسری است و برای تمام اتاق‌ها معتبر است. می‌توان از یک مقدار اعشاری استفاده کرد. وقتی این گزینه تعریف نشده باشد، هیچ محدودیتی اعمال نمی‌شود. این گزینه می‌تواند برای محافظت از یک سرویس MUC در برابر سوءاستفاده حاضران استفاده شود. اگر یک حاضر سعی کند حضور خود را بیشتر از فاصله مشخص شده تغییر دهد، حضور توسط ejabberd کش می‌شود و فقط آخرین حضور پس از انقضای تأخیر فاصله به تمام حاضران اتاق ارسال می‌شود. بسته‌های حضور میانی بی‌سروصدا دور انداخته می‌شوند. یک مقدار مناسب برای این گزینه 4 ثانیه است.

name: string()

مقدار نام سرویس. این نام فقط در برخی کلاینت‌هایی که از XEP-0030: Service Discovery پشتیبانی می‌کنند قابل مشاهده است. مقدار پیش‌فرض Chatrooms است.

preload_rooms: true | false

آیا همه اتاق‌های ماندگار هنگام راه‌اندازی در حافظه بارگذاری شوند. اگر غیرفعال باشد، اتاق فقط در اولین پیوستن شرکت‌کننده بارگذاری می‌شود. مقدار پیش‌فرض true است. غیرفعال کردن پیش‌بارگذاری اتاق وقتی تعداد اتاق‌ها زیاد است منطقی است: این کار زمان راه‌اندازی سرور و مصرف حافظه را بهبود می‌دهد.

queue_type: ram | file

مانند گزینه سطح بالای queue_type ، اما فقط برای این ماژول اعمال می‌شود.

ram_db_type: mnesia | sql

مانند گزینه سطح بالای default_ram_db ، اما فقط برای این ماژول اعمال می‌شود.

regexp_room_id: string()

این گزینه عبارت منظم‌ای را تعریف می‌کند که Room ID باید برای اجازه ایجاد اتاق، آن را ارضا کند. مقدار پیش‌فرض رشته خالی است.

room_shaper: none | ShaperName

این گزینه شکل‌دهنده (shaper) برای اتاق‌های MUC را تعریف می‌کند. مقدار پیش‌فرض none است.

user_message_shaper: none | ShaperName

این گزینه شکل‌دهنده (shaper) برای پیام‌های کاربران را تعریف می‌کند. مقدار پیش‌فرض none است.

user_presence_shaper: none | ShaperName

این گزینه شکل‌دهنده (shaper) برای حضورهای کاربران را تعریف می‌کند. مقدار پیش‌فرض none است.

vcard: vCard

یک vCard سفارشی برای سرویس که توسط برخی کلاینت‌های XMPP در کشف سرویس نمایش داده خواهد شد. مقدار vCard یک نگاشت YAML است که از نمایش XML یک vCard ساخته شده است. از آنجا که نمایش هیچ خصیصه‌ای ندارد، نگاشت ساده است.

مثال:

# This XML representation of vCard:
#   <vCard xmlns='vcard-temp'>
#     <FN>Conferences</FN>
#     <ADR>
#       <WORK/>
#       <STREET>Elm Street</STREET>
#     </ADR>
#   </vCard>
#
# is translated to:
vcard:
  fn: Conferences
  adr:
    -
      work: true
      street: Elm Street

این ماژول دستوراتی برای مدیریت سرویس‌های MUC محلی و اتاق‌های MUC آن‌ها فراهم می‌کند. همچنین صفحات ساده WebAdmin برای مشاهده اتاق‌های موجود ارائه می‌دهد.

این ماژول به mod_muc وابسته است.

گزینه‌های موجود:

subscribe_room_many_max_users: Number

توجه درباره این گزینه: در نسخه 22.05 اضافه شده است. تعداد کاربرانی که می‌توانند به طور همزمان با استفاده از API subscribe_room_many در یک اتاق مشترک شوند. مقدار پیش‌فرض 50 است.

برچسب‌های API: ../../developer/ejabberd-api/admin-tags.md#muc|muc, ../../developer/ejabberd-api/admin-tags.md#muc_room|muc_room, ../../developer/ejabberd-api/admin-tags.md#muc_sub|muc_sub

این ماژول ثبت اختیاری مکالمات عمومی Multi-User Chat (MUC) در قالب HTML را فعال می‌کند. پس از فعال‌سازی این ماژول، کاربران می‌توانند با استفاده از یک کلاینت XMPP با قابلیت MUC به اتاق بپیوندند و در صورت داشتن دسترسی‌های لازم، می‌توانند فرم پیکربندی را درخواست کنند که در آن می‌توانند گزینه فعال‌سازی ثبت اتاق را تنظیم کنند.

ویژگی‌ها:

•جزئیات اتاق در بالای هر صفحه نمایش داده می‌شود: عنوان اتاق، JID، نویسنده، موضوع و پیکربندی.
•JID اتاق در HTML تولید شده پیوندی برای پیوستن به اتاق است (با استفاده از XMPP URI).
•تغییرات موضوع و پیکربندی اتاق ردیابی و نمایش داده می‌شوند.
•پیوستن‌ها، خروج‌ها، تغییر نام مستعار، اخراج‌ها، مسدودسازی‌ها و /me ردیابی و نمایش داده می‌شوند، از جمله دلیل آن‌ها در صورت وجود.
•فایل‌های HTML تولید شده با XHTML 1.0 Transitional و CSS سازگار هستند.
•برچسب‌های زمانی پیوندهای خود-ارجاعی هستند.
•پیوندهایی در بالا برای ناوبری سریع‌تر: روز قبل، روز بعد، بالا.
•CSS برای تعریف سبک استفاده می‌شود و می‌توان از یک فایل CSS سفارشی استفاده کرد.
•URLها در پیام‌ها و موضوعات به لینک‌های قابل کلیک تبدیل می‌شوند.
•منطقه زمانی استفاده شده در برچسب‌های زمانی در فایل‌های ثبت نمایش داده می‌شود.
•می‌توان یک پیوند سفارشی در بالای هر صفحه اضافه کرد.

این ماژول به mod_muc وابسته است.

گزینه‌های موجود:

access_log: AccessName

این گزینه مشخص می‌کند که کدام کاربران اتاق مجاز به فعال یا غیرفعال کردن ثبت اتاق هستند. مقدار پیش‌فرض muc_admin است. توجه: برای این تنظیم پیش‌فرض باید یک قانون دسترسی برای muc_admin تعریف کرده باشید تا اثرگذار باشد.

cssfile: Path | URL

با این گزینه می‌توانید تعیین کنید که فایل‌های HTML باید از یک فایل CSS سفارشی استفاده کنند یا از CSS توکار. مقادیر مجاز یا Path به فایل محلی یا یک URL به فایل راه دور هستند. به طور پیش‌فرض یک CSS از پیش تعریف شده در صفحه HTML تعبیه می‌شود.

dirname: room_jid | room_name

نام دایرکتوری اتاق را پیکربندی می‌کند. اگر روی room_jid تنظیم شود، نام دایرکتوری اتاق، JID کامل اتاق خواهد بود. در غیر این صورت، نام دایرکتوری اتاق فقط نام اتاق خواهد بود و نام سرویس MUC در آن درج نمی‌شود. مقدار پیش‌فرض room_jid است.

dirtype: subdirs | plain

نوع دایرکتوری‌های ایجاد شده را می‌توان با این گزینه مشخص کرد. اگر روی subdirs تنظیم شود، برای هر سال و ماه زیردایرکتوری‌هایی ایجاد می‌شوند. در غیر این صورت، نام‌های فایل‌های ثبت شامل تاریخ کامل هستند و زیردایرکتوری وجود ندارد. مقدار پیش‌فرض subdirs است.

file_format: html | plaintext

قالب فایل‌های ثبت را تعریف می‌کند: html در قالب HTML ذخیره می‌کند، plaintext در قالب متن ساده ذخیره می‌کند. مقدار پیش‌فرض html است.

file_permissions: {mode: Mode, group: Group}

مجوزهایی که هنگام ایجاد فایل‌های ثبت باید استفاده شوند را تعریف می‌کند: عدد حالت، و شناسه عددی گروهی که مالک فایل‌ها خواهد بود. مقدار پیش‌فرض در مثال زیر نشان داده شده است:

مثال:

file_permissions:
  mode: 644
  group: 33

outdir: Path

این گزینه مسیر کامل دایرکتوری‌ای را که فایل‌های HTML باید در آن ذخیره شوند تنظیم می‌کند. مطمئن شوید که کاربر daemon ejabberd دسترسی نوشتن به آن دایرکتوری را دارد. مقدار پیش‌فرض www/muc است.

spam_prevention: true | false

اگر روی true تنظیم شود، یک ویژگی خاص به لینک‌ها اضافه می‌شود که از ایندکس شدن آن‌ها توسط موتورهای جستجو جلوگیری می‌کند. مقدار پیش‌فرض true است، به این معنی که ویژگی‌های nofollow به لینک‌های ارسال شده توسط کاربر اضافه خواهند شد.

timezone: local | universal

منطقه زمانی برای ثبت‌ها با این گزینه قابل پیکربندی است. اگر روی local تنظیم شود، زمان محلی که سیستم‌عامل به موتور Erlang گزارش می‌دهد استفاده خواهد شد. در غیر این صورت، زمان UTC استفاده می‌شود. مقدار پیش‌فرض local است.

top_link: {URL: Text}

با این گزینه می‌توانید پیوند گوشه بالا سمت راست هر فایل ثبت را سفارشی کنید. مقدار پیش‌فرض در مثال زیر نشان داده شده است:

مثال:

top_link:
  /: Home

url: URL

یک URL سطح بالا که کلاینت می‌تواند از طریق آن به ثبت‌های یک کنفرانس خاص دسترسی داشته باشد. اگر گزینه dirname روی room_name تنظیم شده باشد، نام کنفرانس به URL الحاق می‌شود، در غیر این صورت JID کنفرانس به URL الحاق می‌شود. مقدار پیش‌فرضی وجود ندارد.

توجه درباره این ماژول: در نسخه 23.04 اضافه شده است.

این ماژول لیست‌های مسدودسازی بلادرنگ (Real-time blocklists) را برای اتاق‌های MUC پیاده‌سازی می‌کند.

با مشاهده گره pubsub راه دور مطابق با مشخصات توصیف شده در https://xmppbl.org کار می‌کند.

گزینه‌های موجود:

rtbl_node: PubsubNodeName

نام گره pubsub که باید برای ردیابی کاربران مسدود شده استفاده شود. مقدار پیش‌فرض muc_bans_sha256 است.

rtbl_server: Domain

دامنه سرور XMPP که لیست مسدودسازی را ارائه می‌دهد. مقدار پیش‌فرض xmppbl.org است.

این ماژول یک سرویس برای XEP-0033: Extended Stanza Addressing پیاده‌سازی می‌کند.

گزینه‌های موجود:

access: Access

قانون دسترسی برای محدود کردن اینکه چه کسانی می‌توانند بسته‌ها را به سرویس multicast ارسال کنند. مقدار پیش‌فرض: all.

host

منسوخ شده. به جای آن از hosts استفاده کنید.

hosts: [Host, ...]

این گزینه Jabber IDهای سرویس را تعریف می‌کند. اگر گزینه hosts مشخص نشده باشد، تنها Jabber ID نام میزبان vhost مجازی با پیشوند "multicast." خواهد بود. کلیدواژه @HOST@ با نام واقعی vhost مجازی جایگزین می‌شود. لطفاً توجه داشته باشید: این ماژول فقط از اولین vhost تعریف شده در این گزینه استفاده می‌کند.

limits: Sender: Stanza: Number

فهرستی از محدودیت‌های سفارشی را مشخص می‌کند که محدودیت‌های پیش‌فرض تعریف شده در XEP-0033 را بازنویسی می‌کنند. محدودیت‌ها بر اساس نوع فرستنده و نوع stanza تعریف می‌شوند، که در آن:
•sender می‌تواند باشد: local یا remote.
•stanza می‌تواند باشد: message یا presence.
•number می‌تواند یک عدد صحیح مثبت یا infinite باشد.

مثال:

# Default values:
local:
  message: 100
  presence: 100
remote:
  message: 20
  presence: 20

name

نام سرویس برای ارائه در پرسش Info به کشف سرویس (Service Discovery). پیش‌فرض "Multicast" است.

vcard

عنصر vCard برای بازگشت هنگام پرسش. مقدار پیش‌فرض undefined است.

مثال:

# Only admins can send packets to multicast service
access_rules:
  multicast:
    - allow: admin
# If you want to allow all your users:
access_rules:
  multicast:
    - allow
# This allows both admins and remote users to send packets,
# but does not allow local users
acl:
  allservers:
    server_glob: "*"
access_rules:
  multicast:
    - allow: admin
    - deny: local
    - allow: allservers
modules:
  mod_multicast:
     host: multicast.example.org
     access: multicast
     limits:
       local:
         message: 40
         presence: infinite
       remote:
         message: 150

این ماژول پیاده‌سازی XEP-0160: بهترین روش‌ها برای مدیریت پیام‌های آفلاین و XEP-0013: بازیابی انعطاف‌پذیر پیام‌های آفلاین را فراهم می‌کند. این بدان معناست که تمام پیام‌های ارسالی به کاربر آفلاین تا زمانی که آن کاربر دوباره آنلاین شود در کارگزار ذخیره خواهند شد. بنابراین بسیار شبیه به نحوه کارکرد ایمیل است. یک کاربر آفلاین در نظر گرفته می‌شود اگر هیچ نشستی با اولویت presence بزرگ‌تر از ۰ در حال حاضر باز نباشد.

API delete_expired_messages امکان حذف پیام‌های منقضی شده را می‌دهد، و API delete_old_messages پیام‌های قدیمی‌تر را حذف می‌کند.

گزینه‌های موجود:

access_max_user_messages: AccessName

این گزینه تعریف می‌کند که کدام قانون دسترسی برای محدود کردن حداکثر تعداد پیام‌های آفلاینی که یک کاربر می‌تواند داشته باشد (سهمیه) اعمال خواهد شد. هنگامی که کاربر پیام‌های آفلاین بیش از حد دارد، هر پیام جدیدی که دریافت می‌کند دور انداخته می‌شود و خطای <resource-constraint/> به فرستنده بازگردانده می‌شود. مقدار پیش‌فرض max_user_offline_messages است.

bounce_groupchat: true | false

این گزینه برای غیرفعال کردن یک بهینه‌سازی استفاده می‌شود که از بازگرداندن پیام‌های خطا هنگامی که پیام‌های گروهی نمی‌توانند به صورت آفلاین ذخیره شوند جلوگیری می‌کند. این بار اتاق گفتگو را بدون هیچ اشکالی در موارد استفاده استاندارد کاهش می‌دهد. مقدار پیش‌فرض را فقط در صورتی تغییر دهید که یک ماژول سفارشی داشته باشید که از قلاب آفلاین پس از mod_offline استفاده می‌کند. این گزینه می‌تواند هم برای MUC استاندارد و هم برای MucSub مفید باشد، اما احتمال وقوع bounce در زمینه MucSub بسیار بیشتر است، بنابراین فعال کردن آن در سرویس‌های بزرگ MucSub اهمیت بیشتری دارد. مقدار پیش‌فرض false است، به این معنا که بهینه‌سازی فعال است.

cache_life_time: timeout()

مانند گزینه سطح بالای cache_life_time است، اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

مانند گزینه سطح بالای cache_size است، اما فقط برای این ماژول اعمال می‌شود.

db_type: mnesia | sql

مانند گزینه سطح بالای default_db است، اما فقط برای این ماژول اعمال می‌شود.

store_empty_body: true | false | unless_chat_state

آیا پیام‌هایی که فاقد عنصر <body/> هستند ذخیره شوند یا خیر. مقدار پیش‌فرض unless_chat_state است، که به ejabberd می‌گوید پیام‌ها را حتی اگر فاقد عنصر <body/> باشند ذخیره کند، مگر اینکه فقط شامل یک اعلان وضعیت گفتگو باشند (همانطور که در XEP-0085: اعلان‌های وضعیت گفتگو تعریف شده است).

store_groupchat: true | false

آیا پیام‌های گروهی ذخیره شوند یا خیر. مقدار پیش‌فرض false است.

use_cache: true | false

مانند گزینه سطح بالای use_cache است، اما فقط برای این ماژول اعمال می‌شود.

use_mam_for_storage: true | false

این یک گزینه آزمایشی است. با فعال کردن این گزینه، این ماژول از جدول archive از mod_mam به جای جدول spool خود برای بازیابی پیام‌های دریافتی در زمانی که کاربر آفلاین بود استفاده می‌کند. این به توسعه‌دهندگان کلاینت اجازه می‌دهد تا به تدریج XEP-0160 را کنار بگذارند و به جای آن به XEP-0313 تکیه کنند. همچنین فضای ذخیره‌سازی مورد نیاز را هنگام فعال کردن MucSub بیشتر کاهش می‌دهد. فعال کردن این گزینه در حال حاضر یک اشکال شناخته‌شده دارد: اکثر پرسش‌های بازیابی انعطاف‌پذیر پیام کار نمی‌کنند (آن‌هایی که امکان بازیابی/حذف پیام‌ها بر اساس شناسه را می‌دهند)، اما این مشخصه به طور گسترده استفاده نمی‌شود. مقدار پیش‌فرض false است تا رفتار قبلی به عنوان پیش‌فرض حفظ شود.

مثال‌ها:

این مثال به کاربران قدرتمند اجازه می‌دهد تا ۵۰۰۰ پیام آفلاین، به مدیران تا ۲۰۰۰، و به سایر کاربران تا ۱۰۰ پیام داشته باشند:

acl:
  admin:
    user:
      - admin1@localhost
      - admin2@example.org
  poweruser:
    user:
      - bob@example.org
      - jane@example.org
shaper_rules:
  max_user_offline_messages:
    - 5000: poweruser
    - 2000: admin
    - 100
modules:
  ...
  mod_offline:
    access_max_user_messages: max_user_offline_messages
  ...

تگ‌های API: ../../developer/ejabberd-api/admin-tags.md#offline|offline

این ماژول پشتیبانی از XEP-0199: XMPP Ping و keepalive‌های دوره‌ای را پیاده‌سازی می‌کند. هنگامی که این ماژول فعال است، ejabberd به درستی به درخواست‌های ping پاسخ می‌دهد، همانطور که در پروتکل تعریف شده است.

گزینه‌های موجود:

ping_ack_timeout: timeout()

چه مدت باید صبر کرد قبل از اینکه تشخیص داده شود که یک کلاینت به یک درخواست ping کارگزار پاسخ نداده است. توجه: هنگامی که mod_stream_mgmt بارگذاری شده و مدیریت جریان توسط کلاینت فعال شده باشد، این مقدار نادیده گرفته می‌شود و به جای آن ack_timeout اعمال می‌شود. مقدار پیش‌فرض undefined است.

ping_interval: timeout()

هر چند وقت یک‌بار ping به کلاینت‌های متصل ارسال شود، در صورتی که گزینه send_pings روی true تنظیم شده باشد. اگر اتصال یک کلاینت در این بازه زمانی هیچ stanza ای ارسال یا دریافت نکند، یک درخواست ping به کلاینت ارسال می‌شود. مقدار پیش‌فرض ۱ دقیقه است.

send_pings: true | false

اگر این گزینه روی true تنظیم شود، کارگزار به کلاینت‌های متصلی که در بازه زمانی تعریف شده در گزینه ping_interval فعال نیستند، ping ارسال می‌کند. این برای زنده نگه داشتن اتصالات کلاینت یا بررسی دسترس‌پذیری مفید است. مقدار پیش‌فرض false است.

timeout_action: none | kill

هنگامی که یک کلاینت در مدت زمان کمتر از دوره تعریف شده در گزینه ping_ack_timeout به درخواست ping کارگزار پاسخ نمی‌دهد چه اقدامی انجام شود: kill به معنای از بین بردن اتصال زیرین است، none به معنای انجام هیچ کاری نیست. توجه: هنگامی که mod_stream_mgmt بارگذاری شده و مدیریت جریان توسط کلاینت فعال شده باشد، کشتن اتصال کلاینت به معنای کشتن نشست کلاینت نیست - نشست برای دادن فرصت به کلاینت جهت از سرگیری آن زنده نگه داشته می‌شود. مقدار پیش‌فرض none است.

مثال:

modules:
  mod_ping:
    send_pings: true
    ping_interval: 4 min
    timeout_action: kill

این ماژول سیل/هرزنامه در ترافیک اشتراک‌های presence را تشخیص می‌دهد. اگر یک کاربر در یک بازه زمانی مشخص بیش از حد مجاز از این stanza‌ها ارسال یا دریافت کند، stanza‌های اضافی بی‌صدا دور انداخته می‌شوند و یک هشدار در گزارش ثبت می‌شود.

گزینه‌های موجود:

count: Number

تعداد stanza‌های presence اشتراک (subscribe، unsubscribe، subscribed، unsubscribed) مجاز برای هر جهت (ورودی یا خروجی) در مدت زمان تعریف شده در گزینه interval. لطفاً توجه داشته باشید که دو کاربر که به یکدیگر اشتراک می‌زنند معمولاً ۴ stanza تولید می‌کنند، بنابراین مقدار توصیه شده ۴ یا بیشتر است. مقدار پیش‌فرض ۵ است.

interval: timeout()

بازه زمانی. مقدار پیش‌فرض ۱ دقیقه است.

مثال:

modules:
  mod_pres_counter:
    count: 5
    interval: 30 secs

این ماژول پیاده‌سازی XEP-0016: Privacy Lists است.


توجه

امروزه کلاینت‌های مدرن XMPP به XEP-0191: Blocking Command متکی هستند که توسط mod_blocking پیاده‌سازی شده است. با این حال، برای اینکه mod_blocking کار کند، همچنان باید mod_privacy بارگذاری شده باشد.

گزینه‌های موجود:

cache_life_time: timeout()

همانند گزینه سطح بالای cache_life_time اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

همانند گزینه سطح بالای cache_missed اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

همانند گزینه سطح بالای cache_size اما فقط برای این ماژول اعمال می‌شود.

db_type: mnesia | sql

همانند گزینه سطح بالای default_db اما فقط برای این ماژول اعمال می‌شود.

use_cache: true | false

همانند گزینه سطح بالای use_cache اما فقط برای این ماژول اعمال می‌شود.

این ماژول پشتیبانی از XEP-0049: Private XML Storage را اضافه می‌کند.

با استفاده از این روش، موجودیت‌های XMPP می‌توانند داده‌های خصوصی را روی سرور ذخیره کنند، هر زمان که لازم بود آن‌ها را بازیابی کنند و بین چندین کلاینت متصل یک کاربر به اشتراک بگذارند. داده‌های ذخیره‌شده می‌توانند هر چیزی باشند، تا زمانی که XML معتبر باشند. یک کاربرد رایج، ذخیره نشانک‌های کنفرانس‌های کاربر است (XEP-0048: Bookmarks).

همچنین تبدیل نشانک‌های توصیف‌شده در XEP-0402: PEP Native Bookmarks را پیاده‌سازی می‌کند، به API bookmarks_to_pep مراجعه کنید.

گزینه‌های موجود:

cache_life_time: timeout()

همانند گزینه سطح بالای cache_life_time اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

همانند گزینه سطح بالای cache_missed اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

همانند گزینه سطح بالای cache_size اما فقط برای این ماژول اعمال می‌شود.

db_type: mnesia | sql

همانند گزینه سطح بالای default_db اما فقط برای این ماژول اعمال می‌شود.

use_cache: true | false

همانند گزینه سطح بالای use_cache اما فقط برای این ماژول اعمال می‌شود.

API Tags: ../../developer/ejabberd-api/admin-tags.md#private|private

توجه درباره این گزینه: در نسخه 24.10 بهبود یافته است.

این ماژول پیاده‌سازی XEP-0356: Privileged Entity است. این افزونه به کامپوننت‌ها امکان می‌دهد دسترسی ممتاز به داده‌های موجودیت‌های دیگر داشته باشند (ارسال پیام از طرف سرور یا از طرف کاربر، دریافت/تنظیم لیست مخاطبین کاربر، دسترسی به اطلاعات حضور و غیره). این ویژگی ممکن است برای نوشتن کامپوننت‌های خارجی قدرتمند مورد استفاده قرار گیرد، مانند پیاده‌سازی یک سرویس PEP یا MAM خارجی.

به طور پیش‌فرض یک کامپوننت هیچ دسترسی ممتازی ندارد. شایان ذکر است که مجوزها به کامپوننت دسترسی به یک نوع داده خاص برای تمام کاربران هاست مجازی‌ای که mod_privilege روی آن بارگذاری شده است را می‌دهند.

مطمئن شوید که یک شنونده برای اتصال کامپوننت پیکربندی کرده‌اید. برای اطلاعات بیشتر بخش مربوط به پورت‌های شنونده را بررسی کنید.


هشدار

مسئله امنیتی: دسترسی ممتاز به کامپوننت‌ها دسترسی به داده‌های حساس می‌دهد، بنابراین مجوزها باید با احتیاط و تنها در صورت اعتماد به کامپوننت اعطا شوند.


توجه

این ماژول مکمل mod_delegation است، اما می‌تواند به تنهایی نیز استفاده شود.

گزینه‌های موجود:

iq: {Namespace: Options}

این گزینه فضاهای نام و مجوزهای IQ آن‌ها را تعریف می‌کند. به طور پیش‌فرض هیچ مجوزی داده نمی‌شود. Options عبارتند از:

both: AccessName

اجازه ارسال استانزاهای IQ از نوع get و set را می‌دهد. مقدار پیش‌فرض none است.

get: AccessName

اجازه ارسال استانزاهای IQ از نوع get را می‌دهد. مقدار پیش‌فرض none است.

set: AccessName

اجازه ارسال استانزاهای IQ از نوع set را می‌دهد. مقدار پیش‌فرض none است.

message: Options

این گزینه مجوزهای پیام‌ها را تعریف می‌کند. به طور پیش‌فرض هیچ مجوزی داده نمی‌شود. Options عبارتند از:

outgoing: AccessName

این گزینه یک قانون دسترسی برای ارسال پیام‌های خروجی توسط کامپوننت تعریف می‌کند. مقدار پیش‌فرض none است.

presence: Options

این گزینه مجوزهای حضور را تعریف می‌کند. به طور پیش‌فرض هیچ مجوزی داده نمی‌شود. Options عبارتند از:

managed_entity: AccessName

یک قانون دسترسی که به کامپوننت مجوز دریافت حضورهای سرور را می‌دهد. مقدار پیش‌فرض none است.

roster: AccessName

یک قانون دسترسی که به کامپوننت مجوز دریافت حضور هر دو گروه کاربران و مخاطبین موجود در لیست مخاطبین آن‌ها را می‌دهد. مقدار پیش‌فرض none است.

roster: Options

این گزینه مجوزهای لیست مخاطبین را تعریف می‌کند. به طور پیش‌فرض هیچ مجوزی داده نمی‌شود. Options عبارتند از:

both: AccessName

دسترسی خواندن/نوشتن به لیست مخاطبین کاربر را تنظیم می‌کند. مقدار پیش‌فرض none است.

get: AccessName

دسترسی خواندن به لیست مخاطبین کاربر را تنظیم می‌کند. مقدار پیش‌فرض none است.

set: AccessName

دسترسی نوشتن به لیست مخاطبین کاربر را تنظیم می‌کند. مقدار پیش‌فرض none است.

مثال:

modules:
  mod_privilege:
    iq:
      http://jabber.org/protocol/pubsub:
        get: all
    roster:
      get: all
    presence:
      managed_entity: all
    message:
      outgoing: all

توجه درباره این گزینه: در نسخه 25.08 اضافه شده است.

این ماژول فایل‌های JSON provider API نسخه v2 را همان‌طور که توسط XMPP Providers توصیف شده، ارائه می‌دهد.

این ماژول تلاش می‌کند برخی خصوصیات را با جمع‌آوری مقادیر به صورت خودکار از پیکربندی موجود ejabberd شما پر کند. ماژول را فعال کنید، مقادیر نمایش داده‌شده را بررسی کنید و سپس با استفاده از گزینه‌ها سفارشی‌سازی کنید.

برای استفاده از این ماژول، علاوه بر افزودن آن به بخش modules، باید آن را در listen → ejabberd_http → listen-options.md#request_handlers|request_handlers نیز فعال کنید. توجه داشته باشید که باید در listen.md#ejabberd_http|ejabberd_http گزینه listen-options.md#tls|tls را فعال کنید.

گزینه‌های موجود:

alternativeJids: [string()]

فهرستی از JIDها (دامنه‌های سرور XMPP) که یک ارائه‌دهنده برای ثبت‌نام علاوه بر JID اصلی خود ارائه می‌دهد. مقدار پیش‌فرض [] است.

busFactor: integer()

ضریب اتوبوس سرویس XMPP (یعنی حداقل تعداد اعضای تیمی که سرویس نمی‌تواند از دست دادن آن‌ها را تحمل کند) یا -1 برای نامشخص. مقدار پیش‌فرض -1 است.

freeOfCharge: true | false

آیا سرویس XMPP می‌تواند به صورت رایگان استفاده شود. مقدار پیش‌فرض false است.

languages: [string()]

فهرست کدهای زبانی که صفحات شما در آن‌ها در دسترس هستند. برخی گزینه‌ها URLی تعریف می‌کنند که در آن کلیدواژه @LANGUAGE_URL@ با هر یک از آن کدهای زبانی جایگزین می‌شود. مقدار پیش‌فرض یک فهرست با زبان تنظیم‌شده در گزینه language است، برای مثال: [en].

legalNotice: string()

صفحه وب اطلاعیه حقوقی (به ازای هر زبان). کلیدواژه @LANGUAGE_URL@ با هر زبان جایگزین می‌شود. مقدار پیش‌فرض "" است.

maximumHttpFileUploadStorageTime: integer()

حداکثر مدت ذخیره‌سازی هر فایل به اشتراک‌گذاشته‌شده (عدد به روز، 0 برای بدون محدودیت یا -1 برای کمتر از ۱ روز). مقدار پیش‌فرض همانند گزینه max_days از ماژول mod_http_upload_quota است، یا در غیر این صورت 0.

maximumHttpFileUploadTotalSize: integer()

حداکثر اندازه کل فایل‌های به اشتراک‌گذاشته‌شده برای هر کاربر (عدد به مگابایت (MB)، 0 برای بدون محدودیت یا -1 برای کمتر از ۱ MB). توجه: از MB به جای MiB استفاده می‌شود (مثلاً 104,857,600 بایت = 100 MiB ≈ 104 MB). این خصوصیت درباره حداکثر اندازه هر فایل به اشتراک‌گذاشته‌شده نیست، که از طریق XMPP بازیابی می‌شود. مقدار پیش‌فرض مقدار shaper گزینه access_hard_quota از ماژول mod_http_upload_quota است، یا در غیر این صورت 0.

maximumMessageArchiveManagementStorageTime: integer()

حداکثر مدت ذخیره‌سازی هر پیام مبادله‌شده (عدد به روز، 0 برای بدون محدودیت یا -1 برای کمتر از ۱ روز). مقدار پیش‌فرض 0 است.

organization: string()

نوع سازمان ارائه‌دهنده سرویس XMPP. مقادیر مجاز عبارتند از: company، "commercial person"، "private person"، governmental، "non-governmental" یا "". مقدار پیش‌فرض "" است.

passwordReset: string()

صفحه وب بازنشانی رمز عبور (به ازای هر زبان) که برای بازنشانی خودکار رمز عبور (مثلاً از طریق ایمیل) یا توضیح نحوه بازنشانی دستی رمز عبور (مثلاً با تماس با ارائه‌دهنده) استفاده می‌شود. کلیدواژه @LANGUAGE_URL@ با هر زبان جایگزین می‌شود. مقدار پیش‌فرض یک URL است که در صورت پیکربندی mod_register_web به عنوان request_handler به صورت خودکار ساخته می‌شود، یا در غیر این صورت "".

professionalHosting: true | false

آیا سرور XMPP با سرعت اتصال اینترنت خوب، منبع تغذیه بدون وقفه، حفاظت از دسترسی و پشتیبان‌گیری منظم میزبانی می‌شود. مقدار پیش‌فرض false است.

serverLocations: [string()]

فهرست کدهای زبانی مکان‌های سرور/پشتیبان. مقدار پیش‌فرض یک فهرست خالی است: [].

serverTesting: true | false

آیا آزمایش‌ها روی سرور ارائه‌دهنده مجاز هستند (مثلاً بررسی گواهی‌نامه و نظارت بر زمان فعال بودن). مقدار پیش‌فرض false است.

since: string()

تاریخی که سرویس XMPP از آن در دسترس است. مقدار پیش‌فرض یک رشته خالی است: "".

website: string()

وب‌سایت ارائه‌دهنده. کلیدواژه @LANGUAGE_URL@ با هر زبان جایگزین می‌شود. مقدار پیش‌فرض "" است.

مثال:

listen:
  -
    port: 443
    module: ejabberd_http
    tls: true
    request_handlers:
      /.well-known/xmpp-provider-v2.json: mod_providers
modules:
  mod_providers:
    alternativeJids: ["example1.com", "example2.com"]
    busFactor: 1
    freeOfCharge: true
    languages: [ag, ao, bg, en]
    legalNotice: "http://@HOST@/legal/@LANGUAGE_URL@"
    maximumHttpFileUploadStorageTime: 0
    maximumHttpFileUploadTotalSize: 0
    maximumMessageArchiveManagementStorageTime: 0
    organization: "non-governmental"
    passwordReset: "http://@HOST@/reset/@LANGUAGE_URL@"
    professionalHosting: true
    serverLocations: [ao, bg]
    serverTesting: true
    since: "2025-12-31"
    website: "http://@HOST@/website/@LANGUAGE_URL@"

این ماژول XEP-0065: SOCKS5 Bytestreams را پیاده‌سازی می‌کند. این ماژول به ejabberd اجازه می‌دهد به عنوان یک پروکسی انتقال فایل بین دو کلاینت XMPP عمل کند.

گزینه‌های موجود:

access: AccessName

یک قانون دسترسی برای آغازکنندگان انتقال فایل تعریف می‌کند. مقدار پیش‌فرض all است. ممکن است بخواهید دسترسی را فقط به کاربران سرور خود محدود کنید تا از سوء استفاده از پروکسی توسط کاربران سرورهای راه دور جلوگیری شود.

append_module_config: {ProxyHost: Options}

توجه درباره این گزینه: در نسخه 25.xx اضافه شده است. چند گزینه خاص به یک میزبان آپلود مشخص که قبلاً در گزینه hosts ماژول mod_proxy65 تعریف شده است اضافه می‌کند. در حال حاضر فقط name و vcard می‌توانند اینجا تعریف شوند. این مشابه گزینه سطح بالای append_host_config است، اما در این مورد به گزینه‌های این ماژول اعمال می‌شود.

مثال:

modules:
  mod_proxy65:
    hosts:
      - service1.@HOST@
      - service2.@HOST@
    name: "Service General"
    append_module_config:
      service1.localhost:
        name: "Service 1"
      service2.example.net:
        name: "Service 2"

auth_type: anonymous | plain

نوع احراز هویت SOCKS5. مقدار پیش‌فرض anonymous است. اگر روی plain تنظیم شود، ejabberd از پشتیبان احراز هویت مانند SASL PLAIN استفاده خواهد کرد.

host

منسوخ شده. به جای آن از hosts استفاده کنید.

hostname: Host

یک نام میزبان که هنگام برقراری ارتباط با کلاینت‌ها توسط پروکسی ارائه می‌شود را تعریف می‌کند. این گزینه زمانی مفید است که پروکسی را پشت NAT اجرا می‌کنید. کلمه کلیدی @HOST@ با نام میزبان مجازی جایگزین می‌شود. پیش‌فرض استفاده از مقدار گزینه ip است. مثال‌ها: proxy.mydomain.org, 200.150.100.50.

hosts: [Host, ...]

این گزینه شناسه‌های Jabber سرویس را تعریف می‌کند. اگر گزینه hosts مشخص نشده باشد، تنها شناسه Jabber، نام میزبان مجازی با پیشوند "proxy." خواهد بود. کلمه کلیدی @HOST@ با نام واقعی میزبان مجازی جایگزین می‌شود.

ip: IPAddress

این گزینه مشخص می‌کند که کدام رابط شبکه برای گوش دادن استفاده شود. مقدار پیش‌فرض آدرس IP نام DNS سرویس است، یا در صورت شکست، 127.0.0.1.

max_connections: pos_integer() | infinity

حداکثر تعداد اتصالات فعال به ازای هر آغازکننده انتقال فایل. مقدار پیش‌فرض infinity است.

name: Name

مقدار نام سرویس. این نام فقط در برخی کلاینت‌هایی که از XEP-0030: Service Discovery پشتیبانی می‌کنند قابل مشاهده است. پیش‌فرض "SOCKS5 Bytestreams" است.

port: 1..65535

شماره پورت برای گوش دادن به اتصالات ورودی. مقدار پیش‌فرض 7777 است.

ram_db_type: mnesia | redis | sql

مانند گزینه سطح بالای default_ram_db ، اما فقط برای این ماژول اعمال می‌شود.

recbuf: Size

اندازه بافر برای بسته‌های ورودی. اگر یک shaper تعریف می‌کنید، مقدار این گزینه را برابر اندازه shaper تنظیم کنید تا از افزایش ناگهانی ترافیک در انتقال فایل جلوگیری شود. مقدار پیش‌فرض 65536 بایت است.

shaper: Shaper

این گزینه یک shaper برای همتایان انتقال فایل تعریف می‌کند. shaper با حداکثر پهنای باند انتخاب خواهد شد. پیش‌فرض none است، یعنی بدون shaper.

sndbuf: Size

اندازه بافر برای بسته‌های خروجی. اگر یک shaper تعریف می‌کنید، مقدار این گزینه را برابر اندازه shaper تنظیم کنید تا از افزایش ناگهانی ترافیک در انتقال فایل جلوگیری شود. مقدار پیش‌فرض 65536 بایت است.

vcard: vCard

یک vCard سفارشی برای سرویس که توسط برخی کلاینت‌های XMPP در Service Discovery نمایش داده می‌شود. مقدار vCard یک نگاشت YAML است که از نمایش XML vCard ساخته شده است. از آنجا که این نمایش فاقد ویژگی است، نگاشت ساده است.

مثال:

acl:
  admin:
    user: admin@example.org
  proxy_users:
    server: example.org
access_rules:
  proxy65_access:
    allow: proxy_users
shaper_rules:
  proxy65_shaper:
    none: admin
  proxyrate: proxy_users
shaper:
  proxyrate: 10240
modules:
  mod_proxy65:
    host: proxy1.example.org
    name: "File Transfer Proxy"
    ip: 200.150.100.1
    port: 7778
    max_connections: 5
    access: proxy65_access
    shaper: proxy65_shaper
    recbuf: 10240
    sndbuf: 10240

این ماژول سرویسی برای XEP-0060: Publish-Subscribe ارائه می‌دهد. قابلیت‌های mod_pubsub می‌توانند با استفاده از افزونه‌ها گسترش یابند. افزونه‌ای که PEP (XEP-0163: Personal Eventing via Pubsub) را پیاده‌سازی می‌کند در فایل پیکربندی پیش‌فرض ejabberd فعال است و به mod_caps نیاز دارد.

گزینه‌های موجود:

access_createnode: AccessName

این گزینه محدود می‌کند که کدام کاربران مجاز به ایجاد گره‌های pubsub با استفاده از acl و access هستند. به طور پیش‌فرض هر حساب کاربری در سرور محلی ejabberd مجاز به ایجاد گره‌های pubsub است. مقدار پیش‌فرض: all است.

append_module_config 🟠: {PubSubHost: Options}

توجه درباره این گزینه: در نسخه 26.07 اضافه شده است. چند گزینه خاص به یک میزبان PubSub مشخص که قبلاً در گزینه hosts ماژول mod_pubsub تعریف شده است اضافه می‌کند. در حال حاضر فقط name و vcard می‌توانند اینجا تعریف شوند. این مشابه گزینه سطح بالای append_host_config است، اما در این مورد به گزینه‌های این ماژول اعمال می‌شود.

مثال:

modules:
  mod_pubsub:
    hosts:
      - service1.@HOST@
      - service2.@HOST@
    name: "Service General"
    append_module_config:
      service1.localhost:
        name: "Service 1"
      service2.example.net:
        name: "Service 2"

db_type: mnesia | sql

مانند گزینه سطح بالای default_db ، اما فقط برای این ماژول اعمال می‌شود.

default_node_config: List of Key:Value

برای بازنویسی پیکربندی پیش‌فرض گره، صرف نظر از افزونه گره. مقدار یک لیست از تعاریف کلید-مقدار است. پیکربندی گره همچنان از پیکربندی پیش‌فرض تعریف شده توسط افزونه گره استفاده می‌کند و هر آیتم را با مقدار تعریف شده در این لیست قابل پیکربندی بازنویسی می‌کند.

force_node_config: List of Node and the list of its Key:Value

پیکربندی برای گره‌های داده شده را تعریف می‌کند. مقدار پیش‌فرض: [] است.

مثال:

force_node_config:
  ## Avoid buggy clients to make their bookmarks public
  storage:bookmarks:
    access_model: whitelist

host

منسوخ شده. به جای آن از hosts استفاده کنید.

hosts: [Host, ...]

این گزینه شناسه‌های Jabber سرویس را تعریف می‌کند. اگر گزینه hosts مشخص نشده باشد، تنها شناسه Jabber، نام میزبان مجازی با پیشوند "pubsub." خواهد بود. کلمه کلیدی @HOST@ با نام واقعی میزبان مجازی جایگزین می‌شود.

ignore_pep_from_offline: false | true

مشخص می‌کند که آیا باید آخرین آیتم‌های PEP منتشر شده از کاربران موجود در لیست مخاطبین ما که هنگام اتصال ما آفلاین هستند را دریافت کنیم یا نه. مقدار true یا false است. اگر تعریف نشده باشد، pubsub مقدار true را فرض می‌کند، بنابراین فقط آخرین آیتم‌های مخاطبین آنلاین را دریافت می‌کنیم.

last_item_cache: false | true

مشخص می‌کند که آیا pubsub باید آخرین آیتم‌ها را کش کند یا نه. مقدار true یا false است. اگر تعریف نشده باشد، pubsub آخرین آیتم‌ها را کش نمی‌کند. در سیستم‌هایی با گره‌های نه چندان زیاد، کش کردن آخرین آیتم‌ها pubsub را سرعت می‌بخشد و به شما امکان می‌دهد نرخ اتصال کاربر را افزایش دهید. هزینه آن مصرف حافظه است، زیرا هر آیتم در حافظه ذخیره می‌شود.

max_item_expire_node: timeout() | infinity

توجه درباره این گزینه: در نسخه 21.12 اضافه شده است. حداکثر زمان انقضای آیتم را مشخص می‌کند. مقدار پیش‌فرض: infinity است.

max_items_node: non_neg_integer() | infinity

حداکثر تعداد آیتم‌هایی که می‌توانند در یک گره ذخیره شوند را تعریف می‌کند. مقدار پیش‌فرض: 1000 است.

max_nodes_discoitems: pos_integer() | infinity

حداکثر تعداد گره‌هایی که در یک پاسخ discoitem بازگردانده می‌شوند. مقدار پیش‌فرض: 100 است.

max_subscriptions_node: MaxSubs

حداکثر تعداد اشتراک‌هایی که توسط یک گره مدیریت می‌شوند را تعریف می‌کند. مقدار پیش‌فرض بدون محدودیت است: undefined.

name: Name

مقدار نام سرویس. این نام فقط در برخی کلاینت‌هایی که از XEP-0030: Service Discovery پشتیبانی می‌کنند قابل مشاهده است. پیش‌فرض vCard User Search است.

nodetree: Nodetree

مشخص می‌کند که کدام nodetree استفاده شود. اگر تعریف نشده باشد، nodetree پیش‌فرض pubsub استفاده می‌شود: tree. فقط یک nodetree می‌تواند به ازای هر میزبان استفاده شود و بین همه افزونه‌های گره به اشتراک گذاشته می‌شود.
•tree ذخیره‌ساز گره nodetree پیکربندی و روابط گره را در پایگاه داده ذخیره می‌کند. flat گره‌ها بدون هیچ رابطه‌ای ذخیره می‌شوند، و hometree گره‌ها می‌توانند گره‌های فرزند داشته باشند.
•virtual nodetree گره‌ها را در پایگاه داده ذخیره نمی‌کند. این منابع را در سیستم‌هایی با تعداد زیادی گره ذخیره می‌کند. در صورت استفاده از virtual nodetree، تنها می‌توانید این افزونه‌های گره را فعال کنید: [flat, pep] یا [flat]؛ هر پیکربندی افزونه دیگری کار نخواهد کرد. همچنین، تمام گره‌ها پیکربندی پیش‌فرض خواهند داشت و این قابل تغییر نیست. استفاده از virtual nodetree نیاز دارد که از یک پایگاه داده تمیز شروع کنید، اگر قبلاً از tree nodetree پیش‌فرض استفاده کرده باشید کار نخواهد کرد.

pep_mapping: List of Key:Value

در این گزینه می‌توانید فهرستی از جفت کلید-مقدار برای انتخاب افزونه‌های گره تعریف‌شده روی فضانام PEP مشخص ارائه دهید. مثال زیر از node_tune به جای node_pep برای هر گره PEP با فضانام tune استفاده می‌کند:

مثال:

modules:
  ...
  mod_pubsub:
    pep_mapping:
      http://jabber.org/protocol/tune: tune
  ...

plugins: [Plugin, ...]

برای تعیین اینکه کدام افزونه‌های گره pubsub استفاده شوند. اولین مورد در فهرست به طور پیش‌فرض استفاده می‌شود. اگر این گزینه تعریف نشده باشد، فهرست افزونه‌های پیش‌فرض عبارت است از: [flat]. کلاینت‌های PubSub می‌توانند هنگام ایجاد یک گره مشخص کنند که از کدام افزونه استفاده شود: ویژگی type='plugin-name' را به عنصر استانزای create اضافه کنید.
•افزونه flat رفتار پیش‌فرض را مدیریت می‌کند و از پیاده‌سازی استاندارد XEP-0060 پیروی می‌کند.
•افزونه pep پسوندی برای مدیریت پروتکل رویداد شخصی (XEP-0163) به موتور PubSub اضافه می‌کند. وقتی فعال شود، PEP به طور خودکار مدیریت می‌شود.

vcard: vCard

یک vCard سفارشی از کارگزار که توسط برخی کلاینت‌های XMPP در کشف سرویس نمایش داده می‌شود. مقدار vCard یک نگاشت YAML است که از نمایش XML یک vCard ساخته شده است. از آنجایی که این نمایش هیچ ویژگی‌ای ندارد، نگاشت ساده است.

مثال:

# This XML representation of vCard:
#   <vCard xmlns='vcard-temp'>
#     <FN>Conferences</FN>
#     <ADR>
#       <WORK/>
#       <STREET>Elm Street</STREET>
#     </ADR>
#   </vCard>
#
# is translated to:
vcard:
  fn: Conferences
  adr:
    -
      work: true
      street: Elm Street

مثال‌ها:

مثال پیکربندی که از گره‌های flat به عنوان پیش‌فرض استفاده می‌کند و اجازه استفاده از گره‌های flat، hometree و pep را می‌دهد:

modules:
  mod_pubsub:
    access_createnode: pubsub_createnode
    max_subscriptions_node: 100
    default_node_config:
      notification_type: normal
      notify_retract: false
      max_items: 4
    plugins:
      - flat
      - pep

استفاده از پایگاه داده رابطه‌ای نیاز به استفاده از mod_pubsub با db_type sql دارد. تنها افزونه‌های flat، hometree و pep از SQL پشتیبانی می‌کنند. مثال زیر پیکربندی قبلی را با استفاده از SQL نشان می‌دهد:

modules:
  mod_pubsub:
    db_type: sql
    access_createnode: pubsub_createnode
    ignore_pep_from_offline: true
    last_item_cache: false
    plugins:
      - flat
      - pep

API Tags: ../../developer/ejabberd-api/admin-tags.md#purge|purge

توجه درباره این گزینه: در نسخه 25.07 اضافه شده است.

این ماژول پشتیبانی از XEP-0485: PubSub Server Information را برای افشای اطلاعات S2S از طریق سرویس Pub/Sub اضافه می‌کند.

اتصالات فعال S2S در یک گره PubSub محلی منتشر می‌شوند. در حال حاضر نام گره به صورت ثابت "serverinfo" تعریف شده است.

اتصالاتی که از این ویژگی پشتیبانی می‌کنند با نام دامنه‌هایشان نشان داده می‌شوند، در غیر این صورت به عنوان گره‌های ناشناس نمایش داده می‌شوند. در زمان راه‌اندازی فهرستی از کارگزارهای عمومی شناخته‌شده دریافت می‌شود. آن‌ها حتی اگر از این ویژگی پشتیبانی نکنند، به عنوان ناشناس نشان داده نمی‌شوند.

توجه داشته باشید که این ماژول فقط اتصالات S2S برقرارشده در حین اجرای ماژول را نشان می‌دهد. اگر ماژول را در زمان اجرا نصب کنید، API stop_s2s_connections را اجرا کنید یا ejabberd را مجدداً راه‌اندازی کنید تا اتصالات S2S مجدداً برقرار شوند و ماژول آن‌ها را شناسایی و منتشر کند.

این ماژول به mod_pubsub و mod_disco وابسته است.

گزینه‌های موجود:

pubsub_host: undefined | string()

از این هاست PubSub محلی برای تبلیغ اتصالات S2S استفاده کنید. این باید یک هاست محلی برای این سرویس باشد که توسط mod_pubsub مدیریت می‌شود. این گزینه تنها در صورتی لازم است که پیکربندی شما بیش از یک هاست در گزینه hosts mod_pubsub داشته باشد. مقدار پیش‌فرض اولین هاست تعریف‌شده در گزینه hosts mod_pubsub است.

مثال:

modules:
  mod_pubsub_serverinfo:
    pubsub_host: custom.pubsub.domain.local

این ماژول بخش کارگزار XMPP از راه‌حل اعلان‌های فشاری مشخص‌شده در XEP-0357: Push Notifications را پیاده‌سازی می‌کند. به عنوان مثال، اعلان‌های APNS یا FCM را مستقیماً تولید نمی‌کند. در عوض، طراحی شده تا با به اصطلاح "سرورهای برنامه" که توسط فروشندگان شخص ثالث اپلیکیشن‌های موبایل اداره می‌شوند کار کند. آن سرورهای برنامه معمولاً تحویل اعلان به دستگاه موبایل کاربر را با استفاده از سرویس‌های بک‌اند وابسته به پلتفرم مانند FCM یا APNS فعال می‌کنند.

گزینه‌های موجود:

cache_life_time: timeout()

مانند گزینه سطح بالای cache_life_time، اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

مانند گزینه سطح بالای cache_missed، اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

مانند گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال می‌شود.

db_type: mnesia | sql

مانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال می‌شود.

include_body: true | false | Text

اگر این گزینه روی true تنظیم شده باشد، متن پیام در اعلان‌های فشاری تولیدشده برای پیام‌های دریافتی دارای متن گنجانده می‌شود. این گزینه می‌تواند به جای آن روی یک Text ثابت تنظیم شود، که در این صورت متن مشخص‌شده به جای متن واقعی پیام گنجانده خواهد شد. این می‌تواند برای سیگنال دادن به سرور برنامه در مورد اینکه آیا اعلان توسط یک پیام دارای متن (در مقابل انواع دیگر ترافیک) فعال شده است، بدون افشای محتوای واقعی پیام، مفید باشد. مقدار پیش‌فرض "New message" است.

include_sender: true | false

اگر این گزینه روی true تنظیم شده باشد، JID فرستنده در اعلان‌های فشاری تولیدشده برای پیام‌های دریافتی دارای متن گنجانده می‌شود. مقدار پیش‌فرض false است.

notify_on: messages | all

توجه درباره این گزینه: در نسخه 23.10 اضافه شده است. اگر این گزینه روی messages تنظیم شده باشد، اعلان‌ها فقط برای پیام‌های چت واقعی دارای متن (یا برخی محتوای رمزگذاری‌شده) تولید می‌شوند. اگر روی all تنظیم شده باشد، هر نوع استانزای XMPP یک اعلان را فعال می‌کند. اگر مطمئن نیستید، اکیداً توصیه می‌شود با all بمانید که مقدار پیش‌فرض است.

use_cache: true | false

مانند گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال می‌شود.

API Tags: ../../developer/ejabberd-api/admin-tags.md#purge|purge

این ماژول سعی می‌کند نشست مدیریت جریان (به mod_stream_mgmt مراجعه کنید) یک کلاینت موبایل قطع‌شده را زنده نگه دارد، اگر کلاینت اعلان‌های فشاری را برای آن نشست فعال کرده باشد. با این حال، زمان‌بندی از سرگیری نشست معمولی پس از صدور اعلان فشاری بازیابی می‌شود، بنابراین نشست در صورتی که کلاینت به اعلان‌های فشاری پاسخ ندهد بسته خواهد شد.

این ماژول به mod_push وابسته است.

گزینه‌های موجود:

resume_timeout: timeout()

این گزینه مدت زمانی را مشخص می‌کند که پس از آن نشست یک کلاینت فشاری قطع‌شده منقضی می‌شود. این زمان‌بندی فقط تا زمانی که هیچ اعلان فشاری صادر نشده باشد معتبر است. پس از وقوع آن، زمان‌بندی از سرگیری پیکربندی‌شده برای mod_stream_mgmt بازیابی می‌شود. مقدار پیش‌فرض 72 ساعت است.

wake_on_start: true | false

اگر این گزینه روی true تنظیم شده باشد، در طول راه‌اندازی کارگزار برای تمام کلاینت‌های فشاری ثبت‌شده اعلان تولید می‌شود. این گزینه نباید در کارگزارهایی با تعداد زیادی کلاینت فشاری فعال شود زیرا می‌تواند بار قابل توجهی بر سرویس‌های فشاری درگیر و خود کارگزار ایجاد کند. مقدار پیش‌فرض false است.

wake_on_timeout: true | false

اگر این گزینه روی true تنظیم شده باشد، کمی قبل از اینکه نشست طبق گزینه resume_timeout منقضی شود، یک اعلان تولید می‌شود. مقدار پیش‌فرض true است.

این ماژول پشتیبانی از XEP-0077: In-Band Registration را اضافه می‌کند. این پروتکل به کاربران نهایی امکان می‌دهد از یک کلاینت XMPP برای موارد زیر استفاده کنند:

•ثبت یک حساب کاربری جدید روی کارگزار.
•تغییر رمز عبور یک حساب کاربری موجود روی کارگزار.
•حذف یک حساب کاربری موجود روی کارگزار.

این ماژول همچنین گزینه سطح بالای registration_timeout که به صورت سراسری برای کارگزار تعریف شده را می‌خواند، بنابراین مستندات آن گزینه را نیز بررسی کنید.

گزینه‌های موجود:

access: AccessName

قوانینی را برای محدود کردن نام‌های کاربری قابل ثبت مشخص می‌کند. اگر یک قانون برای نام کاربری درخواست‌شده مقدار deny را برگرداند، ثبت آن نام کاربری رد می‌شود. به طور پیش‌فرض هیچ محدودیتی وجود ندارد. اگر AccessName برابر none باشد، ثبت حساب‌های کاربری جدید از طریق In-Band Registration غیرفعال می‌شود و ویژگی جریان مربوطه به کلاینت‌ها اعلام نمی‌شود.

access_from: AccessName

به طور پیش‌فرض، ejabberd به کلاینت اجازه نمی‌دهد که حساب‌های کاربری جدید را از طریق جلسات s2s یا c2s موجود ثبت کند. می‌توانید با تعریف قانون دسترسی در این گزینه آن را تغییر دهید. با احتیاط استفاده کنید: اجازه دادن به ثبت از طریق s2s منجر به ایجاد انبوه حساب‌های کاربری کنترل‌نشده توسط کاربران مخرب می‌شود.

access_remove: AccessName

قوانینی را برای محدود کردن دسترسی به لغو ثبت کاربران مشخص می‌کند. به طور پیش‌فرض هر کاربری می‌تواند حساب کاربری خود را لغو ثبت کند.

allow_modules: all | [Module, ...]

توجه درباره این گزینه: در نسخه 21.12 اضافه شده است. فهرستی از ماژول‌هایی که می‌توانند حساب‌های کاربری ثبت کنند، یا all. مقدار پیش‌فرض all است که معادل چیزی شبیه به [mod_register, mod_register_web] است.

captcha_protected: true | false

ثبت‌نام را با basic.md#captcha|CAPTCHA محافظت می‌کند. مقدار پیش‌فرض false است.

ip_access: AccessName

قوانینی را برای اجازه یا رد ثبت حساب کاربری بر اساس آدرس IP کلاینت XMPP تعریف می‌کند. AccessName باید از نوع ip باشد. مقدار پیش‌فرض all است.

password_strength: Entropy

این گزینه حداقل آنتروپی شانون برای رمزهای عبور را تعیین می‌کند. مقدار Entropy تعداد بیت‌های آنتروپی است. حداقل توصیه‌شده ۳۲ بیت است. پیش‌فرض 0 است، یعنی هیچ بررسی انجام نمی‌شود.

redirect_url: URL

این گزینه تغییر مسیر ثبت‌نام را طبق تعریف در XEP-0077: In-Band Registration: Redirection فعال می‌کند.

registration_watchers: [JID, ...]

این گزینه فهرستی از JIDها را تعریف می‌کند که هر بار که حساب کاربری جدیدی ثبت شود، اطلاع‌رسانی می‌شوند.

welcome_message: {subject: Subject, body: Body}

یک پیام خوش‌آمدگویی تنظیم می‌کند که برای هر حساب کاربری تازه ثبت‌شده ارسال می‌شود. پیام دارای موضوع Subject و متن Body خواهد بود.

مثال:

modules:
  mod_register:
    welcome_message:
      subject: "Welcome!"
      body: |-
        Hi!
        Welcome to this XMPP server

این ماژول یک صفحه وب فراهم می‌کند که کاربران می‌توانند در آن:

•یک حساب کاربری جدید روی کارگزار ثبت کنند.
•رمز عبور یک حساب کاربری موجود روی کارگزار را تغییر دهند.
•یک حساب کاربری موجود روی کارگزار را لغو ثبت کنند.

این ماژول از basic.md#captcha|CAPTCHA برای ثبت حساب کاربری جدید پشتیبانی می‌کند. برای فعال کردن این ویژگی، گزینه‌های سطح بالای captcha_cmd و captcha_url را پیکربندی کنید.

به عنوان مثال کاربرد، کاربران میزبان localhost می‌توانند از صفحه: https://localhost:5280/register/ بازدید کنند. مهم است که کاراکتر / پایانی را در URL درج کنید، در غیر این صورت آدرس زیرصفحات اشتباه خواهد بود.

این ماژول در listen → ejabberd_http → listen-options.md#request_handlers|request_handlers فعال می‌شود.

نیازی به فعال کردن این ماژول در modules نیست، اما یک لینک به صفحه ثبت‌نام در منوی WebAdmin اضافه می‌کند. این ماژول به mod_register وابسته است که تمام پیکربندی در آن انجام می‌شود.

این ماژول هیچ گزینه‌ای ندارد.

مثال:

listen:
  -
    port: 5280
    module: ejabberd_http
    request_handlers:
      /register: mod_register_web
modules:
  mod_register: {}

این ماژول مدیریت فهرست مخاطبین را طبق تعریف در RFC6121 بخش ۲ پیاده‌سازی می‌کند. این ماژول همچنین پشتیبانی از XEP-0237: Roster Versioning را اضافه می‌کند.

گزینه‌های موجود:

access: AccessName

این گزینه می‌تواند برای تعیین قوانین محدود کردن مدیریت فهرست مخاطبین پیکربندی شود. اگر قانون برای نام کاربری درخواست‌شده مقدار deny را برگرداند، آن کاربر نمی‌تواند فهرست مخاطبین شخصی خود را تغییر دهد، یعنی نمی‌تواند مخاطبین را اضافه/حذف/ویرایش کند یا درخواست‌های حضور ارسال کند. مقدار پیش‌فرض all است، یعنی هیچ محدودیتی وجود ندارد.

cache_life_time: timeout()

مانند گزینه سطح بالای cache_life_time ، اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

مانند گزینه سطح بالای cache_missed ، اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

مانند گزینه سطح بالای cache_size ، اما فقط برای این ماژول اعمال می‌شود.

db_type: mnesia | sql

مانند گزینه سطح بالای default_db ، اما فقط برای این ماژول اعمال می‌شود.

store_current_id: true | false

اگر این گزینه روی true تنظیم شود، شماره نسخه فعلی فهرست مخاطبین در پایگاه داده ذخیره می‌شود. اگر روی false تنظیم شود، شماره نسخه فهرست مخاطبین هر بار به صورت پویا محاسبه می‌شود. فعال کردن این گزینه بار هر دو ejabberd و پایگاه داده را کاهش می‌دهد. این گزینه هیچ تأثیری بر کلاینت ندارد. این گزینه تنها زمانی مفید است که گزینه versioning روی true تنظیم شده باشد. مقدار پیش‌فرض false است. مهم: اگر از mod_shared_roster یا mod_shared_roster_ldap استفاده می‌کنید، باید مقدار این گزینه را false تنظیم کنید.

use_cache: true | false

مانند گزینه سطح بالای use_cache ، اما فقط برای این ماژول اعمال می‌شود.

versioning: true | false

Roster Versioning را فعال/غیرفعال می‌کند. مقدار پیش‌فرض false است.

مثال:

modules:
  mod_roster:
    versioning: true
    store_current_id: false

برچسب‌های API: ../../developer/ejabberd-api/admin-tags.md#roster|roster

توجه درباره این گزینه: در نسخه 24.10 اضافه شده است.

این ماژول پشتیبانی از XEP-0288: Bidirectional Server-to-Server Connections را اضافه می‌کند که امکان استفاده از یک اتصال s2s برای ارتباط در هر دو جهت را فراهم می‌کند.

این ماژول هیچ گزینه‌ای ندارد.

مثال:

modules:
  mod_s2s_bidi: {}

این ماژول پشتیبانی از XEP-0220: Server Dialback را برای فراهم کردن تأیید هویت کارگزار بر اساس DNS اضافه می‌کند.


هشدار

تأیید هویت مبتنی بر DNS در برابر مسموم‌سازی کش DNS آسیب‌پذیر است، بنابراین کارگزارهای مدرن بر تأیید هویت مبتنی بر گواهی‌نامه‌های PKIX تکیه می‌کنند. از این رو این ماژول تنها برای سازگاری با نسخه‌های قدیمی‌تر کارگزارهایی که نرم‌افزار قدیمی را اجرا می‌کنند یا کارگزارهای بدون TLS یا آنهایی با گواهی‌نامه‌های نامعتبر توصیه می‌شود (تا زمانی که ریسک‌ها را می‌پذیرید، مثلاً فرض می‌کنید که کارگزار راه دور دارای گواهی‌نامه نامعتبر به دلیل مدیریت ضعیف است و نه به این دلیل که به خطر افتاده است).

گزینه‌های موجود:

access: AccessName

یک قانون دسترسی که می‌تواند برای محدود کردن dialback برای برخی کارگزارها استفاده شود. مقدار پیش‌فرض all است.

مثال:

modules:
  mod_s2s_dialback:
    access:
      allow:
        server: legacy.domain.tld
        server: invalid-cert.example.org
      deny: all

توجه درباره این گزینه: در نسخه 24.10 اضافه شده است.

این ماژول پشتیبانی از XEP-0480: SASL Upgrade Tasks را اضافه می‌کند که به کاربران اجازه می‌دهد رمزهای عبور خود را به نمایش امن‌تری ارتقا دهند.

گزینه‌های موجود:

offered_upgrades: list(sha256, sha512)

فهرستی از انواع ارتقا که باید پیشنهاد شوند

مثال:

modules:
  mod_scram_upgrade:
    offered_upgrades:
      - sha256
      - sha512

این ماژول نسخه‌هایی از تمام stanza‌ها را به سرورها یا اجزای XMPP از راه دور ارسال می‌کند. هر stanza در قالب عنصر <forwarded/> طبق توضیحات XEP-0297: Stanza Forwarding کپسوله می‌شود.

گزینه‌های موجود:

loggers: [Domain, ...]

فهرستی از سرورها یا اجزای متصل که stanza‌ها به آن‌ها ارسال خواهند شد.

مثال:

modules:
  mod_service_log:
    loggers:
      - xmpp-server.tld
      - component.domain.tld

این ماژول به شما امکان می‌دهد گروه‌های فهرست مخاطبین مشترک ایجاد کنید: گروه‌هایی از حساب‌های کاربری که می‌توانند اعضای گروه‌های (دیگر) را در فهرست مخاطبین خود ببینند.

مزیت‌های بزرگ این ویژگی این است که کاربران نهایی نیازی به افزودن دستی همه کاربران به فهرست مخاطبین خود ندارند و نمی‌توانند کاربران را به‌طور دائم از گروه‌های فهرست مشترک حذف کنند. یک گروه فهرست مشترک می‌تواند اعضایی از هر سرور XMPP داشته باشد، اما حضور تنها از اعضای همان میزبان مجازی که گروه در آن ایجاد شده است، در دسترس خواهد بود. این ویژگی همچنان به کاربران اجازه می‌دهد مخاطبین خود را داشته باشند یا اضافه کنند، زیرا جایگزین فهرست مخاطبین استاندارد نمی‌شود. در عوض، مخاطبین فهرست مشترک هنگام بازیابی به فهرست مخاطبین کاربران مربوطه ادغام می‌شوند. بنابراین فهرست مخاطبین استاندارد کاربر بدون تغییر باقی می‌ماند.

گروه‌های فهرست مشترک را می‌توان از طریق پنل مدیریت وب ویرایش کرد و برخی دستورات API با پیشوند srg_، مانند API srg_add وجود دارند. هر گروه یک نام منحصربه‌فرد و این پارامترها دارد:

•Label: در فهرست مخاطبینی که این گروه در آن نمایش داده می‌شود استفاده می‌شود.
•Description: توضیح گروه که تأثیری ندارد.
•Members: فهرستی از JIDهای اعضای گروه که در پنل مدیریت وب هر کدام در یک خط وارد می‌شوند. دستورالعمل خاص عضو @all@ نماینده همه کاربران ثبت‌نام‌شده در میزبان مجازی است؛ که فقط برای سرور کوچک با چند صد کاربر توصیه می‌شود. دستورالعمل خاص عضو @online@ نماینده کاربران آنلاین در میزبان مجازی است. با این دو دستورالعمل، فهرست واقعی اعضا در آن فهرست‌های مشترک به‌صورت پویا در زمان بازیابی تولید می‌شود.
•Displayed: فهرستی از گروه‌هایی که در فهرست مخاطبین اعضای این گروه خواهند بود. یک گروه از vhost دیگر را می‌توان با groupid@vhost شناسایی کرد.

این ماژول به mod_roster وابسته است. اگر فعال نباشد، پرسش‌های فهرست مخاطبین خطای 503 برمی‌گردانند.

گزینه‌های موجود:

cache_life_time: timeout()

مانند گزینه سطح بالای cache_life_time، اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

مانند گزینه سطح بالای cache_missed، اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

مانند گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال می‌شود.

db_type: mnesia | sql

مانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال می‌شود.

use_cache: true | false

مانند گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال می‌شود.

مثال‌ها:

فرض کنید یک باشگاه کامپیوتر می‌خواهد همه اعضایش یکدیگر را در فهرست مخاطبین خود ببینند. برای این منظور، باید یک گروه فهرست مشترک مشابه این ایجاد کنند:

Name: club_members
Label: Club Members
Description: Members from the computer club
Members: member1@example.org, member2@example.org, member3@example.org
Displayed Groups: club_members

در حالت دیگری، شرکتی داریم که سه بخش دارد: مدیریت، بازاریابی و فروش. همه اعضای گروه باید همه اعضای دیگر را در فهرست مخاطبین خود ببینند. علاوه بر این، همه مدیران باید همه افراد بازاریابی و فروش را در فهرست مخاطبین خود داشته باشند. همزمان، همه بازاریاب‌ها و کل تیم فروش باید همه مدیران را ببینند. این سناریو را می‌توان با ایجاد گروه‌های فهرست مشترک به‌صورت نشان داده‌شده در فهرست‌های زیر محقق کرد:

First list:
Name: management
Label: Management
Description: Management
Members: manager1@example.org, manager2@example.org
Displayed: management, marketing, sales
Second list:
Name: marketing
Label: Marketing
Description: Marketing
Members: marketeer1@example.org, marketeer2@example.org, marketeer3@example.org
Displayed: management, marketing
Third list:
Name: sales
Label: Sales
Description: Sales
Members: salesman1@example.org, salesman2@example.org, salesman3@example.org
Displayed: management, sales

این ماژول به مدیر سرور اجازه می‌دهد فهرست مخاطبین (لیست مخاطبین) کاربران را به‌طور خودکار بر اساس کاربران و گروه‌های تعریف‌شده در یک دایرکتوری مبتنی بر LDAP پر کند.


توجه

mod_shared_roster_ldap به فعال بودن mod_roster وابسته است. اگر mod_roster فعال نباشد، پرسش‌های فهرست مخاطبین خطای 503 برمی‌گردانند.

این ماژول گزینه‌های پیکربندی زیادی می‌پذیرد. برخی از آن‌ها، در صورت مشخص نشدن، به مقادیر تعیین‌شده در سطح بالای پیکربندی پیش‌فرض می‌شوند. این به شما اجازه می‌دهد از مشخص کردن مواردی مانند رمز عبور bind در چندین مکان اجتناب کنید.

•فیلترها: ldap_rfilter، ldap_ufilter، ldap_gfilter، ldap_filter. این گزینه‌ها فیلترهای LDAP مورد استفاده برای پرسش اطلاعات فهرست مشترک را مشخص می‌کنند. همه آن‌ها در برابر ldap_base اجرا می‌شوند.
•ویژگی‌ها: ldap_groupattr، ldap_groupdesc، ldap_memberattr، ldap_userdesc، ldap_useruid. این گزینه‌ها نام ویژگی‌هایی را که داده‌های مهم را در ورودی‌های برگشتی از اجرای فیلترهای مشخص‌شده نگه می‌دارند، مشخص می‌کنند.
•پارامترهای کنترلی: ldap_auth_check، ldap_group_cache_validity، ldap_memberattr_format، ldap_memberattr_format_re، ldap_user_cache_validity. این پارامترها رفتار ماژول را کنترل می‌کنند.
•پارامترهای اتصال: این ماژول همچنین پارامترهای اتصال را می‌پذیرد که همه آن‌ها در صورت مشخص نشدن به پارامتر سطح بالای با همان نام پیش‌فرض می‌شوند. برای اطلاعات بیشتر بخش ldap.md#ldap-connection|LDAP Connection را ببینید.

همچنین برای جزئیات بازیابی فهرست مخاطبین و مثال‌های پیکربندی شامل Flat DIT و Deep DIT، بخش ldap.md#ldap-examples|Configuration examples را بررسی کنید.

گزینه‌های موجود:

cache_life_time

مانند گزینه سطح بالای cache_life_time، اما فقط برای این ماژول اعمال می‌شود.

cache_missed

مانند گزینه سطح بالای cache_missed، اما فقط برای این ماژول اعمال می‌شود.

cache_size

مانند گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال می‌شود.

ldap_auth_check: true | false

آیا ماژول باید (از طریق زیرسیستم احراز هویت ejabberd) وجود هر کاربر در فهرست مشترک LDAP را بررسی کند. در صورتی که می‌خواهید بررسی را غیرفعال کنید، به false تنظیم کنید. مقدار پیش‌فرض true است.

ldap_backups

مانند گزینه سطح بالای ldap_backups، اما فقط برای این ماژول اعمال می‌شود.

ldap_base

مانند گزینه سطح بالای ldap_base، اما فقط برای این ماژول اعمال می‌شود.

ldap_deref_aliases

مانند گزینه سطح بالای ldap_deref_aliases، اما فقط برای این ماژول اعمال می‌شود.

ldap_encrypt

مانند گزینه سطح بالای ldap_encrypt، اما فقط برای این ماژول اعمال می‌شود.

ldap_filter

فیلتر اضافی که با عملگر AND با «User Filter» و «Group Filter» ترکیب می‌شود. برای اطلاعات بیشتر بخش ldap.md#filters|Filters LDAP را بررسی کنید.

ldap_gfilter

«Group Filter»، هنگام بازیابی نام قابل‌خواندن توسط انسان (معروف به «Display Name») و اعضای یک گروه استفاده می‌شود. همچنین پارامترهای ldap_groupattr، ldap_groupdesc و ldap_memberattr را ببینید. در صورت مشخص نشدن، به پارامتر سطح بالای با همان نام پیش‌فرض می‌شود. اگر آن هم مشخص نشده باشد، فیلتر دقیقاً مانند «User Filter» ساخته می‌شود.

ldap_groupattr

نام ویژگی‌ای که نام گروه را نگه می‌دارد و برای تمایز بین آن‌ها استفاده می‌شود. از نتایج «Roster Filter» و «Group Filter» بازیابی می‌شود. پیش‌فرض cn است.

ldap_groupdesc

نام ویژگی‌ای که نام گروه قابل‌خواندن توسط انسان را در اشیایی که برای نمایش گروه‌ها استفاده می‌کنید نگه می‌دارد. از نتایج «Group Filter» بازیابی می‌شود. پیش‌فرض همان مقداری است که برای ldap_groupattr تنظیم شده است.

ldap_memberattr

نام ویژگی‌ای که شناسه‌های اعضای یک گروه را نگه می‌دارد. از نتایج «Group Filter» بازیابی می‌شود. پیش‌فرض memberUid است. نام ویژگی بسته به objectClass مورد استفاده برای اشیای گروه متفاوت است، برای مثال: posixGroup → memberUid؛ groupOfNames → member؛ groupOfUniqueNames → uniqueMember.

ldap_memberattr_format

قالب globbing برای استخراج شناسه کاربر از مقدار ویژگی‌ای که توسط ldap_memberattr نام‌گذاری شده است. پیش‌فرض %u است، به این معنی که کل مقدار شناسه عضو است. اگر آن را به چیز دیگری تغییر دهید، ممکن است نیاز باشد فیلترهای User و Group را هم به‌صورت دستی مشخص کنید؛ بخش Filters را ببینید.

ldap_memberattr_format_re

یک عبارت منظم برای استخراج شناسه کاربر از مقدار ویژگی‌ای که توسط ldap_memberattr نام‌گذاری شده است. بخش ldap.md#control-parameters|Control Parameters LDAP را بررسی کنید.

ldap_password

مانند گزینه سطح بالای ldap_password، اما فقط برای این ماژول اعمال می‌شود.

ldap_port

مانند گزینه سطح بالای ldap_port، اما فقط برای این ماژول اعمال می‌شود.

ldap_rfilter

به اصطلاح «Roster Filter». برای یافتن نام‌های همه گروه‌های «فهرست مشترک» استفاده می‌شود. همچنین پارامتر ldap_groupattr را ببینید. در صورت مشخص نشدن، به پارامتر سطح بالای با همان نام پیش‌فرض می‌شود. باید آن را در جایی در پیکربندی مشخص کنید، هیچ مقدار پیش‌فرضی وجود ندارد.

ldap_rootdn

مانند گزینه سطح بالای ldap_rootdn، اما فقط برای این ماژول اعمال می‌شود.

ldap_servers

مانند گزینه سطح بالای ldap_servers، اما فقط برای این ماژول اعمال می‌شود.

ldap_tls_cacertfile

مانند گزینه سطح بالای ldap_tls_cacertfile، اما فقط برای این ماژول اعمال می‌شود.

ldap_tls_certfile

مانند گزینه سطح بالای ldap_tls_certfile، اما فقط برای این ماژول اعمال می‌شود.

ldap_tls_depth

مانند گزینه سطح بالای ldap_tls_depth، اما فقط برای این ماژول اعمال می‌شود.

ldap_tls_verify

مانند گزینه سطح بالای ldap_tls_verify، اما فقط برای این ماژول اعمال می‌شود.

ldap_ufilter

«User Filter»، برای بازیابی نام قابل‌خواندن توسط انسان از ورودی‌های فهرست مخاطبین (معمولاً نام کامل افراد در فهرست) استفاده می‌شود. همچنین پارامترهای ldap_userdesc و ldap_useruid را ببینید. برای اطلاعات بیشتر بخش ldap.md#filters|Filters LDAP را بررسی کنید.

ldap_uids

مانند گزینه سطح بالای ldap_uids، اما فقط برای این ماژول اعمال می‌شود.

ldap_userdesc

نام ویژگی‌ای که نام قابل‌خواندن توسط انسان را نگه می‌دارد. از نتایج «User Filter» بازیابی می‌شود. پیش‌فرض cn است.

ldap_userjidattr

نام ویژگی‌ای که برای نگاشت شناسه کاربر به XMPP jid استفاده می‌شود. اگر مشخص نشده باشد (که مقدار پیش‌فرض این گزینه است)، jid کاربر از شناسه کاربر و میزبان این ماژول ساخته می‌شود.

ldap_useruid

نام ویژگی‌ای که شناسه یک آیتم فهرست مخاطبین را نگه می‌دارد. مقدار این ویژگی در اشیای آیتم فهرست مخاطبین باید با شناسه بازیابی‌شده از ویژگی ldap_memberattr یک شیء گروه مطابقت داشته باشد. از نتایج «User Filter» بازیابی می‌شود. پیش‌فرض cn است.

use_cache

مانند گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال می‌شود.

این ماژول پشتیبانی از XEP-0279: Server IP Check را اضافه می‌کند. این پروتکل به کلاینت امکان می‌دهد آدرس IP خارجی خود را کشف کند.


هشدار

این افزونه پروتکل به تعویق افتاده و به نظر می‌رسد هیچ کلاینتی از آن پشتیبانی نمی‌کند، بنابراین استفاده از این ماژول توصیه نمی‌شود و علاوه بر این، ممکن است در آینده حذف شود.

این ماژول هیچ گزینه‌ای ندارد.

این ماژول پشتیبانی از پراکسی/ثبت‌کننده SIP را برای هاست مجازی مربوطه اضافه می‌کند.


توجه

صرفاً بارگذاری این ماژول کافی نیست. باید شنوندگان و رکوردهای DNS را نیز به درستی پیکربندی کنید. برای جزئیات به بخش مربوط به ماژول شنوند listen.md#ejabberd_sip|ejabberd_sip در مستندات ejabberd مراجعه کنید.

گزینه‌های موجود:

always_record_route: true | false

همیشه هدر "Record-Route" را در پیام‌های SIP درج می‌کند. با این رویکرد، دور زدن NAT/فایروال‌ها کمی آسان‌تر می‌شود. مقدار پیش‌فرض true است.

flow_timeout_tcp: timeout()

این گزینه یک تایمر keep-alive برای اتصالات TCP در SIP outbound تنظیم می‌کند. مقدار پیش‌فرض 2 دقیقه است.

flow_timeout_udp: timeout()

این گزینه یک تایمر keep-alive برای اتصالات UDP در SIP outbound تنظیم می‌کند. مقدار پیش‌فرض 29 ثانیه است.

record_route: URI

هنگامی که گزینه always_record_route روی true تنظیم شده یا از SIP outbound استفاده می‌شود، ejabberd فیلد هدر "Record-Route" را با این URI در پیام SIP درج می‌کند. پیش‌فرض یک URI SIP است که از هاست مجازی که ماژول روی آن بارگذاری شده، ساخته می‌شود.

routes: [URI, ...]

می‌توانید فهرستی از URI های SIP برای مسیرهایی که به این سرور پراکسی SIP اشاره دارند تنظیم کنید. پیش‌فرض فهرستی شامل یک URI SIP است که از هاست مجازی که ماژول روی آن بارگذاری شده، ساخته می‌شود.

via: [URI, ...]

فهرستی برای ساخت هدرهای "Via" جهت درج در پیام‌های SIP خروجی. این گزینه در صورتی مفید است که پراکسی SIP شما در یک توپولوژی شبکه غیراستاندارد اجرا می‌شود. هر عنصر URI در فهرست باید به صورت "scheme://host:port" باشد، که در آن "transport" باید tls، tcp، یا udp باشد، "host" باید یک نام دامنه یا آدرس IP باشد و "port" باید یک شماره پورت اینترنتی باشد. توجه داشته باشید که تمام بخش‌های URI اجباری هستند (مثلاً نمی‌توانید "port" یا "scheme" را حذف کنید).

مثال:

modules:
  mod_sip:
    always_record_route: false
    record_route: "sip:example.com;lr"
    routes:
      - "sip:example.com;lr"
      - "sip:sip.example.com;lr"
    flow_timeout_udp: 30 sec
    flow_timeout_tcp: 1 min
    via:
      - tls://sip-tls.example.com:5061
      - tcp://sip-tcp.example.com:5060
      - udp://sip-udp.example.com:5060

این ماژول پشتیبانی از XEP-0039: Statistics Gathering را اضافه می‌کند. این پروتکل به شما امکان می‌دهد آمارهای زیر را از سرور ejabberd خود دریافت کنید:

•تعداد کل کاربران ثبت‌شده در هاست مجازی فعلی (users/total).
•تعداد کل کاربران ثبت‌شده در تمام هاست‌های مجازی (users/all-hosts/total).
•تعداد کل کاربران آنلاین در هاست مجازی فعلی (users/online).
•تعداد کل کاربران آنلاین در تمام هاست‌های مجازی (users/all-hosts/online).

توجه

این افزونه پروتکل به تعویق افتاده و به نظر می‌رسد حتی تعداد کمی از کلاینت‌هایی که از آن پشتیبانی می‌کردند اکنون رها شده‌اند. بنابراین استفاده از این ماژول چندان منطقی نیست.

این ماژول هیچ گزینه‌ای ندارد.

این ماژول پشتیبانی از XEP-0198: Stream Management را اضافه می‌کند. این پروتکل امکان مدیریت فعال یک جریان XML بین دو موجودیت XMPP را فراهم می‌کند، از جمله ویژگی‌هایی برای تأیید استانزا و از سرگیری جریان.

گزینه‌های موجود:

ack_timeout: timeout()

مدت زمان انتظار برای تأیید استانزاها. تنظیم آن روی infinity عملاً تایم‌اوت را غیرفعال می‌کند. مقدار پیش‌فرض 1 دقیقه است.

cache_life_time: timeout()

همانند گزینه سطح بالای cache_life_time، اما فقط برای این ماژول اعمال می‌شود. مقدار پیش‌فرض 48 hours است.

cache_size: pos_integer() | infinity

همانند گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال می‌شود.

max_ack_queue: Size

این گزینه حداکثر تعداد استانزاهای تأیید نشده‌ای که برای احتمال ارسال مجدد در صف قرار می‌گیرند را مشخص می‌کند. هنگامی که این محدودیت از حد گذشت، نشست کلاینت خاتمه می‌یابد. مقادیر مجاز اعداد صحیح مثبت و infinity هستند. باید در تنظیم این مقدار دقت کنید زیرا نباید خیلی کم تنظیم شود، در غیر این صورت ممکن است نشست‌ها را در یک حلقه متوقف کنید، قبل از اینکه فرصت پایان دادن صحیح به راه‌اندازی نشست را داشته باشند. قطعاً باید بالاتر از اندازه صف آفلاین تنظیم شود (برای مثال حداقل ۳ برابر مقدار حداکثر صف آفلاین و هرگز کمتر از 1000 نباشد). مقدار پیش‌فرض 5000 است.

max_resume_timeout: timeout()

یک کلاینت می‌تواند مدت زمانی را که یک نشست در صورت قطع اتصال تایم‌اوت می‌شود مشخص کند. در این مدت زمان، کلاینت می‌تواند نشست خود را از سر بگیرد. این گزینه مدت زمانی را که کلاینت مجاز است درخواست کند محدود می‌کند. باید روی مقداری مساوی یا بزرگ‌تر از resume_timeout پیش‌فرض تنظیم شود. به طور پیش‌فرض، روی همان مقدار گزینه resume_timeout تنظیم می‌شود.

queue_type: ram | file

همانند گزینه سطح بالای queue_type، اما فقط برای این ماژول اعمال می‌شود.

resend_on_timeout: true | false | if_offline

اگر این گزینه روی true تنظیم شود، هر استانزای پیامی که توسط کلاینت تأیید نشده باشد در هنگام تایم‌اوت نشست مجدداً ارسال می‌شود. این رفتار ممکن است اغلب مطلوب باشد، اما در برخی شرایط می‌تواند نتایج غیرمنتظره‌ای داشته باشد. برای مثال، پیامی که به دو منبع ارسال شده ممکن است به یکی از آن‌ها مجدداً ارسال شود اگر دیگری تایم‌اوت شود. بنابراین مقدار پیش‌فرض این گزینه false است، که به ejabberd می‌گوید به جای آن یک پیام خطا تولید کند. به عنوان جایگزین، گزینه ممکن است روی if_offline تنظیم شود. در این حالت، پیام‌های تأیید نشده تنها در صورتی مجدداً ارسال می‌شوند که هیچ منبع دیگری هنگام تایم‌اوت نشست آنلاین نباشد. در غیر این صورت، پیام‌های خطا تولید می‌شوند.

resume_timeout: timeout()

این گزینه دوره زمانی (پیش‌فرض) را تنظیم می‌کند که در صورت قطع اتصال، یک نشست تایم‌اوت می‌شود. در این مدت زمان، کلاینت می‌تواند نشست خود را از سر بگیرد. توجه داشته باشید که کلاینت می‌تواند مقدار تایم‌اوت متفاوتی درخواست کند، به گزینه max_resume_timeout مراجعه کنید. تنظیم آن روی 0 عملاً از سرگیری نشست را غیرفعال می‌کند. مقدار پیش‌فرض 5 دقیقه است.

توجه درباره این گزینه: در نسخه 20.04 اضافه شده است.

این ماژول به کلاینت‌های XMPP امکان می‌دهد سرویس‌های STUN/TURN را کشف کنند و اعتبارنامه‌های موقت برای استفاده از آن‌ها طبق XEP-0215: External Service Discovery دریافت کنند.

گزینه‌های موجود:

access: AccessName

این گزینه مشخص می‌کند کدام قانون دسترسی برای کنترل اینکه چه کسی مجاز به کشف سرویس‌های STUN/TURN و درخواست اعتبارنامه‌های موقت است، استفاده می‌شود. مقدار پیش‌فرض local است.

credentials_lifetime: timeout()

مدت اعتبار اعتبارنامه‌های موقت ارائه شده به کلاینت‌ها. اگر از سرویس TURN داخلی ejabberd استفاده شود، رله‌های TURN اختصاص‌یافته با اعتبارنامه‌های موقت بلافاصله پس از انقضای اعتبارنامه‌ها خاتمه می‌یابند. مقدار پیش‌فرض 12 hours است. توجه داشته باشید که راه‌اندازی مجدد گره ejabberd هر اعتبارنامه موقتی که قبل از راه‌اندازی مجدد ارائه شده را باطل می‌کند، مگر اینکه یک secret مشخص شده باشد (به زیر مراجعه کنید).

offer_local_services: true | false

این گزینه مشخص می‌کند که آیا سرویس‌های محلی STUN/TURN که به عنوان شنوند ejabberd پیکربندی شده‌اند باید به صورت خودکار اعلام شوند. توجه داشته باشید که این سرویس‌های فعال‌شده با TLS را شامل نمی‌شود، که باید با استفاده از گزینه services به صورت دستی پیکربندی شوند (به زیر مراجعه کنید). برای سرویس‌های TURN غیرناشناس، اعتبارنامه‌های موقت به کلاینت ارائه می‌شوند. مقدار پیش‌فرض true است.

secret: Text

رمز مورد استفاده برای تولید اعتبارنامه‌های موقت. اگر این گزینه مشخص نشود، یک رمز به صورت خودکار تولید می‌شود. با این حال، اگر سرویس‌های TURN غیرناشناس روی سایر گره‌های ejabberd و/یا services TURN خارجی پیکربندی شده باشند، باید یک رمز به صورت صریح مشخص شود. همچنین توجه داشته باشید که رمزهای تولیدشده به صورت خودکار هنگام راه‌اندازی مجدد گره از دست می‌روند، که هر اعتبارنامه‌ای که قبل از راه‌اندازی مجدد ارائه شده را باطل می‌کند. بنابراین توصیه می‌شود اگر کلاینت‌ها اعتبارنامه‌های دریافت‌شده را برای استفاده بعدی در سراسر راه‌اندازی مجدد سرویس ذخیره می‌کنند، یک رمز به صورت صریح مشخص شود.

services: [Service, ...]

فهرست سرویس‌های ارائه شده به کلاینت‌ها. این فهرست می‌تواند شامل سرویس‌های STUN/TURN روی هر گره ejabberd و/یا سرویس‌های خارجی باشد. با این حال، اگر هر سرویس TURN فهرست‌شده‌ای که روی گره ejabberd محلی اجرا نمی‌شود نیاز به احراز هویت داشته باشد، باید یک secret به صورت صریح مشخص شود و با آن سرویس به اشتراک گذاشته شود. این تنها با سرور داخلی STUN/TURN ejabberd و با سرورهای خارجی که از همان REST API For Access To TURN Services پشتیبانی می‌کنند کار خواهد کرد. مگر اینکه offer_local_services روی false تنظیم شود، سرویس‌های فهرست‌شده به صورت صریح علاوه بر سرویس‌هایی که به صورت خودکار اعلام می‌شوند ارائه خواهند شد.

host: Host

نام هاست یا آدرس IP که سرویس STUN/TURN روی آن گوش می‌دهد. برای سرویس‌های غیر TLS، توصیه می‌شود یک آدرس IP مشخص شود (برای جلوگیری از تأخیر اضافی جستجوی DNS در سمت کلاینت). برای سرویس‌های TLS، نام هاست (یا آدرس IP) باید با گواهی مطابقت داشته باشد. مشخص کردن گزینه host اجباری است.

port: 1..65535

شماره پورتی که سرویس STUN/TURN روی آن گوش می‌دهد. شماره پورت پیش‌فرض برای سرویس‌های غیر TLS 3478 و برای سرویس‌های TLS 5349 است.

restricted: true | false

این گزینه تعیین می‌کند که آیا اعتبارنامه‌های موقت برای دسترسی به سرویس ارائه می‌شوند. پیش‌فرض برای سرویس‌های STUN/STUNS false و برای سرویس‌های TURN/TURNS true است.

transport: tcp | udp

پروتکل انتقال پشتیبانی‌شده توسط سرویس. پیش‌فرض برای سرویس‌های غیر TLS udp و برای سرویس‌های TLS tcp است.

type: stun | turn | stuns | turns

نوع سرویس. برای سرویس‌های غیر TLS باید stun یا turn و برای سرویس‌های TLS باید stuns یا turns باشد. نوع پیش‌فرض stun است.

مثال:

services:
  -
    host: 203.0.113.3
    port: 3478
    type: stun
    transport: udp
    restricted: false
  -
    host: 203.0.113.3
    port: 3478
    type: turn
    transport: udp
    restricted: true
  -
    host: 2001:db8::3
    port: 3478
    type: stun
    transport: udp
    restricted: false
  -
    host: 2001:db8::3
    port: 3478
    type: turn
    transport: udp
    restricted: true
  -
    host: server.example.com
    port: 5349
    type: turns
    transport: tcp
    restricted: true

این ماژول پشتیبانی از XEP-0202: Entity Time را اضافه می‌کند. به عبارت دیگر، ماژول زمان سیستم سرور را گزارش می‌دهد.

این ماژول هیچ گزینه‌ای ندارد.

این ماژول به کاربران نهایی اجازه می‌دهد vCard خود را ذخیره و بازیابی کنند، و vCard سایر کاربران را نیز بازیابی نمایند، همان‌طور که در XEP-0054: vcard-temp تعریف شده است. همچنین این ماژول یک دایرکتوری ساده کاربران Jabber بر اساس vCard این کاربران پیاده‌سازی می‌کند. علاوه بر این، سرور را قادر می‌سازد تا در صورت درخواست، vCard خود را ارسال کند.

گزینه‌های موجود:

allow_return_all: true | false

این گزینه به شما امکان می‌دهد مشخص کنید که آیا عملیات جستجو با فیلدهای ورودی خالی باید تمام کاربرانی را که اطلاعاتی به vCard خود اضافه کرده‌اند برگرداند یا خیر. مقدار پیش‌فرض false است.

append_module_config 🟠: {VcardHost: Options}

نکته درباره این گزینه: در نسخه 26.07 اضافه شده است. چند گزینه خاص را به یک هاست آپلود مشخص که قبلاً در گزینه hosts در mod_vcard تعریف شده اضافه می‌کند. در حال حاضر فقط name می‌تواند اینجا تعریف شود. این مشابه گزینه سطح بالای append_host_config است، اما در این حالت برای گزینه‌های این ماژول اعمال می‌شود.

مثال:

modules:
  mod_vcard:
    hosts:
      - service1.@HOST@
      - service2.@HOST@
    name: "Service General"
    append_module_config:
      service1.localhost:
        name: "Service 1"
      service2.example.net:
        name: "Service 2"

cache_life_time: timeout()

همانند گزینه سطح بالای cache_life_time ، اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

همانند گزینه سطح بالای cache_missed ، اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

همانند گزینه سطح بالای cache_size ، اما فقط برای این ماژول اعمال می‌شود.

db_type: mnesia | sql | ldap

همانند گزینه سطح بالای default_db ، اما فقط برای این ماژول اعمال می‌شود.

host

منسوخ شده. به جای آن از hosts استفاده کنید.

hosts: [Host, ...]

این گزینه شناسه‌های Jabber سرویس را تعریف می‌کند. اگر گزینه hosts مشخص نشده باشد، تنها شناسه Jabber، نام هاست میزبان مجازی با پیشوند "vjud." خواهد بود. کلیدواژه @HOST@ با نام واقعی میزبان مجازی جایگزین می‌شود.

matches: pos_integer() | infinity

با این گزینه، تعداد نتایج جستجوی گزارش‌شده را می‌توان محدود کرد. اگر مقدار گزینه روی infinity تنظیم شود، تمام نتایج جستجو گزارش می‌شوند. مقدار پیش‌فرض 30 است.

name: Name

مقدار نام سرویس. این نام فقط در برخی کلاینت‌هایی که از XEP-0030: Service Discovery پشتیبانی می‌کنند نمایش داده می‌شود. پیش‌فرض vCard User Search است.

search: true | false

این گزینه مشخص می‌کند که آیا قابلیت جستجو فعال است یا خیر. در صورت غیرفعال بودن، گزینه‌های hosts ، name و vcard نادیده گرفته می‌شوند و سرویس دایرکتوری کاربران Jabber در فهرست آیتم‌های Service Discovery ظاهر نخواهد شد. مقدار پیش‌فرض false است.

use_cache: true | false

همانند گزینه سطح بالای use_cache ، اما فقط برای این ماژول اعمال می‌شود.

vcard: vCard

یک vCard سفارشی از سرور که توسط برخی کلاینت‌های XMPP در Service Discovery نمایش داده می‌شود. مقدار vCard یک نقشه YAML است که از نمایش XML یک vCard ساخته می‌شود. از آنجا که این نمایش هیچ ویژگی‌ای ندارد، نگاشت ساده است.

مثال:

# This XML representation of vCard:
#
#   <vCard xmlns='vcard-temp'>
#     <FN>Conferences</FN>
#     <ADR>
#       <WORK/>
#       <STREET>Elm Street</STREET>
#     </ADR>
#   </vCard>
#
# is translated to:
#
vcard:
  fn: Conferences
  adr:
    -
      work: true
      street: Elm Street

گزینه‌های موجود برای پشتیبان ldap:

ldap_backups

همانند گزینه سطح بالای ldap_backups ، اما فقط برای این ماژول اعمال می‌شود.

ldap_base

همانند گزینه سطح بالای ldap_base ، اما فقط برای این ماژول اعمال می‌شود.

ldap_deref_aliases

همانند گزینه سطح بالای ldap_deref_aliases ، اما فقط برای این ماژول اعمال می‌شود.

ldap_encrypt

همانند گزینه سطح بالای ldap_encrypt ، اما فقط برای این ماژول اعمال می‌شود.

ldap_filter

همانند گزینه سطح بالای ldap_filter ، اما فقط برای این ماژول اعمال می‌شود.

ldap_password

همانند گزینه سطح بالای ldap_password ، اما فقط برای این ماژول اعمال می‌شود.

ldap_port

همانند گزینه سطح بالای ldap_port ، اما فقط برای این ماژول اعمال می‌شود.

ldap_rootdn

همانند گزینه سطح بالای ldap_rootdn ، اما فقط برای این ماژول اعمال می‌شود.

ldap_search_fields: {Name: Attribute, ...}

این گزینه فرم جستجو و ویژگی‌های LDAP برای جستجو در آن‌ها را تعریف می‌کند. Name نام یک فیلد فرم جستجو است که به‌طور خودکار با استفاده از فایل‌های ترجمه ترجمه می‌شود (برای کلمات موجود به msgs/*.msg مراجعه کنید). Attribute ویژگی LDAP یا الگوی %u است.

مثال‌ها:

مقدار پیش‌فرض:

User: "%u"
"Full Name": displayName
"Given Name": givenName
"Middle Name": initials
"Family Name": sn
Nickname: "%u"
Birthday: birthDay
Country: c
City: l
Email: mail
"Organization Name": o
"Organization Unit": ou

ldap_search_reported: {SearchField: VcardField}, ...}

این گزینه تعریف می‌کند که کدام فیلدهای جستجو باید گزارش شوند. SearchField نام یک فیلد فرم جستجو است که به‌طور خودکار با استفاده از فایل‌های ترجمه ترجمه می‌شود (برای کلمات موجود به msgs/*.msg مراجعه کنید). VcardField نام فیلد vCard تعریف‌شده در گزینه ldap_vcard_map است.

مثال‌ها:

مقدار پیش‌فرض:

"Full Name": FN
"Given Name": FIRST
"Middle Name": MIDDLE
"Family Name": LAST
"Nickname": NICKNAME
"Birthday": BDAY
"Country": CTRY
"City": LOCALITY
"Email": EMAIL
"Organization Name": ORGNAME
"Organization Unit": ORGUNIT

ldap_servers

همانند گزینه سطح بالای ldap_servers ، اما فقط برای این ماژول اعمال می‌شود.

ldap_tls_cacertfile

همانند گزینه سطح بالای ldap_tls_cacertfile ، اما فقط برای این ماژول اعمال می‌شود.

ldap_tls_certfile

همانند گزینه سطح بالای ldap_tls_certfile ، اما فقط برای این ماژول اعمال می‌شود.

ldap_tls_depth

همانند گزینه سطح بالای ldap_tls_depth ، اما فقط برای این ماژول اعمال می‌شود.

ldap_tls_verify

همانند گزینه سطح بالای ldap_tls_verify ، اما فقط برای این ماژول اعمال می‌شود.

ldap_uids

همانند گزینه سطح بالای ldap_uids ، اما فقط برای این ماژول اعمال می‌شود.

ldap_vcard_map: {Name: {Pattern, LDAPattributes}, ...}

با این گزینه می‌توانید جدولی که ویژگی‌های LDAP را به فیلدهای vCard نگاشت می‌کند تنظیم کنید. Name نام نوع vCard است که در RFC 2426 تعریف شده است. Pattern رشته‌ای است که شامل متغیرهای الگو %u ، %d یا %s می‌شود. LDAPattributes لیستی است که ویژگی‌های LDAP را در بر می‌گیرد. متغیرهای الگو %s به‌طور متوالی با مقادیر ویژگی‌های LDAP از List_of_LDAP_attributes جایگزین می‌شوند، %u با بخش کاربری یک JID جایگزین می‌شود، و %d با بخش دامنه یک JID جایگزین می‌شود.

مثال‌ها:

مقدار پیش‌فرض:

NICKNAME: {"%u": []}
FN: {"%s": [displayName]}
LAST: {"%s": [sn]}
FIRST: {"%s": [givenName]}
MIDDLE: {"%s": [initials]}
ORGNAME: {"%s": [o]}
ORGUNIT: {"%s": [ou]}
CTRY: {"%s": [c]}
LOCALITY: {"%s": [l]}
STREET: {"%s": [street]}
REGION: {"%s": [st]}
PCODE: {"%s": [postalCode]}
TITLE: {"%s": [title]}
URL: {"%s": [labeleduri]}
DESC: {"%s": [description]}
TEL: {"%s": [telephoneNumber]}
EMAIL: {"%s": [mail]}
BDAY: {"%s": [birthDay]}
ROLE: {"%s": [employeeType]}
PHOTO: {"%s": [jpegPhoto]}

گزینه‌های موجود برای پشتیبان mnesia:

search_all_hosts: true | false

آیا جستجو روی تمام میزبان‌های مجازی انجام شود یا خیر. مقدار پیش‌فرض true است.

کلاینت کاربر می‌تواند یک آواتار را در vCard کاربر ذخیره کند. پروتکل آواتارهای مبتنی بر vCard (XEP-0153) روشی برای کلاینت‌ها فراهم می‌کند تا به مخاطبین اطلاع دهند که مقدار هش آواتار چیست. با این حال، کلاینت‌های ساده یا کوچک ممکن است این پروتکل را پیاده‌سازی نکنند.

اگر این ماژول فعال باشد، تمام استانزاهای presence خروجی کلاینت به‌طور خودکار هش آواتار را از طرف کلاینت دریافت می‌کنند. بنابراین، مخاطبین استانزاهای presence را با Update Data شرح‌داده‌شده در XEP-0153 دریافت می‌کنند، انگار که کلاینت خودش آن را درج کرده بود. اگر کلاینت از قبل چنین عنصری را در استانزای presence قرار داده بود، با عنصر تولیدشده توسط ejabberd جایگزین می‌شود.

با فعال‌سازی این ماژول، هر تغییر در vCard موجب محاسبه مجدد هش می‌شود، و هر presence ارسال‌شده توسط کلاینت موجب بازیابی هش و بازنویسی استانزای presence می‌شود. به همین دلیل، فعال‌سازی این ماژول سربار محاسباتی را در سرورهایی با کلاینت‌هایی که به‌طور مکرر presence خود را تغییر می‌دهند افزایش می‌دهد. با این حال، استفاده از حافظه نهان این سربار را به‌طور قابل توجهی کاهش می‌دهد، بنابراین احتمالاً نمی‌خواهید use_cache را روی false تنظیم کنید.

این ماژول به mod_vcard وابسته است.


توجه

امروزه XEP-0153 عمدتاً به‌صورت «فقط خواندنی» استفاده می‌شود، یعنی کلاینت‌های مدرن آواتارهای خود را درون vCard منتشر نمی‌کنند. بنابراین در اکثر موارد این ماژول فقط در کنار mod_avatar برای تأمین سازگاری با نسخه‌های قدیمی استفاده می‌شود.

گزینه‌های موجود:

cache_life_time: timeout()

همانند گزینه سطح بالای cache_life_time، اما فقط برای این ماژول اعمال می‌شود.

cache_missed: true | false

همانند گزینه سطح بالای cache_missed، اما فقط برای این ماژول اعمال می‌شود.

cache_size: pos_integer() | infinity

همانند گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال می‌شود.

use_cache: true | false

همانند گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال می‌شود.

این ماژول XEP-0092: Software Version را پیاده‌سازی می‌کند. در نتیجه، هنگام دریافت درخواست، نسخه ejabberd را پاسخ می‌دهد.

گزینه‌های موجود:

show_os: true | false

آیا سیستم‌عامل فاش شود یا خیر. مقدار پیش‌فرض true است.

این بخش گزینه‌های شنوندگان ejabberd 26.07 را توضیح می‌دهد.

TODO

ProcessOne.

این سند فایل پیکربندی ejabberd 26.07 را توضیح می‌دهد. گزینه‌های پیکربندی نسخه‌های دیگر ejabberd ممکن است تفاوت قابل توجهی داشته باشند.

باگ‌ها را به آدرس https://github.com/processone/ejabberd/issues گزارش دهید.

فایل پیکربندی پیش‌فرض: https://github.com/processone/ejabberd/blob/26.07/ejabberd.yml.example

سایت اصلی: https://ejabberd.im

مستندات: https://docs.ejabberd.im

راهنمای پیکربندی: https://docs.ejabberd.im/admin/configuration

کد منبع: https://github.com/processone/ejabberd

Copyright (c) 2002-2026 ProcessOne.

07/30/2026