در این آموزش به شما نحوه Load Balance کردن آدرس IP های خروجی (IP ارسال ایمیل) در Microsoft Exchange را آموزش خواهیم داد.
تصور کنید شما یک یا دو سرور Edge برای ارسال ایمیل دارید و در مدت زمان کوتاهی مشتریان شما تعداد زیادی ایمیل را ارسال می کنند. پس از مدتی سرویس دهنده های بزرگ مثل Hotmail، Yahoo یا Gmail آدرس IP های شما را مسدود خواهند نمود.
توزیع بار (Load Balancing) در سرور Exchange 2016
عموما دلیل این مسدودی ارسال تعداد زیادی ایمیل از یک آدرس IP می باشد. حال تصور کنید هر دو آدرس Public سرورهای Edge شما مسدود شود. در این صورت هیچگونه ایمیلی از سمت شما به این سرویس دهنده ها ارسال نخواهد شد و تماما در صف انتظار قرار خواهند گرفت.
مشکل در اینجا این است که در سرورهای Edge شما تنها یک آدرس IP برای ایمیل های خروجی تعریف شده است.
نرم افزارهای ارسال ایمیل همچون Ironpot و برخی از نرم افزارهای ضد اسپم لینوکس این امکان را به شما می دهند که چندین آدرس IP را برای ایمیل های ارسالی در نظر بگیرید تا با این مشکل مواجه نشوید، اما آیا Exchange نیز همچنین امکانی دارد؟
البته به این شکل خیر، اما روشی برای تنظیم Custom Transport Agent در Exchange وجود دارد.
Load Balance کردن Transport Agent
مقدار Send Connector در این سیستم دارای خصوصیتی تحت عنوان "SourceIPAddress" می باشد. این آدرس IP یکی از آدرس هایی خواهد بود که Exchange برای ارسال ایمیل از آن استفاده خواهد نمود.
پس در اولین مرحله تعدادی آدرس IP اضافه خواهیم نمود.
192.168.1.240 EDGE Server IP 192.168.1.241 Outbound SMTP IP Address 1 192.168.1.242 Outbound SMTP IP Address 2 192.168.1.243 Outbound SMTP IP Address 3
در تنظیمات ما، سرور Edge در محیط DMZ میباشد و یک ارتباط NAT یک به یک در شبکه ما فی ما بین آدرسهای داخلی و خارجی وجود دارد.
ممکن است تصور کنید با اضافه کردن چندین آدرس IP مشکل حل خواهد شد اما اشتباه کرده اید!
Microsoft Exchange در بین چندین Send Connector که یک Cost برای آنها تعریف شده است امکان Load Balance ندارد.
این نرم افزار با شرایط زیر نسبت به انتخاب Send Connector اقدام می کند:
1- اگر در تنظیمات گیرنده Send Connector مقدار مشخصی مانند contoso.com تعریف شده باشد نسبت به "*" دارای اولویت است.
2- ردیفی را انتخاب خواهد کرد که دارای کمترین Cost می باشد.
3- اگر چندین ردیف با Cost یکسان وجود داشته باشد بر مبنای نام آنها به ترتیب حروف الفبا انتخاب خواهد کرد.
ممکن است شما بخواهید با استفاده از یک اسکریپت نام Send Connector را هر دقیقه یکبار تغییر دهید که پیشنهاد نمی شود! بهتر است از روش هوشمندانه زیر استفاده کنید:
مرحله بعدی تنظیم Send Connector ها می باشد:
توزیع بار (Load Balancing) در سرور Exchange 2016
عموما دلیل این مسدودی ارسال تعداد زیادی ایمیل از یک آدرس IP می باشد. حال تصور کنید هر دو آدرس Public سرورهای Edge شما مسدود شود. در این صورت هیچگونه ایمیلی از سمت شما به این سرویس دهنده ها ارسال نخواهد شد و تماما در صف انتظار قرار خواهند گرفت.
مشکل در اینجا این است که در سرورهای Edge شما تنها یک آدرس IP برای ایمیل های خروجی تعریف شده است.
نرم افزارهای ارسال ایمیل همچون Ironpot و برخی از نرم افزارهای ضد اسپم لینوکس این امکان را به شما می دهند که چندین آدرس IP را برای ایمیل های ارسالی در نظر بگیرید تا با این مشکل مواجه نشوید، اما آیا Exchange نیز همچنین امکانی دارد؟
البته به این شکل خیر، اما روشی برای تنظیم Custom Transport Agent در Exchange وجود دارد.
Load Balance کردن Transport Agent
مقدار Send Connector در این سیستم دارای خصوصیتی تحت عنوان "SourceIPAddress" می باشد. این آدرس IP یکی از آدرس هایی خواهد بود که Exchange برای ارسال ایمیل از آن استفاده خواهد نمود.
پس در اولین مرحله تعدادی آدرس IP اضافه خواهیم نمود.
192.168.1.240 EDGE Server IP 192.168.1.241 Outbound SMTP IP Address 1 192.168.1.242 Outbound SMTP IP Address 2 192.168.1.243 Outbound SMTP IP Address 3
در تنظیمات ما، سرور Edge در محیط DMZ میباشد و یک ارتباط NAT یک به یک در شبکه ما فی ما بین آدرسهای داخلی و خارجی وجود دارد.
ممکن است تصور کنید با اضافه کردن چندین آدرس IP مشکل حل خواهد شد اما اشتباه کرده اید!
Microsoft Exchange در بین چندین Send Connector که یک Cost برای آنها تعریف شده است امکان Load Balance ندارد.
این نرم افزار با شرایط زیر نسبت به انتخاب Send Connector اقدام می کند:
1- اگر در تنظیمات گیرنده Send Connector مقدار مشخصی مانند contoso.com تعریف شده باشد نسبت به "*" دارای اولویت است.
2- ردیفی را انتخاب خواهد کرد که دارای کمترین Cost می باشد.
3- اگر چندین ردیف با Cost یکسان وجود داشته باشد بر مبنای نام آنها به ترتیب حروف الفبا انتخاب خواهد کرد.
ممکن است شما بخواهید با استفاده از یک اسکریپت نام Send Connector را هر دقیقه یکبار تغییر دهید که پیشنهاد نمی شود! بهتر است از روش هوشمندانه زیر استفاده کنید:
مرحله بعدی تنظیم Send Connector ها می باشد:
New-SendConnector Connector1 -AddressSpaces "connector1.local" -SourceIPAddress 192.168.1.241
New-SendConnector Connector2 -AddressSpaces "connector2.local" -SourceIPAddress 192.168.1.242
New-SendConnector Connector3 -AddressSpaces "connector3.local" -SourceIPAddress 192.168.1.243
در SDK Exchange 2010 به بالا روشی برای ارسال ایمیل ها به ازای هر گیرنده وجود دارد و صرفا شما کافیست به ازای هر گیرنده آنها را به Connector مربوطه متصل نمائید.
با استفاده از تابع RoutingOverride ما تمامی ایمیل های در صف انتظار را می توانیم به سمت Connector مورد نظر خود هدایت کنیم.
اطلاعات تکمیلی در خصوص تابع RoutingOverride در لینک زیر موجود می باشد:
با استفاده از تابع RoutingOverride ما تمامی ایمیل های در صف انتظار را می توانیم به سمت Connector مورد نظر خود هدایت کنیم.
اطلاعات تکمیلی در خصوص تابع RoutingOverride در لینک زیر موجود می باشد:
نحوه نصب routeBalancer
برای نصب این Agent می بایست اسکریپت installRouteBalancer.ps1 را اجرا کنید و سپس مراحل زیر را انجام دهید.
1- سرویس MSExchangeTransport را غیر فعال کنید.
2- فولدر "C:\Program Files\Microsoft\Exchange Server\V14\TransportRoles\agents\routeBalancer" را ایجاد کنید.
3- فایلهای routeBalancer.dll و RouteBalancerConfig.xml را در پوشه ای که ایجاد کرده اید کپی کنید.
4- Agent را نصب و فعال کنید.
5- سرویس MSExchangeTransport را فعال کنید.
نحوه مدیریت سیستم:
این Agent تعداد Send Connector ها را می خواند و همچنین آدرس های IP را از RouteBalancerConfig.xml نیز می خواند. این فایل می بایست در کنار فایلهای dll دیگر باشد.
در صورتی که تمایل به عدم ارسال از یک آدرس IP دارید، مثلا برای غیر فعال کردن Connector2 می بایست:
1- ابتدا مقدار Address Space را درون Send Connector ها از "connector3.local" به "connector2.local" تغییر دهید.
2- سپس "connector2.local" را به اسمی دیگر مثلا "disabled.local" تغییر نام دهید.
3- نام Send Connectory را مثلا به "Disabled" تغییر نام دهید. (فقط جهت شفاف سازی و اطلاع خودتان، تغییر در نام آنها تاثیری بر Agent ندارد)
4- مقدار numConnectors در فایل RouteBalancerConfig.xml را از 3 به 2 تغییر دهید.
5- سرویس MSExchangeTransport را ریستارت کنید.
دانلود Agent و اسکریپت installRouteBalancer.ps1