صفحه اصلی دندانپزشکی دقیق inurl sendmail php. ارسال ایمیل با استفاده از php

دقیق inurl sendmail php. ارسال ایمیل با استفاده از php

رفتار این توابع تحت تأثیر تنظیمات در php.ini قرار می گیرد.

گزینه های پیکربندی ایمیل
نام پیش فرض قابل تغییر است تغییرات
mail.add_x_header "0" PHP_INI_PERDIR از PHP 5.3.0 در دسترس است.
mail.log NULL PHP_INI_PERDIR از PHP 5.3.0 در دسترس است. (PHP_INI_SYSTEM|PHP_INI_PERDIR)
mail.force_extra_parameters NULL PHP_INI_PERDIR از PHP 5.0.0 در دسترس است. (PHP_INI_SYSTEM|PHP_INI_PERDIR)
SMTP "localhost" PHP_INI_ALL
smtp_port "25" PHP_INI_ALL
sendmail_from NULL PHP_INI_ALL
sendmail_path "/usr/sbin/sendmail -t -i" PHP_INI_SYSTEM
برای جزئیات بیشتر و تعاریف حالت‌های PHP_INI_*، به بخش مراجعه کنید.

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

اضافه کنید X-PHP-Originating-Scriptکه شامل UID اسکریپت و به دنبال آن نام فایل است.

ایمیل.log رشته

مسیر یک فایل گزارش که همه را ثبت می کند نامه ()تماس می گیرد. ورودی های گزارش شامل مسیر کامل اسکریپت، شماره خط،به

آدرس و سربرگ رشته

Mail.force_extra_parameters اضافه کردن پارامترهای مشخص شده را مجبور کنید به عنوان پارامترهای اضافی به باینری sendmail ارسال شود. این پارامترهاهمیشه خواهد بود نامه ()مقدار پارامتر پنجم را جایگزین کنید

، حتی در حالت ایمن. رشته

SMTP نامه ()فقط تحت ویندوز استفاده می شود: نام میزبان یا آدرس IP سرور SMTP PHP باید برای نامه های ارسال شده با

تابع Smtp_port

بین المللی SMTPفقط تحت ویندوز استفاده می شود: تعداد پورت برای اتصال به سرور مشخص شده با نامه ()تنظیم هنگام ارسال نامه با

; پیش فرض 25 است. رشته

Sendmail_from کدام"از:" آدرس پست الکترونیکی باید در نامه های ارسال شده از PHP تحت ویندوز استفاده شود.این بخشنامه همچنین تعیین می کند

"مسیر بازگشت:" رشته

هدر Sendmail_pathجایی که ارسال ایمیلبرنامه را می توان پیدا کرد، معمولا /usr/sbin/sendmail یا /usr/lib/sendmail. پیکربندی کنیدتلاش صادقانه ای برای یافتن این مورد برای شما انجام می دهد

و تنظیم کنید Sendmail_pathدر صورت وجود، باید این دستورالعمل را روی بسته بندی/جایگزینی sendmail تنظیم کنند.

به عنوان مثال، » کاربران Qmail معمولاً می توانند آن را روی /var/qmail/bin/sendmail یا /var/qmail/bin/qmail-inject تنظیم کنند. qmail-inject

برای پردازش صحیح نامه به هیچ گزینه ای نیاز ندارد.

این دستورالعمل در ویندوز نیز کار می کند. در صورت تنظیم، smtp، smtp_port و sendmail_from نادیده گرفته می شوند و دستور مشخص شده اجرا می شود.

5 سال پیش

در اوبونتو 13.04، از سایر Distros مطمئن نیستم.

اگر به سادگی کامنت پیش فرض را لغو کنید:

sendmail_path = "sendmail -t -i"

همه توابع mail() شما از کار خواهند افتاد. این به این دلیل است که شما باید مسیر کامل (به عنوان مثال /usr/sbin/sendmail -t -i) را قرار دهید.

مستندات بیان می‌کنند که PHP بهترین کار را می‌کند تا مسیر صحیح ارسال ایمیل را پیدا کند، اما به وضوح برای من شکست خورده است.

بنابراین، همیشه برای ارسال ایمیل وارد FULLPATH شوید یا ممکن است نتایج ناموفق غیرمنتظره ای دریافت کنید.

به عنوان نکته ثانویه: کسانی که فقط می خواهند پارامتر -f را اعمال کنند، می توانید این کار را در php.ini با استفاده از: mail.force_extra_parameters =

[ایمیل محافظت شده]

می‌توانید مسیر sendmail را به صورت نظر رها کنید، همچنان از پیش‌فرض‌ها استفاده می‌کند (تحت گزینه‌های UNIX -t -i که اگر جستجو کنید تنظیم آن بسیار مهم است).

اما، در حال حاضر هیچ راهی برای تغییر این وجود ندارد، حتی با آرگومان پنجم تابع mail(). -f مهم است، زیرا اگر تنظیم نشود، برای هر کاربری که اسکریپت PHP تحت آن اجرا می شود تنظیم می شود، و ممکن است شما آن را نخواهید. همچنین -f هدر Return-Path: را تنظیم می کند که در صورت بروز خطا به عنوان آدرس Bounce استفاده می شود تا بتوانید آنها را پردازش کنید.تو تو

به دلایلی نمی توان Return-Path: را در هدرهای mail() تنظیم کرد... قبلاً می توانستید. حالا باید از گزینه -f استفاده کنید.

2 سال پیش
اگر کسی این پیغام خطای مرموز را در گزارش های خطای PHP دریافت کرد:
"sh: -t: دستور پیدا نشد"

پس از ارتقاء از PHP 5.4، این ممکن است راه حل شما باشد.

من PHP را از 5.4 به 5.6 ارتقا دادم و همه عملکردهای mail() ما ناگهان خراب شد، بدون ثبت خطای مفید.

فایل ini؛ اگر از ini_set() برای تعیین مسیری به باینری sendmail در حال حرکت استفاده کنید، اکنون نادیده گرفته می شود.

بنابراین، به جای آن فقط "sendmail_path" را در php.ini مشخص کنید. این تنها چیزی است که در آن وجود دارد -- که تمام عملکردهای mail() را برای ما ثابت کرد.

امیدوارم این یادداشت کوچک به اندازه ای که من برای عیب یابی و تحقیق صرف کردم، در زمان دیگری صرفه جویی کند. به سلامتی

3 سال پیش

تنظیم مسیر برگشت:

هدر مسیر بازگشت کار نمی کند زیرا بخشی از smtp نیست.
روی *nix -f ممکن است روی دستور mail تنظیم شود
جایگزین
توجه: بعد از "از" علامت دو نقطه وجود ندارد، باید اولین خط سرصفحه باشد
یا ممکن است بتوانید MTA خود را برای تفسیر هدرهای مسیر بازگشت مجدداً پیکربندی کنید

F قابل اعتمادترین روش است اما ممکن است به این معنی باشد که به دلیل مشکلات فرار از پوسته نمی توانید هیچ گزینه دیگری در خط فرمان تنظیم کنید.

همچنین توجه داشته باشید که الزامات قالب بندی ایمیل بین ویندوز و هر چیز دیگری متفاوت است. sendmail فقط \n پایان خط را انتظار دارد

من اخیراً یک سرور خانگی راه اندازی کردم و باید ارسال نامه را در آنجا آزمایش کنم. اما مشکل اینجاست: هنگام درخواست صفحه ای که نامه می فرستد، یک خطای 500 ظاهر شد.

مشکل

شروع کردم به دیدن اینکه چه خبر است. هیچ چیز جالبی در لاگ های php-fpm وجود ندارد، در لاگ های nginx می توانید ببینید که php-fpm به دلیل وقفه در حال خراب شدن است.

2013/04/18 15:28:01 6928#0: *1409 بالادست زمان تمام شد (110: زمان اتصال تمام شد) هنگام خواندن سرصفحه پاسخ از بالادست، سرویس گیرنده: xx.xx.xx.xx، سرور: , درخواست: "POST /page.php HTTP/1.1، upstream: "fastcgi://127.0.0.1:9010"، میزبان: "site.ru"، ارجاع دهنده: "http://site.ru"

و سپس این ایده به ذهنم رسید که به syslog نگاه کنم. در آنجا خطوط جالبی دیدم:

9 سپتامبر 18:53:20 مگا sm-msp-queue: نام میزبان نامشخص من (مگا) ناشناخته. خواب برای امتحان مجدد 9 سپتامبر 18:54:20 مگا sm-msp-queue: نمی توانم نام دامنه خودم (مگا) را واجد شرایط کنم -- با استفاده از نام کوتاه

بله، من شروع به گناه در جهت sendmail کردم. سعی میکنم با دستور ریستارتش کنم:

راه اندازی مجدد sendmail سرویس Sudo

و من تایید حدس خود را می بینم.

Andrey@mega:/home/andrey# sudoservice sendmail راه اندازی مجدد sudo: قادر به حل و فصل میزبان xyz.xyz نیست * راه اندازی مجدد Mail Transport Agent (MTA) sendmail andrey@mega:/home/andrey#

راه حل

مشکل از نام سرور بود. بعد از اینکه نام سرور را به این صورت (با یک نقطه) تنظیم کردم، همه چیز همانطور که باید کار کرد.

127.0.0.1 localhost localhost.localdomain mega.foobar

متشکرم

اگر این مقاله به شما کمک کرد یا می‌خواهید از تحقیقات و وبلاگ من حمایت کنید، اینجا بروید بهترین راهاین کار را انجام دهید:

هر بار که یک وب سرور محلی راه‌اندازی می‌کنم، با سؤالی در مورد یک خرد برای Sendmail مواجه می‌شوم.

یک راه حل عالی برای ویندوز وجود دارد: ارسال ایمیل جعلی برای ویندوز(sendmail.exe) http://glob.com.au/sendmail/
مقاله ای در Habré در مورد این راه حل وجود دارد: نامه PHP برای ویندوز http://habrahabr.ru/post/26518/
راه حل دیگر برای ویندوز: تست ابزار سرور ایمیل http://www.toolheap.com/test-mail-server-tool/
همچنین یک مقاله برای کاربران لینوکس وجود دارد: Sendmail خرد برای لینوکس http://habrahabr.ru/post/49665/

من شخصاً راه حل در PHP خالص را بیشتر دوست داشتم که در ادامه بحث خواهد شد.

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

سوال این است که اولویت‌های شما به‌عنوان یک توسعه‌دهنده، نیازهای شما و سطح دانش و مهارت شما چیست.

جوانب مثبت:

  • بدون خدمات شخص ثالث
  • راه حل بین پلتفرمی برای سیستم عاملی که PHP روی آن نصب شده است
  • حداقل اندازه فایل خرد
  • تنظیم حداقل
  • تمام منطق های خرد در PHP قابل ویرایش هستند
  • ذخیره یک پیام در یک فایل

از معایب:

  • بدون ارسال به صندوق پستی واقعی
  • عدم دسترسی راحت به پیام های ارسالی

فهرست آرگومان‌های خرد و قابلیت‌ها:

  • -- کارگردان<Путь к папке> - پوشه فایل
  • -- فایل<имя файла> - هر پیام را در یک فایل مشترک خاص ذخیره کنید
  • -- آماده کردن- یک پیام جدید به ابتدای فایل به اشتراک گذاشته شده اضافه کنید
  • --باز کردن- باز کردن خودکار فایل پیام در Notepad

پارامترهای فایل PHP.INI:

;SMTP = localhost ;smtp_port = 25 ;sendmail_from = mail.force_extra_parameters = sendmail_path = "php.exe C:\sendmail.php --dir C:\mail --open"

اگر مسیر php.exe در PATH مشخص شده است، لازم نیست آن را در PHP.INI مشخص کنید، در غیر این صورت توصیه می شود php.exe را به تغییر دهید.<Путь к папке с PHP>\php.exe

Sendmail_path = "C:\server\bin\php\php.exe C:\sendmail.php --dir C:\mail --open"

در لینوکس، می توانید بلافاصله مسیر فایل را مشخص کنید، فراموش نکنید که ابتدا آن را قابل راه اندازی کنید: chmod 755 sendmail.php
sendmail_path = "/home/someuser/sendmail.php --dir /tmp/mail"

خود اسکریپت sendmail.php:

#!/usr/bin/env php

همانطور که قول داده بودم، گزینه انجام بدون فایل نیز وجود دارد.

Sendmail_path = "C:\server\bin\php\php.exe -r "echo 1;"

یا از یک راه حل ساده استفاده کنید

Sendmail_path = "C:\server\bin\php\php.exe C:\sendmail.php"

sendmail.php:

#!/usr/bin/env php

خوشحال می شوم اگر این برای شما مفید باشد.

هر بار که یک وب سرور محلی راه‌اندازی می‌کنم، با سؤالی در مورد یک خرد برای Sendmail مواجه می‌شوم.

یک راه حل عالی برای ویندوز وجود دارد: ارسال ایمیل جعلی برای ویندوز(sendmail.exe) http://glob.com.au/sendmail/
مقاله ای در Habré در مورد این راه حل وجود دارد: نامه PHP برای ویندوز
راه حل دیگر برای ویندوز: تست ابزار سرور ایمیل http://www.toolheap.com/test-mail-server-tool/
همچنین یک مقاله برای کاربران لینوکس وجود دارد: Sendmail خرد برای لینوکس

من شخصاً راه حل در PHP خالص را بیشتر دوست داشتم که در ادامه بحث خواهد شد.

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

سوال این است که اولویت‌های شما به‌عنوان یک توسعه‌دهنده، نیازهای شما و سطح دانش و مهارت شما چیست.

جوانب مثبت:

  • بدون خدمات شخص ثالث
  • راه حل بین پلتفرمی برای سیستم عاملی که PHP روی آن نصب شده است
  • حداقل اندازه فایل خرد
  • تنظیم حداقل
  • تمام منطق های خرد در PHP قابل ویرایش هستند
  • ذخیره یک پیام در یک فایل

از معایب:

  • بدون ارسال به صندوق پستی واقعی
  • عدم دسترسی راحت به پیام های ارسالی

فهرست آرگومان‌های خرد و قابلیت‌ها:

  • -- کارگردان<Путь к папке> - پوشه فایل
  • -- فایل<имя файла> - هر پیام را در یک فایل مشترک خاص ذخیره کنید
  • -- آماده کردن- یک پیام جدید به ابتدای فایل به اشتراک گذاشته شده اضافه کنید
  • --باز کردن- باز کردن خودکار فایل پیام در Notepad

پارامترهای فایل PHP.INI:

;SMTP = localhost ;smtp_port = 25 ;sendmail_from = mail.force_extra_parameters = sendmail_path = "php.exe C:\sendmail.php --dir C:\mail --open"

اگر مسیر php.exe در PATH مشخص شده است، لازم نیست آن را در PHP.INI مشخص کنید، در غیر این صورت توصیه می شود php.exe را به تغییر دهید.<Путь к папке с PHP>\php.exe

Sendmail_path = "C:\server\bin\php\php.exe C:\sendmail.php --dir C:\mail --open"

در لینوکس، می توانید بلافاصله مسیر فایل را مشخص کنید، فراموش نکنید که ابتدا آن را قابل راه اندازی کنید: chmod 755 sendmail.php
sendmail_path = "/home/someuser/sendmail.php --dir /tmp/mail"

خود اسکریپت sendmail.php:

#!/usr/bin/env php

همانطور که قول داده بودم، گزینه انجام بدون فایل نیز وجود دارد.

Sendmail_path = "C:\server\bin\php\php.exe -r "echo 1;"

یا از یک راه حل ساده استفاده کنید

Sendmail_path = "C:\server\bin\php\php.exe C:\sendmail.php"

sendmail.php:

#!/usr/bin/env php

خوشحال می شوم اگر این برای شما مفید باشد.

سرگئی سوپرونوف

Sendmail چگونه کار می کند؟ جزئیات مفید

بخش 4: تعامل با برنامه های شخص ثالث

گله و پدر با شما مهربانند.

حکمت مردم برادر

مهم نیست که Sendmail چقدر منعطف و کاربردی باشد، توانایی های آن همیشه برای حل انواع مشکلات کافی نیست. اما خوبی در مورد باز بودن نرم افزار این است که به شما امکان افزایش قدرت را تقریباً بدون محدودیت می دهد.

چیزی به نام محافظت بیش از حد وجود ندارد

Sendmail، همانطور که در قسمت های قبلی مقاله نشان داده شده است (شماره 5، 6، 7 برای سال 2006 - ; http ://www. samag. ru/cgi-bin/ go. pl q= مقالات; n=06.2006; a=02; )، با استفاده از فایل مستعار یا فایل های سفارشی .forward، اجازه می دهد تا پیام های دریافتی را برای پردازش توسط برنامه های شخص ثالث هدایت کنید. خود مکانیسم بسیار ساده است: نامه در قالب اصلی خود به ورودی استاندارد (stdin) برنامه یا اسکریپت مشخص شده ارسال می شود و سپس آن را پردازش می کند. یک مثال ساده از پیاده سازی چنین سناریویی در پایتون را می توان در مقاله "کارگاه پایتون: پردازش ایمیل های دریافتی" (شماره 2، 2006 - http یافت) ://www. samag. ru/cgi-bin/ go. pl q= مقالات; n=02.2006; a=01).

با این حال، در اینجا یک مشکل امنیتی بالقوه وجود دارد - اگر کاربر توانایی تعیین مستقل هر برنامه ای را به عنوان کنترل کننده نامه داشته باشد، همیشه این احتمال وجود دارد که او از آن برای فراخوانی غیرمجاز برنامه ای استفاده کند که معمولاً به آن دسترسی ندارد ( به عنوان مثال، دسترسی به پوسته فرمان داده نمی شود، اما می توان از طریق رابط وب در فایل .forward تغییراتی ایجاد کرد. البته، Sendmail با اجرای فرآیندی که این پردازش را از طرف کاربر مالک فایل .forward انجام می دهد، تأثیر منفی این ویژگی را به حداقل می رساند. اما نباید فراموش کنیم که ممکن است فایل های اجرایی روی سیستم وجود داشته باشند که دارای مجموعه بیت suid هستند که در برخی موارد می تواند عواقب ناگواری را به دنبال داشته باشد...

برای حل این مشکل، Sendmail را می توان طوری پیکربندی کرد که با یک "پوسته محدود برای sendmail" - smrsh کار کند. ویژگی این پوسته این است که به شما امکان می دهد برنامه ها را فقط از دایرکتوری خود در سیستم های FreeBSD اجرا کنید، به طور پیش فرض این /usr/libexec/sm.bin است (می توانید آن را با کامپایل مجدد ابزار با پرچم -DSMRSH_CMDDIR تغییر دهید. .

بهتر است با یک مثال ببینید که چگونه این کار را انجام می دهد (بعد از سوئیچ -c نام برنامه در حال اجرا مشخص شد):

#pwd

/usr/libexec/sm.bin

# ls –l

کل 0

# /usr/libexec/smrsh -c w

10:01 صبح تا 20 روز، 21:44، 1 کاربر، میانگین بارگیری: 0.00، 0.02، 0.00

کاربر TTY از LOGIN@ IDLE WHAT

serg p0 curs3.myserver. 8:48 - /usr/libexec/sm.bin/w

# /usr/libexec/smrsh -c who

/usr/libexec/smrsh: "who" برای برنامه های sendmail در دسترس نیست (آمار ناموفق بود)

# /usr/libexec/smrsh -c thetest

تست SMRSH

همانطور که می بینید، smrsh به شما اجازه می دهد فقط برنامه هایی را اجرا کنید که لینک های آنها (یا خود باینری ها) در /usr/libexec/sm.bin قرار دارند. همین امر در مورد اسکریپت ها نیز صدق می کند - کافی است پیوندی به اسکریپت ارائه دهید، نیازی به ایجاد پیوند به مترجم نیست. در صورت تمایل می توانید از هر نام برنامه ای استفاده کنید - نام پیوند استفاده می شود، نه نام اصلی "باینری".

برای اینکه Sendmail از این پوسته به جای شل استاندارد sh برای مدیریت تغییر مسیرها استفاده کند، خط زیر را به فایل mc اضافه کنید:

ویژگی (smrsh)

کسانی که دوست دارند فایل cf را ​​ویرایش کنند می توانند نام برنامه را در خط Mprog جایگزین کنند، یعنی. به جای “Mprog, P=/bin/sh . . . "از" Mprog، P=/usr/libexec/smrsh استفاده کنید. . . "

ورود فقط با کارت

اگر انتظار می رود همه کاربران شما فقط از زیر شبکه شما کار کنند (یا در موارد شدید، یک لیست محدود و پایدار از شبکه های خارجی برای دسترسی به نامه وجود دارد)، پس وظیفه محدود کردن حالت رله نامه به گونه ای است که MTA شما تبدیل نمی شود. یک "رله باز" را می توان به راحتی با استفاده از دسترسی حل کرد.

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

شاید راحت ترین تکنیک برای Sendmail استفاده از احراز هویت SASL با استفاده از بسته SASL-Auth باشد. به طور پیش فرض، Sendmail در FreeBSD بدون پشتیبانی SASL ساخته شده است، همانطور که می توانید با صدور دستور زیر تأیید کنید:

$ sendmail -d0.1 -bv

و با مطالعه دقیق خطوط "کامپایل شده با" برای هرگونه ذکر SASL.

برای اینکه پشتیبانی SASL در Sendmail ظاهر شود، باید آن را بازسازی کنید. برای این کار باید کدهای منبع سیستم را داشته باشید. ترتیب اقدامات به شرح زیر است:

  1. از پورت های security/cyrus-sasl2-saslauthd نصب کنید. پیکربندی را می توان به عنوان پیش فرض باقی گذاشت.
  2. در فایل /usr/local/lib/sasl2/Sendmail.conf مقدار متغیر pwcheck_method را بررسی می کنیم. به طور پیش فرض به عنوان saslauthd تعریف می شود، به این معنی که از یک دیمون عمومی استفاده می کند و در اکثر موارد راه حل خوبی خواهد بود.
  3. ما /etc/make.conf را ویرایش می‌کنیم و چندین خط را در آنجا اضافه می‌کنیم که هنگام ساختن برنامه‌های سیستم استفاده می‌شوند:
  4. # پرچم SASL برای Sendmail

    SENDMAIL_CFLAGS=-I/usr/local/include -DSASL=2

    SENDMAIL_LDFLAGS=-L/usr/local/lib

    SENDMAIL_LDADD=-lsasl2

    # پشتیبانی از پورت smtps برای sendmail (در صورت برنامه ریزی)

    SENDMAIL_CFLAGS+= -D_FER_SMTP_SSL

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

  5. حالا بیایید Sendmail را بازسازی کنیم:

# سی دی /usr/src/lib/libsmutil/

# سی دی ../libsm

# تمیز کردن && وابسته کردن && ساختن

# cd /usr/src/usr.sbin/sendmail

# تمیز کردن && وابسته کردن &&&&&& را نصب کنید

حتما مطمئن شوید که قبلا پکیج cyrus-sasl را نصب کرده اید (نقطه 1 را ببینید) در غیر این صورت با خطای عدم وجود کتابخانه های لازم مواجه خواهید شد. به هر حال، برای اینکه این کتابخانه ها مجبور نباشند در کل دیسک جستجو شوند، اکیداً توصیه می شود همه چیز را فقط از سیستم پورت ها نصب کنید.

در خروجی باید SASLv2 ذکر شود:

$ sendmail -d0.1 –bv

نسخه 8.13.6

تالیف شده با: . . SASLv2. . .

این بدان معنی است که تنها چیزی که باقی می ماند این است که در صورت لزوم پیکربندی Sendmail را تنظیم کنید و می توانید عملکرد سیستم را بررسی کنید. اولین چیزی که ممکن است نیاز به پیکربندی داشته باشد، لیست روش های تأیید اعتبار مجاز است. با اتصال از طریق telnet به پورت 25 و وارد کردن دستور EHLO می‌توانید بلافاصله پس از کامپایل‌سازی مجدد متوجه شوید:

$تلنت لوکال هاست 25

در حال امتحان 127.0.0.1...

به لوکال هاست متصل است.

کاراکتر فرار "^]" است.

220 server.ru ESMTP Sendmail 8.13.6/8.13.6;

EHLO من

250-server.ru سلام localhost، از آشنایی با شما خوشحالم

250-وضعیت بهبودیافته

250-PIPELINING

250-8BITMIME

250-سایز 12500000

250-DSN

250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5

250-تحویل

250 کمک

خط سوم از انتها مکانیسم های تأیید هویت پشتیبانی شده را نشان می دهد. می توانید لیست آنها را با استفاده از دستورالعمل های زیر تغییر دهید:

TRUST_AUTH_MECH('DIGEST-MD5 LOGIN PLAIN")dnl

define(`confAUTH_MECHANISMS"، "DIGEST-MD5 LOGIN PLAIN")dnl

خط دوم مکانیسم های پشتیبانی شده را به طور کلی فهرست می کند، در حالی که دستورالعمل اول فهرستی از مکانیسم های "معتمد" را تعریف می کند، به عنوان مثال. در صورت استفاده، ارسال نامه مجاز خواهد بود، حتی اگر آدرس مشتری در پایگاه داده دسترسی به عنوان RELAY یا OK مشخص نشده باشد.

بچه ها! بله، من مال خودم هستم!

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

یک فایل authinfo برای این وجود دارد که به این صورت متصل می شود:

FEATURE(`authinfo"، "hash -o /etc/mail/authinfo")

در فایل مشخص شده پارامترهای احراز هویت سرورهای مورد نیاز را با فرمت زیر می نویسیم:

AuthInfo:servak.de "U:" "I:" "P:" "M:LOGIN PLAIN"

در اینجا servak.de نام سرور راه دوری است که باید اطلاعات احراز هویت را به آن ارائه دهید. کلید M روش هایی را که باید استفاده شوند را مشخص می کند. فراموش نکنید که یک هش از این فایل ایجاد کنید.

LDAP - مسیر وحدت

شبکه های شرکت های بزرگ اغلب از پایگاه های داده LDAP برای ذخیره اطلاعات مربوط به کاربران این شبکه ها استفاده می کنند. و استفاده از این مکانیسم برای ذخیره برخی از اطلاعات پیکربندی برای سرور ایمیل خود بسیار هوشمندانه خواهد بود.

Sendmail از توانایی کار با پایگاه داده LDAP پشتیبانی می کند و به شما امکان می دهد به جای دسترسی به فایل ها، نام مستعار و غیره از یک سرویس دایرکتوری استفاده کنید. با این حال، درست مانند مورد SASL، در FreeBSD بدون پشتیبانی LDAP کامپایل می شود. این پشتیبانی به همین ترتیب فعال می شود:

  1. ما از پورت های openldap-client یا openldap-server نصب می کنیم (اگر هنوز سرور LDAP نداریم و می خواهیم آن را روی همان دستگاه اجرا کنیم).
  2. ما تغییراتی را در /etc/make.conf ایجاد می کنیم:
  3. # پرچم های LDAP برای Sendmail

    SENDMAIL_CFLAGS+= -I/usr/local/include -DLDAPMAP

    SENDMAIL_LDFLAGS+= -L/usr/local/lib

    SENDMAIL_LDADD+= -lldap -llber

  4. ما Sendmail را همانطور که برای SASL توضیح داده شد بازسازی می کنیم (نگاه کنید به نقطه 4).

اکنون دستوری که قبلاً با آن آشنا هستیم باید ذکر LDAP را نشان دهد:

# sendmail -d0.1 -bv root | grep LDAP

پس از کامپایل مجدد (یا نصب) Sendmail، /usr/local/etc/openldap/slapd.conf را بررسی کنید تا ببینید آیا طرح sendmail.schema فعال است یا خیر.

اگر نه، خط را اضافه کنید:

شامل /usr/share/sendmail/cf/sendmail.schema باشد

این دستور شمای را برای Sendmail (جایی که مشخصه های پست معتبر تعریف شده است) متصل می کند، که برای پر کردن صحیح فیلدهای مورد نیاز ضروری است.

اکنون تنها چیزی که باقی می ماند این است که ورودی های لازم را به دایرکتوری LDAP اضافه کنید (نحوه انجام این کار را در مستندات LDAP ببینید؛ چندین پیوند مفید در انتهای مقاله آورده شده است) و دستورالعمل هایی را به فایل mc اضافه کنید که نشان می دهد باید از LDAP استفاده شود. :

define(`confLDAP_DEFAULT_SPEC", `-h ldap.your.domain.ru -b dc=your,dc=domain,dc=ru")

FEATURE(`access_db،` LDAP")

define(`ALIAS_FILE"، "ldap:")

خط اول پارامترهای سرور LDAP را مشخص می کند، خط دوم نشان می دهد که سرویس دایرکتوری باید به جای /etc/mail/access استفاده شود و خط سوم به طور مشابه نشان می دهد که LDAP باید برای تعریف نام مستعار استفاده شود.

LDA های جایگزین

Sendmail به شما امکان می دهد تقریباً هر برنامه ای را به عنوان یک نماینده تحویل محلی وصل کنید، البته، به شرطی که این برنامه "مانند LDA رفتار کند" (به یاد داشته باشید؟ - "اگر شبیه یک اردک به نظر می رسد، مانند یک اردک می زند و مانند یک اردک راه می رود، پس این یک اردک است "). به لطف این، ما این فرصت را داریم که تأثیر بسیار زیادی بر نحوه ذخیره نامه داشته باشیم. بنابراین، جای تعجب نیست که علاوه بر استاندارد FreeBSD mail.local، تعداد زیادی از عوامل تحویل «جایگزین» توسعه داده شده است.

اول از همه، برنامه بسیار قدرتمند procmail را به یاد می آورم که قابلیت های گسترده ای را برای پردازش نامه قبل از رسیدن به صندوق پستی کاربر فراهم می کند. گاهی اوقات آنقدر فعال برای مبارزه با هرزنامه استفاده می شود که در اصل نامه ممکن است اصلاً به دست کاربر نرسد. بیهوده نیست که در بسیاری از توزیع های لینوکس به طور پیش فرض با Sendmail کار می کند. برای استفاده از مزایای آن، کافی است این LDA را متصل کنید (با استفاده از دستورالعمل MAILER(procmail، فایل m4 مربوطه در توزیع استاندارد Sendmail موجود است) و استفاده از این LDA را برای دامنه های مورد نیاز در mailertable مشخص کنید:

your.domain procmail

گزینه دوم این است که دستور FEATURE ('local_procmail') را در فایل mc قرار دهید، که استفاده از procmail را به عنوان استاندارد LDA (اعلام شده به عنوان محلی) آموزش می دهد.

FEATURE(«local_procmail»، «/usr/local/bin/maildrop»، «maildrop -d $u»)

در اینجا ما از همان دستورالعمل استفاده کردیم، فقط به جای مسیر procmail، مسیر مورد نیاز خود را مشخص کردیم. به هر حال، اگر procmail را به صورت غیراستاندارد نصب کرده اید (یعنی در /usr/local/bin / نه)، باید مسیر کامل را برای اتصال آن مشخص کنید. طبیعتاً برای کار کامل با Maildir، سرور POP3/IMAP شما نیز باید بتواند با این فرمت کار کند، اما این داستان کاملاً متفاوت است ...

گام بعدی به سوی کمال - DBMail

برای خوشبختی کامل، خوب است که به صندوق پستی کاربر انعطاف‌پذیری اضافه شود. یکی از راه حل ها استفاده از یک DBMS رابطه ای برای ذخیره آنها است که توسط پروژه DBMail در حال پیاده سازی است.

ما در اینجا به طور مفصل در مورد DBMail صحبت نمی کنیم (این بسته می تواند با موفقیت نه تنها در ارتباط با Sendmail، بلکه با سایر MTA های محبوب نیز استفاده شود). برخی از اطلاعات کلی در نوار کناری DBMail ارائه شده است. همچنین به مقاله Evgeny Prokopyev «سرور ایمیل مبتنی بر یک DBMS رابطه‌ای» (شماره 1، 2006) مراجعه کنید، جایی که کار DBMail با جزئیات کامل پوشش داده شده است.

از آنجایی که قرار دادن مکاتبات دریافتی در صندوق پستی کاربر یک تابع MTA نیست (همانطور که از قسمت اول مقاله به خاطر دارید، این کار توسط Local Delivery Agent (LDA) انجام می شود)، از دیدگاه Sendmail، منطق پردازش پیام آن تغییر نمی کند. همه تنها چیزی که لازم است این است که DBMail را به عنوان یک LDA ثبت کنید و به Sendmail دستور دهید تا از آن برای تحویل مکاتبات ورودی استفاده کند، همانطور که برای procmail انجام دادیم. اولین کار با یکی از دستورالعمل های زیر در فایل mc حل می شود:

MAILER(dbmail)

MAILER(dbmail-lmtp)

وظیفه دوم (به طوری که Sendmail بداند برای کدام نامه از یک LDA خاص استفاده کند) این است که mailtertable را برای استفاده از آن LDA پیکربندی کند:

your.domain dbmail

other.domain dbmail-lmpt:

طبیعتا می توانید استفاده از dbmail را فقط برای دامنه های مورد نیاز مشخص کنید. فراموش نکنید که همه چیز را بازسازی کنید و فرآیند sendmail را مجدداً راه اندازی کنید تا تغییرات اعمال شوند.

من فکر می کنم ما همچنین می توانیم بدون دردسر از همان تکنیکی که برای اتصال maildrop استفاده کردیم استفاده کنیم (یعنی ایجاد ظاهری که dbmail ما procmail است و استفاده از قالب های آماده برای این LDA). درست است، من این را در عمل تجربه نکرده ام.

گزینه های فیلتر پیشرفته

امکانات بسیار گسترده ای برای پردازش پیام ها توسط فیلترهای ایمیل یا "milters" (milter، مخفف Mail FILTER) ارائه می شود که در نسخه 8.11.6 (به طور غیر رسمی - از 8.10) ظاهر شد.

فیلترهای ایمیل به طور گسترده ای برای تعامل با برنامه هایی مانند آنتی ویروس ها، فیلترهای هرزنامه و غیره استفاده می شوند. به این معنی که آنها در اصل توانایی "پیچ بندی" پیام پردازش شده را به یک برنامه شخص ثالث از طریق یک شبکه یا سوکت یونیکس می دهند. به هر حال، استفاده از سوکت ها برای تعامل به شما امکان می دهد برنامه فیلتر را روی ماشین دیگری در شبکه قرار دهید، که در برخی موارد می تواند برای متمرکز کردن پردازش یا کاهش بار روی سرور اصلی مفید باشد، اگر فیلتر کردن به منابع محاسباتی قابل توجهی نیاز دارد یا ایجاد یک بار زیاد روی زیرسیستم دیسک اما ما نباید تاخیرهای اضافی در این مورد و همچنین امنیت اطلاعات ارسال شده از طریق سوکت را فراموش کنیم.

این فیلتر به شما امکان می دهد تا پردازش نامه را از لحظه برقراری ارتباط با یک سرور راه دور تا دریافت کامل آن کنترل کنید. پردازش را می توان در هر زمان با استفاده از یکی از پرچم های برگشتی متوقف کرد: ACCEPT (پذیرفتن پیام)، رد کردن (رد کردن با اطلاع رسانی به فرستنده)، یا DISCARD (بدون هیچ اطلاعیه ای صرف نظر کردن). به عنوان مثال، اگر نیاز به رد یک پیام در اوایل جلسه مشخص شود، به عنوان مثال، بر اساس اطلاعاتی که در هدر قرار داده شده است، می توان این کار را قبل از پذیرش کامل نامه انجام داد. نمونه دیگری از استفاده از این ویژگی دریافت پیام ACCEPT بدون اسکن همه پیوست‌ها برای ویروس‌ها است، اگر خطی در سربرگ پیدا شود که به اطلاع می‌دهد چنین اسکنی قبلاً توسط سرور فرستنده انجام شده است (البته چنین سرصفحه‌هایی نباید انجام شوند. کاملا قابل اعتماد).

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

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

ضمناً در مورد پیکربندی... Milter با دایرکتیو زیر وصل شده است:

INPUT_MAIL_FILTER(`clmilter، `S=local:/var/run/clamav/clmilter.sock,F=, T=S:4m;R:4m")

آرگومان اول نام فیلتر است و دومی رشته ای از پارامترها است. سه پارامتر می تواند وجود داشته باشد:

  • S، که سوکت مورد استفاده را مشخص می کند (می تواند محلی یا داخلی باشد).
  • F که نحوه برخورد با حرف را در صورت بروز مشکل در میلتر تعیین می کند (F=T به معنای برگرداندن یک خطای موقت به فرستنده (عملکرد موقت)، F=R - رد اتصال، مقدار خالی F= می دهد. دستورالعمل هایی برای نادیده گرفتن مشکلات با میلتر و پردازش اتصال بدون فیلتر).
  • T چندین تایم اوت تنظیم می کند (جدول را ببینید)، پس از آن فیلتر "بدون پاسخ" در نظر گرفته می شود.

پرچم های تایم اوت

در مثال ما، اگر clamav-milter در عرض چهار دقیقه شروع به پذیرش پیامی از Sendmail نکند یا در همان زمان پاسخ ندهد، پیام برای پردازش بیشتر بدون فیلتر ارسال می‌شود.

به جای دستور بالا، می توانید فیلترها را به این روش متصل کنید:

MAIL_FILTER(`miltergreylist", `S=local:/var/milter-greylist/milter-greylist.sock,F=, T=S:4m;R:4m")dnl

define(`confINPUT_MAIL_FILTERS، "miltergreylist")

در اینجا، روش اتصال فیلتر به دو مرحله تقسیم می شود - با دستور اول، یک میلتر را با پارامترهای مشخص شده اعلام می کنیم، دوم - مایلتر مشخص شده را به عنوان فیلتری برای پردازش پیام ها ثبت می کنیم. اگر نیاز به اتصال چندین فیلتر ایمیل با استفاده از این طرح دارید، تنها به یک دستورالعمل تعریف شده نیاز است که در آن تمام فیلترهای ثبت شده، به ترتیب مورد نیاز، با کاما از هم جدا شده اند.

باید گفت که برای توسعه milter یک API عالی وجود دارد که به شما امکان می دهد به سرعت فیلترها را به زبان C مادری Sendmail ایجاد کنید (در لیست ادبیات اضافی پیوندی به نمونه ای از توسعه milter برای کپی کردن نامه های خروجی به یک خاص پیدا خواهید کرد. آدرس). برای سایر زبان‌های برنامه‌نویسی «پیوندهایی» برای این API وجود دارد، به عنوان مثال، برای Perl (Sendmail:: ماژول Milter، در مجموعه پورت‌ها - mail/p5-Sendmail-Milter) و Python (رابط Python Milter، در Ports - mail/ پی میلتر). یک مثال عالی از توسعه فیلتر در پایتون در مقاله رومن سوزی "Mail Filter, or Milter = Mail + Filter" (شماره 2، 2003، می توانید مقاله را در وب سایت مجله در بخش "مقالات" بیابید) مورد بحث قرار گرفت.

ایمیل به طور گسترده در اشکال مختلف استفاده می شود. البته، اگر در مورد انجام بحث های گروهی صحبت کنیم، وسایل راحت تری وجود دارد: IRC، سرویس های خبری (NNTP)، انجمن های وب و در نهایت. با وجود این، لیست های پستی ایمیل هنوز یک روش نسبتاً محبوب برای بحث در مورد برخی مسائل هستند. بسیاری از پروژه های متن باز (به عنوان مثال، FreeBSD.org، ALT Linux) از لیست های پستی برای ارائه پشتیبانی فنی به کاربران خود، بحث در مورد ویژگی های جدید نسخه های آزمایشی، اطلاع رسانی در مورد مشکلات امنیتی کشف شده استفاده می کنند.

یکی از شناخته شده ترین سیستم های مدیریت لیست پستی Majordomo است. این به خوبی با سرورهای Sendmail ادغام می شود و دارای مجموعه ای از عملکردهای کافی برای کار با نامه های پستی است.

نصب از مجموعه پورت ها هیچ مشکلی ایجاد نمی کند، به جز یک نکته کوچک: با شروع FreeBSD 5.x، Perl بخشی از سیستم نیست و باید از پورت ها نصب شود. واقع در /usr/local/bin. با این حال، پورت Majordomo می خواست /usr/bin/perl را به روش قدیمی ببیند. مجبور شدم یک لینک بگذارم (البته می توانید Makefile را اصلاح کنید):

# ln /usr/local/bin/perl /usr/bin/perl

پس از این، باید مشخص کنید که کدام MTA استفاده خواهد شد (شکل 2 را ببینید؛ انتخاب ما، به نظر من، واضح است). پس از یک گردآوری کوتاه، یک طرح قرار دادن فایل کمی غیر استاندارد برای FreeBSD دریافت خواهیم کرد: فایل‌های باینری و پیکربندی در /usr/local/majordomo قرار خواهند گرفت. دو فایل پیکربندی مهم در اینجا majordomo.cf هستند که می‌توانید تنظیمات اولیه را تغییر دهید و aliases.majordomo که شامل مجموعه‌ای از نام‌های مستعار پیکربندی شده است که Majordomo با آنها کار خواهد کرد.

اصل تعامل این بسته با Sendmail بسیار ساده است و بر اساس نام مستعار است. به عنوان مثال، یک پیام در حال رسیدن به mail.force_extra_parameters =به /usr/local/majordomo/wrapper هدایت می شود و طبق تنظیمات لیست پردازش می شود.

برای اینکه Majordomo شروع به کار کند، باید فایل نام مستعار آن را به Sendmail متصل کنید (اگرچه می توانید خطوط لازم را به /etc/mail/aliases/ کپی کنید):

define('ALIAS_FILE"، "/etc/mail/aliases، /usr/local/majordomo/aliases.majordomo")

همین - ماجوردومو آماده رفتن است. با ارسال یک ایمیل با دستور "lists" در بدنه به دامنه خود در majordomo، اطلاعاتی در مورد لیست های پستی موجود دریافت خواهید کرد (به طور پیش فرض test-l و test-l-digest وجود خواهد داشت). به همین ترتیب، می توانید لیست های خود را ایجاد کنید، که برای آن باید یک فایل خالی مطابق با نام لیست پستی در /usr/local/majordomo/lists ایجاد کنید و همچنین در aliases.majordomo نام مستعار را برای پستی وارد کنید. لیست خود، تیم ها، آدرس مالکان، و غیره. - می توانید یک مثال برای همان لیست آزمایشی، test-l ببینید.

مدیریت بیشتر را می توان از طریق ایمیل انجام داد. به عنوان مثال، برای آزمایش با لیست test-l، ابتدا توصیه می شود رمز عبور مدیر را با ارسال نامه ای به test-l-request با عبارت "passwd test-l test mynewpas" تغییر دهید، که در آن test-l نام آن است. از لیستی که رمز عبور برای آن تغییر می کند، تست – رمز عبور قدیمی (به طور پیش فرض استفاده می شود)، mynewpas – رمز عبور جدید. در صورت موفقیت، ایمیلی با پیام «رمز عبور تغییر کرد» دریافت خواهید کرد.

با این حال، کار با لیست های پستی موضوع دیگری است و ما در اینجا به جزئیات نمی پردازیم. علاوه بر این، یک صفحه کمک عالی در خدمت شماست، man majordomo.

قسمت زیر آب از کوه یخ

اینجاست که احتمالاً آشنایی خود را با Sendmail به پایان خواهیم رساند. طبیعتاً حتی در چنین چرخه پرحجمی نمی توان تمام جنبه های عملکرد این بسته قدرتمند را پوشش داد. بنابراین، در پایان، تصمیم گرفتم لیستی از پیوندها را ارائه دهم (همچنین هنوز کامل نشده است) که در آن می توانید اطلاعات بیشتری دریافت کنید.

همین! موفق باشید!

برنامه

Cyrus SASL

مکانیزم احراز هویت SASL (Simple Authentication and Security Layer) برای پیاده سازی احراز هویت ایمن در ارتباط با سایر پروتکل های اینترنتی استفاده می شود. SASL علاوه بر احراز هویت، مکانیسم هایی را برای بررسی یکپارچگی داده ها فراهم می کند.

یکی از محبوب ترین پیاده سازی های SASL، کتابخانه Cyrus SASL است. در حالی که برای نیازهای سرور IMAP Cyrus توسعه یافته است، به طور گسترده برای کارهای دیگر از جمله احراز هویت SMTP استفاده می شود.

Cyrus SASL از طیف گسترده ای از مکانیسم های احراز هویت پشتیبانی می کند - CRAM-MD5، DIGEST-MD5، Kerberos، GSSAPI (مشخصات Kerberos 5). در صورت لزوم، پشتیبانی از مکانیسم‌های احراز هویت «مسطح» مانند LOGIN و PLAIN را می‌توان فعال کرد، اما توصیه می‌شود که از آنها فقط در هنگام کار بر روی یک اتصال امن استفاده کنید.

برای انجام احراز هویت از دیمون saslauthd موجود در Cyrus SASL استفاده می شود. این می تواند رمزهای عبور را هم با استفاده از پایگاه داده خود و هم با استفاده از مکانیسم های PAM، LDAP، فایل رمز عبور سیستم /etc/passwd و غیره بررسی کند.

LDAP

پروتکل Lightweight Directory Access Protocol پروتکلی است که برای فعال کردن سرویس به اصطلاح دایرکتوری طراحی شده است. از خدمات دایرکتوری برای ذخیره سازی مرکزی اطلاعات مختلف مانند حساب های کاربری، دفترچه آدرس و تنظیمات مختلف استفاده می شود.

سرویس دایرکتوری (تعریف شده در پروتکل X.500) در ابتدا برای سرویس دهی به شبکه های پستی X.400 که توسط OSI توسعه یافته بود طراحی شد. برای دسترسی به این سرویس، از پروتکل DAP استفاده شد که به عنوان پایه ای برای توسعه یک LDAP ساده تر و با استفاده آسان تر عمل کرد.

ورودی های ذخیره شده در دایرکتوری های LDAP با یک نام منحصر به فرد (نام متمایز) و تعدادی ویژگی که در طرحواره ها تعریف شده اند نشان داده می شوند. ساختار رکورد به شما اجازه می دهد تا به راحتی رکوردهای خود را در نمای درختی سازماندهی کنید.

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

علاوه بر اجرای رایگان سرویس دایرکتوری - OpenLDAP، که به طور گسترده در سیستم های خانواده UNIX / Linux استفاده می شود، تعدادی دیگر نیز وجود دارد (به عنوان مثال، Active Directory، طراحی شده برای مدیریت شبکه های ویندوز).

خود پروتکل LDAP در RFC 1777، RFC 2251 (نسخه 3) تعریف شده است. همچنین تعداد زیادی اسناد در حال گسترش و تکمیلی وجود دارد.

DBMail

برنامه DBMail که توسط دو شرکت دانمارکی - IC&S و NFG توسعه یافته است، به شما امکان می دهد ذخیره سازی صندوق پستی کاربر را در یک پایگاه داده همه منظوره سازماندهی کنید. MySQL و PostgreSQL پشتیبانی می شوند (انتظار می رود نسخه 2.2 SQLite را به این لیست اضافه کند). برای سرورهای پست کوچکی که به شبکه محلی شرکت شما سرویس می دهند، یک پیوند اضافی در زنجیره "خدمات پستی" برای کاربران فقط قابلیت اطمینان را کاهش می دهد و تعمیر و نگهداری سیستم را پیچیده می کند و عملاً چیزی در ازای آن نمی دهد.

با این حال، در سیستم‌هایی با تعداد کاربران زیاد یا در جایی که سیستم پستی به حداکثر انعطاف‌پذیری و توانایی اجرای خدمات متنوع نیاز دارد (به عنوان مثال، جستجوی متن کامل یک صندوق پستی با استفاده از یک رابط وب)، ذخیره همه پیام‌ها در یک پایگاه داده تقریباً امکانات بی حد و حصری را فراهم می کند. به عنوان مثال، DBMail به راحتی به شما امکان می دهد حداکثر اندازه صندوق پستی را تنظیم کنید (در مورد استفاده از ذخیره سازی سنتی، باید به مکانیسم سیستم برای تعیین سهمیه در سیستم فایل متوسل شوید): فقط باید آن را در دستور تعیین کنید. یک کاربر جدید بسازید یا پارامترهای حساب کاربری او را تغییر دهید:

# dbmail-users -c vasya -m 100M

هر آماری را می توان مستقیماً از پایگاه داده با استفاده از یک پرس و جو معمولی SQL به دست آورد. علاوه بر این، می‌توانید از تمام مزایای پایگاه‌های داده رابطه‌ای مانند افزونگی، میزبانی روی سرور جداگانه، خوشه‌بندی استفاده کنید (اگرچه در رابطه با DBMS‌های پشتیبانی‌شده در حال حاضر، پیاده‌سازی آن نیاز به تلاش بیشتری دارد؛ به عنوان مثال، مقاله آندری ترنین را ببینید. "ایجاد یک کلاستر برای PostgreSQL" (شماره 1 http://reki.ru/sendmail_setup.html http://unix1.jinr.ru/~lavr/sendmail+sasl2 http://www.milter.org .

  • Roman Susi، Mail Filter یا Milter = Mail + Filter – .
  • نمونه ای از milter در C برای کپی کردن نامه های خروجی - http://www.opennet.ru/base/met/mail_copy_milter.txt.html.
  • دیگران

    1. وب سایت اصلی پروژه DBMail http://www.dbmail.org است.
    2. اسناد DBMail - http://www.helgrim.com/dbmaildocs/installation.html.
    3. SMTP STARTTLS در sendmail/Secure Switch – http://linuxnews.ru/docs/new/starttls.html.
    4. Majordomo و MajorCool HOWTO -



    جدید در سایت

    >

    محبوب ترین