Valery's Mlog

Mindlog of a Freak
January 12th, 2006 by Valery Dachev

POP преди SMTP

POP преди SMTP (или “roaming users”) е функционалност, която позволява клиентите на SMTP сървъра да изпращат поща без SMTP автентикация. Оторизацията става, като се използва автентикацията в POP и IMAP протоколите на базата на IP адреса на потребителя. ??менно това е целта на опцията в повечето пощенски клиенти “Проверка на пощата преди изпращане” или нещо от сорта. В комбинацията Qmail+Vpopmail (стига да са компилирани с подходящите опции) това става автомагично с помощта на smtp.tcp файла, който Vpopmail поддържа актуален, а Qmail чете. Тъй като това не е някакъв тип стандартна база за съхранение на roaming users, подходът при различните SMTP сървъри и комбинацията им с други POP/IMAP сървъри е различен.

Един от начините това да бъде постигнато по-универсално е пакетът pop-before-smtp. Като всяко нещо, това си има и предимства и недостатъци. Предимството е, че не изисква кръпки за различните сървъри, защото в тях е вкарана поддръжката за повечето от тях. Недостатъкът е много злобен – въпросният инструмент анализира пощенските логове, т.е. разчита на това, че такива има и са в точно определен формат (макар че това може да се пипне в конфигурационния файл). Пакетът е достъпен за потребителите на Debian под същото име. Зависи от Perl и няколко негови библиотеки. Макар и непълно, кратко описание на инсталирането и конфигурирането може да се намери на този адрес.

По принцип конфигурирането е в четири аспекта и в общия случай се свежда до разкоментиране на подходящите редове:

  • настройки на самото pop-before-smtp. Тук влиза нивото и мястото за debugging информация в случай на проблеми.
  • настройки за POP/IMAP сървъра. Трябва да се пипне мястото на логовете в променливата $file_tail{‘name’} и формата на логовете в променливата $pat, като има предефинирани такива за по-популярните сървъри. Струва си отново да се отбележи, че имената на демоните може да с различават между дистрибуциите, както и формата на датите, ако е зададен системен локал.
  • настройки за SMTP сървъра. Отново конфигурирането започва с разкоментиране на подходящия за съответния SMTP сървър блок. С Postfix нещата са доволно безпроблемни. Само да отбележа, че за ползване BerkeleyDB база, на системата трябва да е инсталиран допълнително libberkeleydb-perl пакета. При Qmail положението малко по-забавно, доколкото той винаги е бил адски несъвместим с всичко, а авторите му – твърде превзети, за да направят нещо по въпроса. О??е повече, че в гореспоменатото ръководство Qmail въобще не се споменава. Та… отново се разкоментира съответния блок. Това, което трябва да се поправи в него е пътят до tcprules (в Debian – /usr/bin/tcprules) в $TCPRULES и да се устновят локалните мрежи в mynet_tcprules. Може да се наложи и в началото на sync_tcprules да се добави umask(022), в случай, че SMTP сървъра не може да изчете файла. Следва връщане чак до горе, за да се смени пътя до файла с генерираната база в променливата $dbfile (в Debian – /etc/tcp.smtp.cdb)
  • настройка на самия SMTP сървър. За Postfix отново описание има. Само от пътя сочен от $dbfile трябва да се махне раз??ирението “.db”, което Postfix явно добавя автомагично. Учудващо в Qmail не се пипа нищо ! :) Може евентуално да се наложи преименуване на /etc/tcp.smtp файла, за да не може всякакви автоматични инструменти на негова основа да презапи??ат /etc/tcp.smtp.cdb.

Сега остава заклинанията изказани по-горе да се окажат подходящи за наумената магия. :)

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: