# mailctl

> إعداد البريد الإلكتروني للنطاقات الخاصة بطريقة تصريحية.

ملف YAML واحد يصف سجلات DNS وصناديق البريد والأسماء البديلة والتوجيه وسياسة قابلية التسليم لكل نطاق تملكه.

يقرأ mailctl الحالة الحية من كل مزوّد، ويقارنها بذلك الملف، ويطبع خطة مرتّبة، ثم ينفّذ ما طبعه بالضبط. ملف Go تنفيذي واحد، بلا خدمة خلفية ولا ملف حالة ولا قفل.

[ابدأ الآن](quickstart.html) [التثبيت](install.html) [GitHub](https://github.com/zoolcoder/mailctl)

```console
$ mailctl plan

example.com
-----------
  CREATE  dns         MX example.com -> mailserver.purelymail.com  [purelymail]
  CREATE  dns         TXT example.com -> v=spf1 include:_spf.purelymail.com ~all
  CREATE  dns         CNAME purelymail1._domainkey.example.com
  CREATE  domain      add example.com  [purelymail]
  CREATE  mailbox     create contact@example.com  [purelymail]

9 actions

Run `mailctl apply` to make these changes.
```

## ما الذي يديره

-   **النطاقات**  
    يسجّل النطاق لدى مزوّد البريد ويُكمل التحقق من ملكيته.
    
-   **DNS**  
    ينشر سجلات MX وSPF وDKIM وDMARC وMTA-STS وTLS-RPT وBIMI في Cloudflare، ويرفض الكتابة فوق سجلات لا يعرفها.
    
-   **صناديق البريد**  
    ينشئ صناديق بريد حقيقية لدى المزوّد، ويولّد بيانات اعتماد حين لا تقدّمها، ويبلّغ عنها مرة واحدة فقط.
    
-   **قابلية التسليم**  
    يدمج متطلبات SPF لكل المزوّدين في سجل TXT الوحيد الذي يسمح به RFC 7208، ويمكنه نشر Worker يقدّم سياسة MTA-STS.
    

## المزوّدون

    
| المزوّد | الوارد | صناديق البريد | الأسماء البديلة | الالتقاط الشامل |
| --- | --- | --- | --- | --- |
| 
[Purelymail](providers/purelymail.html)

 | 

نعم

 | 

نعم

 | 

نعم

 | 

نعم

 |
| 

[Microsoft 365](providers/ms365.html)

 | 

نعم

 | 

نعم

 | 

لا

 | 

لا

 |
| 

[Cloudflare Email Routing](providers/cloudflare.html)

 | 

نعم

 | 

—

 | 

نعم

 | 

نعم

 |
| 

[Cloudflare Email Sending](providers/cloudflare.html)

 | 

صادر

 | 

—

 | 

—

 | 

—

 |

لا يدعم Microsoft 365 الأسماء البديلة والالتقاط الشامل لا لأن mailctl يرفض تنفيذها: فواجهة Graph تعرض `proxyAddresses` للقراءة فقط ولا تقدّم أي واجهة للالتقاط الشامل. يرفض mailctl هذه الكتل في الإعداد بخطأ يذكر مركز الإدارة، بدل أن يقبلها ولا يفعل شيئًا.

## ثلاث أفكار تحمل الأداة كلها

الحالة المطلوبة

ملف YAML هو الوصف الوحيد لما يجب أن يوجد. لا يُخزَّن شيء في مكان آخر، فلا انحراف بين تصوّر mailctl للعالم والعالم نفسه.

خطّط ثم طبّق

يقرأ `plan` الحالة الحية ويقارنها ويطبع قائمة مرتّبة من الإجراءات. لا يغيّر شيئًا، ولا يقوم بأي إدخال أو إخراج بعد بدء التخطيط. وينفّذ `apply` تلك القائمة بالضبط. ويعرض `mailctl ui` الخطة والتدقيق نفسيهما في المتصفح بدل الطرفية، للقراءة فقط في هذا الإصدار، ويعطي `plan -json` قائمة الإجراءات نفسها بصيغة JSON لاستخدامها في نص برمجي.

التكرار الآمن

تشغيل `apply` مرتين يساوي تشغيله مرة واحدة. النطاق المتقارب يبلّغ `No changes.`، وهذا ما يجعل تشغيل الأداة من الطرفية آمنًا في أي وقت.

## ما لا يفعله عمدًا

لا يتظاهر mailctl. حين لا تستطيع واجهة المزوّد التعبير عن شيء ما، يرفضه الإعداد بخطأ يذكر الطريق اليدوي، بدل أن يقبل الإعداد ويتجاهله. فالإعداد المتجاهَل يبدو كأنه نافذ، وهذا أسوأ من الخطأ: `requireTwoFactorAuthentication` المتجاهَل يبدو تمامًا كمصادقة ثنائية مفروضة.

كل ما قد يُضيّع البريد صعب عمدًا: حذف صندوق بريد يتطلب `-prune` **و** `-prune-mailboxes`، ثم تأكيدًا يطلب منك كتابة اسم النطاق.

## إلى أين بعد ذلك

-   [البدء السريع](quickstart.html)  
    نطاق واحد، من لا شيء إلى بريد يعمل، مع سبب توقّف أول تطبيق في منتصف الطريق.
    
-   [وصفات](recipes.html)  
    إعدادات كاملة لحالات شائعة: صناديق بريد حقيقية، تحويل فقط، Microsoft 365، وتبنّي نطاق قائم.
    
-   [صفحة الإدارة](ui.html)  
    خطّط ودقّق من المتصفح، بالعربية أو الإنجليزية، دون أن يُطبَّق شيء من وراء ظهرك.
    
-   [كيف يعمل](how-it-works.html)  
    المسار من الإعداد إلى الخطة المطبّقة، وترتيب تنفيذ الإجراءات، وكيف يُحكم على تعارضات DNS.
    
-   [الإعداد](configuration.html)  
    كل مفتاح في الملف، وقواعد التحقق التي تلتقط الأخطاء الشائعة.
    
-   [الأوامر](commands.html)  
    كل أمر وخيار، ولماذا يعمل الحذف بالطريقة التي يعمل بها.
    
-   [بيانات الاعتماد](environment.html)  
    كيف تُعامَل الرموز وكلمات سر صناديق البريد المولّدة، والضمانات المحيطة بها.
    
-   [قابلية التسليم](deliverability.html)  
    SPF وDKIM وDMARC وMTA-STS وTLS-RPT وBIMI، وترتيب معقول لتفعيلها.
    
-   [استكشاف الأخطاء](troubleshooting.html)  
    الأخطاء التي يقع فيها الناس فعلًا، ومعنى كل منها.
    

## المشروع

mailctl مفتوح المصدر بموجب رخصة MIT.

-   [الشيفرة على GitHub](https://github.com/zoolcoder/mailctl)
    
-   [المساهمة](https://github.com/zoolcoder/mailctl/blob/main/CONTRIBUTING.md): الأعراف التي تلتزم بها الشيفرة
    
-   [الأمان](security.html): ضمانات التعامل مع بيانات الاعتماد، وكيفية الإبلاغ عن ثغرة بشكل خاص
    
-   [خارطة الطريق](https://github.com/zoolcoder/mailctl/blob/main/ROADMAP.md): ما هو مخطط له، وما لن يُنفَّذ عمدًا، ولماذا
