Керівництво по реле для новачків в qmail

Керівництво по реле для новачків в qmail.

Вступ.

Я Новомосковськ поштові розсилки по qmail останні кілька років, і якщо зустрічається там питання, на який відповідей більше, ніж на будь-які інші питання, то це питання, на яке відповідають: "читай FAQ # 5.4". Це питання має багато формулювань, але в основному звучить так: "Коли хтось пробує послати пошту через мій сервер, він отримує повідомлення 'Sorry, that domain is not in my list of allowed rcpthosts' ( 'Вибачте, цього домену немає в списку дозволених для релея хостів '). Що мені робити? "

З подальшого читання видно, що сама тема пересилання (релея) пошти часто призводить новачків в замішання; яку роль у цьому відіграє файл rcpthosts? І яке відношення до пересилання мають tcprules tcpserver'а? Тому я написав наступне, надзвичайно багатослівний пояснення принципів пересилання, описав, як зробити її вибіркової, а також розповів про деякі пастки, які можуть Вам зустрітися. Може здатися, що сказано занадто багато слів для пояснення настільки нескладної концепції. Однак, прочитавши сотні повідомлень з розсилок qmail по цій темі, я подумав, що зможу визначити більшість джерел плутанини і нерозуміння, і спробував передбачити всі питання, які можуть у вас виникнути.

Отже. Про що взагалі йде мова? Що таке відкритий релей?

Ви встановили Ваш qmail сервер. Він обслуговує кілька поштових доменів (тобто, вони перераховані у Вашому файлі locals або в virtualdomains).

Ви налаштували сервер так, щоб qmail-smtpd міг приймати з'єднання на 25 порту і отримувати пошту від інших хостів.

Інший хост в Internet з'єднується з Вашим сервером на 25 порту. Це може бути інший поштовий сервер з працюючим на ньому qmail, sendmail або іншим MTA, або ж - це просто кінцевий користувач, який хоче послати пошту зі свого персонального поштового клієнта (Outlook, The Bat, Netscape Mail і т.п.)

Починається сеанс SMTP з віддаленим хостом.
Спочатку віддалений хост називає себе:

Ваш сервер відповідає:

Віддалений хост повідомляє поле "From" повідомлення:

Ваш хост відповідає:

Віддалений хост тепер посилає одну або кілька команд RCPT TO, які визначають одержувачів повідомлення:

Хвилиночку! elsewhere.com - це не один з доменів, які обслуговує Ваш сервер.
Що Ваш сервер зробить? Він може погодитися прийняти повідомлення і спробувати доставити його:

Або він може відхилити його:

У першому випадку Ваш сервер працює як релей: він приймає і погоджується спробувати доставити повідомлення, яке не призначене для одного з Ваших доменів.
У другому випадку він відмовляється бути реле.

Так чому ж я не повинен мати відкритий релей? Моїм користувачам необхідно відправляти пошту в інші домени. І взагалі, чому хтось, який не є моїм користувачем, може захотіти використовувати мій сервер як релей?

Кілька років тому це дійсно було безпечним рішенням; люди зазвичай використовували релей, наданий їм своїм ISP, роботодавцем або університетом.

Добре, досить доказів, Ви мене переконали. Я не хочу мати відкритий релей. Як я можу виправити налаштування свого релея?

Просто перерахуйте в Вашому файлі rcpthosts всі домени, які обслуговує Ваш сервер (або, для яких діє як вторинний релей). Тепер Ви в безпеці.

Але тепер мої власні клієнти отримують повідомлення "Sorry, that domain is not in my list of allowed rcpthosts"! (Я буду називати Ваших користувачів "клієнти"; замініть це слово на "службовці", "студенти мого університету", або як-небудь ще, стосовно Вашого випадку). Я хотів би, щоб мої власні клієнти могли використовувати мій сервер як релей, але я, напевно, не зможу перелічити всі домени в моєму rcpthosts файлі, в які вони можуть захотіти послати пошту.

Ви теж з цим стикалися? На щастя, є спосіб змусити qmail-smtpd вибірково ігнорувати файл rcpthosts. Якщо змінна RELAYCLIENT встановлена ​​в змінних оточення qmail-smtpd, rcpthosts буде ігноруватися і пересилання буде дозволена. Все, що Вам потрібно - це знайти спосіб встановити RELAYCLIENT для Ваших клієнтів, але не для кого-небудь ще.

Як же тоді пересилати пошту таких клієнтів?

Кращий спосіб для них полягає в тому, щоб використовувати ті SMTP-сервери, які надає їм їх ISP. Зазвичай немає ніякої причини використовувати саме Ваш сервер, щоб пересилати їх пошту; підійде будь-який сервер, який погодиться передавати їх пошту, і таким сервером в принципі повинен бути поштовий сервер ISP.

Якщо хтось має будь-які інші рішення, будь ласка, повідомте мені про них.

Я думаю, що все встановив правильно. Як я можу перевірити свій сервер, щоб упевнитися, що він - не відкритий релей?