Керівництво по реле для новачків в 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.
Якщо хтось має будь-які інші рішення, будь ласка, повідомте мені про них.