Когда я управляю доступом средствами IP-FireWall или Squid, я могу создать правила типа "от Васи к Пете - можно; от Пети к Васе - нельзя". Но для управления доступом к почте средствами SendMail я нашёл только /etc/mail/access, обладающий такими свойствами:
- если я дам указание "юзер@домен.ru 550 Access denied", то будут убиваться и письма, имеющие такой адрес в поле "From:", и письма, отправленные на этот адрес;
- если я дам указание "домен.ru 550 Access denied", то будут убиваться письма, имеющие такой домен (и его поддомены) в адресе отправителя, в адресе получателя, а также в доменном имени релея (определяемом через ReverceDNS по его IP-номеру);
- нет возможности фильтровать спам по hostname (имени хоста, которое он сам указывает в SMTP-диалоге);
- невозможно работать с шаблонами (хотелось бы использовать регулярные выражения, но не работают и звёздочки в формате файловых масок).А мне требуется допускать письма на определённый адрес только если адрес отправителя строго соответствует указанному.
Есть ли у SendMail "более другой" способ управления доступом, желательно без установки дополнительных программ? Как обстоит дело в Exim, Postfix, QMail?
Все возможно, если освоить синтаксис sendmail.cf и написать дополнительные правила.>А мне требуется допускать письма на определённый адрес только если адрес >отправителя строго соответствует указанному.
http://www.anrb.ru/linux/sendmail.html#4>нет возможности фильтровать спам по hostname (имени хоста, которое он сам > указывает в SMTP-диалоге);
Здесь нужно поработать с переменной ${client_name}>невозможно работать с шаблонами (хотелось бы использовать регулярные >выражения, но не работают и звёздочки в формате файловых масок).
Здесь не понятно, приведи конкретный пример, где не работает.
Хорошая реализация в Exim, тас есть ACL
> Все возможно, если освоить синтаксис sendmail.cf и написать дополнительные правила.А если знать C и написАть свой MTA... :)
>> А мне требуется допускать письма на определённый адрес
>> только если адрес отправителя строго соответствует указанному.
>
> http://www.anrb.ru/linux/sendmail.html#4Кульная статья. Ещё бы к ней ссылку на хороший учебник, где все эти понятия разъясняются от простого к сложному. А то у меня сложилось впечатление, что все книги по SendMail написаны людьми, которые прочитали чьи-то чужие книги и пытаются пересказать их своими словами; а самые первые книги написаны программистами, создавшими SendMil - а люди такого уровня никоггда не умели связно излагать свои мысли... :(
>> нет возможности фильтровать спам по hostname
>> (имени хоста, которое он сам указывает в SMTP-диалоге);
>
> Здесь нужно поработать с переменной ${client_name}А как с ней работать?
>> невозможно работать с шаблонами (хотелось бы использовать регулярные
>> выражения, но не работают и звёздочки в формате файловых масок).
>
> Здесь не понятно, приведи конкретный пример, где не работает.Например, есть доменные имена типа dialup*.sochi.ru, где вместо звёздочки - номер.
Но запись типа "dialup*.sochi.ru 550 DialUp users must use relay" не работает.
А если тут RegEx, то почему точки не экранируют бэкслешами?
[...]
>первые книги написаны программистами, создавшими SendMil - а люди такого уровня
>никоггда не умели связно излагать свои мысли... :(ничего не скажу про программистов, написавших sendmail, но
вот тот же Алан Голуб, например, считает, и небезосновательно,
я думаю, что:
"... если вы не можете это выразить на обычном языке, то вы не
сможете это и запрограммировать ...", и вообще, утверждает, что
хороший программист скорее лингвист, чем математик:http://www.biblioteka.agava.ru/veryovka.htm
Позволю себе процитировать:
"...
Есть разные мнения о возможности мышления вне языка, но я убежден, что аналитическое мышление того типа, который нужен в компьютерном программировании, тесно связано с языковыми навыками. Я не думаю, что является случайностью то, что многие из знакомых мне лучших программистов имеют дипломы по истории, филологии и схожим наукам. Также не является совпадением то, что некоторые из виденных мной худших программ были написаны инженерами, физиками и математиками, затратившими в университете массу энергии на то, чтобы держаться как можно дальше от занятий по языку и литературе.Сущность заключается в том, что математическая подготовка почти не нужна в компьютерном программировании. Тот тип организационного мастерства и аналитических способностей, который нужен для программирования, связан полностью с гуманитарными науками. Логика, например, преподавалась на философском факультете, когда я был в университете. Процесс, используемый при проектировании и написании компьютерных программ, почти полностью идентичен тому, который используется, чтобы сочинять и писать книги. Процесс программирования совсем не связан с теми процессами, которые используются для решения математических уравнений.
..."(параграф "6. Если вы не можете сказать это по-английски, то вы не сможете выполнить это на С/С++.")
Поэтому первый НЕОБХОДИМЫЙ (но не достаточный, наверное)
признак (по кр. мере, по Голубу ;-)) хорошего программиста, это
способность в ясном изъяснении на обычном человеческом языке.Что же касается самого ПО, то sendmail -- на мыло! :-)
Рекомендую выбирать из exim, postfix, qmail./poige
--
http://www.i.morning.ru/~poige/
Я не знаком с преподаванием истории, филологии и схожих наук в США, но зная советских историков и филологов (ибо учился), я очень сомневаюсь, что знание деепричастий и эпохи Нерона помогает программировать. А вот незнание математики запросто делает программы уродскими (прежде всего ресурсоёмкими). Интересно было бы узнать, какое образование у авторов Unix, а какое - у программистов Micro$oft.А статья довольно спорная и местами внутренне противоречивая (но я не собираюсь подробно разбирать её тут).
[...]в первую очередь, речь идет про языковые навыки. Спорить с
тезисом "не можешь описать алгоритм решения на родном
языке, не сможешь запрограммировать его на компьютерном",
вряд-ли у кого-то успешно получится.>математики запросто делает программы уродскими (прежде всего ресурсоёмкими). Интересно было бы
Согласно БСЭ
"...
Математика (греч. mathematike, от máthema - знание, наука), наука о количественных отношениях и пространственных формах действительного мира.
..."Мне, исходя даже только из этого определения, видно, что математика
к программированию, вообще относится едва-едва. Да, математические
задачи можно и нужно программировать, но для этого нужно быть
программистом, а не математиком. В конце-концов, программист, если
вдуматься, переводчик!Еще одним, по сути, подтверждением, является часть математики,
алгебра (слово, кстати, от тех же "ребят", что и алгоритм ;-))."...
При этом в А. сформировались характерные для неё буквенные обозначения, позволившие записать свойства действий над числами в сжатой форме, удобной для построения исчисления над буквенными выражениями. Буквенное исчисление тождественных преобразований, давшее возможность преобразовывать по определённым правилам (отражающим свойства действий) буквенную запись результата действий, составляет аппарат классической А. Тем самым А. отграничилась от арифметики: А. изучает, пользуясь буквенными обозначениями, общие свойства числовых систем и общие методы решения задач при помощи уравнений
..."Уже яснее? Буквенные обозначения это тот аппарат, который проник
буквально во всю математику, и это тот __языковый__ механизм, который
сделал прорыв в ней!>узнать, какое образование у авторов Unix, а какое - у программистов
>Micro$oft.Наверное, Сеть в этом поможет.
>
>А статья довольно спорная и местами внутренне противоречивая (но я неЕсли вы про работу Голуба, то это, вообще-то, книга. Я сравнительно
давно купил ее в бумажном варианте, и считаю ее ценным приобретением.>подробно разбирать её тут).
Подробнее можно на другом разделе форума -- Программирование.
/poige
[...]
>>узнать, какое образование у авторов Unix, а какое - у программистов
>>Micro$oft.
>
>Наверное, Сеть в этом поможет.Да, это было легко:
http://cm.bell-labs.com/cm/cs/who/dmr/bigbio1st.html
Цитата:
"...
My undergraduate experience convinced me that I was not smart
enough to be a physicist, and that computers were quite neat.
My graduate school experience convinced me that I was not smart
enough to be an expert in the theory of algorithms and also that
I liked procedural languages better than functional ones.
..."> I liked procedural languages better than functional ones
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^/poige
> Спорить с тезисом "не можешь описать алгоритм решения на родном языке, не сможешь
> запрограммировать его на компьютерном", вряд-ли у кого-то успешно получится.Тезис в корне ложный, ибо предполагает, что изложить алгоритм на родном языке проще, чем на языке программирования. Я помню те времена, когда от студентов и даже от некоторых сотрудников требовали сначала нарисовать блок-схему со стрелками переходов; хотя уже в то время Фортран и Бэйсик описывали алгориты компактнее, чем блок-схемы.
> Согласно БСЭ
> "... Математика (греч. mathematike, от mбthema - знание, наука), наука
> о количественных отношениях и пространственных формах действительного мира. ..."
>
> Мне, исходя даже только из этого определения, видно,
> что математика к программированию, вообще относится едва-едва.Программирование и есть численное представление мира - как и математика. Просто с точки зрения математики программирование - брутальный подход, задействующий выскокоскоростные процессоры, тогда как математика путём "тождественных преобразований" ищет путей с малым числом вычислений.
>> Спорить с тезисом "не можешь описать алгоритм решения на родном языке, не сможешь
>> запрограммировать его на компьютерном", вряд-ли у кого-то успешно получится.
>
>Тезис в корне ложный, ибо предполагает, что изложить алгоритм на родном языке
>проще, чем на языке программирования. Я помню те времена, когда отГде шла речь про "проще/сложнее"? Напомню, говорилось про
"возможно/невозможно". 0, или 1, тов. Карпов. А не шкала сложности,
с произвольными значениями на данном интервале. :-)В общем, вы подменяете понятия. Наверное, неосознанно. :-)
[...]
>> Согласно БСЭ
>> "... Математика (греч. mathematike, от mбthema - знание, наука), наука
>> о количественных отношениях и пространственных формах действительного мира. ..."
>>
>> Мне, исходя даже только из этого определения, видно,
>> что математика к программированию, вообще относится едва-едва.
>
>Программирование и есть численное представление мира - как и математика.Не нужно путать кол-во, и число ему соответствующее (как
и цифры, которые суть лишь часть системы счисления, при помощи
которых мы можем пытаться ОБОЗНАЧАТЬ числа). :-)Не нужно путать математику, и программирование, также.
Вы читайте, что умные люди в энциклопедиях пишут, читайте:
"...
Программирование
, процесс составления упорядоченной последовательности действий
..."Сравните с определением математики?... ;-)
Просто с
>точки зрения математики программирование - брутальный подход, задействующий выскокоскоростные процессоры, тогда
>как математика путём "тождественных преобразований" ищет путей с малым числом вычислений.
>Ищет не математика... а математики (!), и их можно понять. ;-)
Но, тут уместно спросить, а вы вообще видели хоть раз системы
компьютерной алгебры, позволяющие получать решение в точном
аналитическом виде, например Derive?P. S. Из статьи про ЧИСЛА:
"...
В последние годы разрабатывается концепция "вычислимых" Ч., т. е. таких, приближения к которым могут быть заданы посредством какого-либо алгоритма. Понятие вычислимого Ч. определяется без пользования абстракцией актуальной бесконечности, на базе уточнённого понятия алгоритма.
..." -- Большая советская энциклопедия/poige
>в первую очередь, речь идет про языковые навыки. Спорить с
>тезисом "не можешь описать алгоритм решения на родном
>языке, не сможешь запрограммировать его на компьютерном",
>вряд-ли у кого-то успешно получится.Это все демагогия. Связь математики и програмирования отлично изложена в одной из первых книг Д. Кнута "Конкретная математика".
Без математики, не получится создавать грамотные алгоритмы, без алгоритмов, нет программирования.
>>в первую очередь, речь идет про языковые навыки. Спорить с
>>тезисом "не можешь описать алгоритм решения на родном
>>языке, не сможешь запрограммировать его на компьютерном",
>>вряд-ли у кого-то успешно получится.
>
>Это все демагогия. Связь математики и програмирования отлично изложена в одной из(от демагога слышу! :))
>первых книг Д. Кнута "Конкретная математика".
Я не отрицал наличие связей. В нашем мире, как создается впечатление,
вообще все связано.
>
>Без математики, не получится создавать грамотные алгоритмы, без алгоритмов, нет программирования.Шла речь про __создание__ программ, а не алгоритмов.
А именно, математик создает алгоритм, нужен кодер -- осуществить
перевод на один из компьютерных языков. Так вот, кодеру математики, как правило, для этого не нужно. У него должны быть именно развитые
языковые навыки.Простой пример: переводчик на встрече политиков. Если он "не секет"
в политике, это не так плохо, как если он просто косноязычен,
испытывает проблемы с формулировками, несется вперед, и понимает,
что придется "переписать".И вообще, вы бы хоть немного дальше читали, если действительно хотите
понять о чем речь:"...
Здесь я делаю различие между информатикой (computer science) - математическим анализом компьютерных программ - и программированием или разработкой программного обеспечения - дисциплиной, интересующейся написанием компьютерных программ. Программирование требует организационных способностей и языковой подготовки, а не абстрактного мышления, необходимого для занятий математическим анализом. (В университете меня заставили проходить год на лекции по математическому анализу, но я никогда из него ничего не использовал ни на занятиях по информатике, хотя для них матанализ был необходимым условием, ни в реальной жизни).
..." -- http://www.biblioteka.agava.ru/veryovka.htm/poige
"...
Интересно, что основополагающая работа по теории языка, сделавшая возможным написание компиляторов, была выполнена в Массачусетском технологическом институте лингвистом Наумом Хомским, а не математиком.
..."; // (c) Ален Голуб/poige
>Простой пример: переводчик на встрече политиков. Если он "не секет"
>в политике, это не так плохо, как если он просто косноязычен,
>испытывает проблемы с формулировками, несется вперед, и понимает,
>что придется "переписать".Если переводчик книг по программированию (как и любой другой нетривиальной области) "не секет" в переводимом предмете, то никакое красноречие его от закидывания тухлыми яицами не спасет.
Извини, не могу сейчас ответить - убегаю,
вот тебе ссылка, здесь есть хоть какое-то описание правил на русском
http://mirny.yakutia.ru/vrem/lit/computer/unix/sendmail_cf.txt
А вообще:
/usr/src/sendmail/cd/README и /usr/src/sendmail/doc/op.me (перевод http://www.opennet.me/docs/RUS/sendmail2)
в руки и будет тебе счастье :)
Не так уж это и сложно.
Также есть книга по Sendmail'у -классная вещь:
http://tcb.spb.ru/other/docum/Orelly/tcpip/sendmail/index.htm
На последние два твоих вопроса отвечу в понедельник, если после моего ответа не передумаешь использовать sendmail :)))
> А мне требуется допускать письма на определённый адрес только если адрес отправителя строго соответствует указанному.
....>Как обстоит дело в Exim, Postfix, QMail?
У qmail изначально ничего подобного нет, но можно организовать с помощью
патчей. Я например воспользовался этим:http://www.soffian.org/downloads/qmail/qmail-smtpd-doc.html
Основная идея данного патча в запуске внешней проги,указанной в переменной
среды $RCPTCHECK, у которой устаналиваются переменные окружения $SENDER и
$RECIPIENT. Ну а дальше все что фантазия позволит. :)))P.S. С помощью этого патча я у себя 99% спама зарубил
>А мне требуется допускать письма на определённый адрес только если адрес отправителя
>строго соответствует указанному.
>
>Есть ли у SendMail "более другой" способ управления доступом, желательно без установки
>дополнительных программ? Как обстоит дело в Exim, Postfix, QMail?в Postfix именно без "дополнительных" программ :)
параметр smtpd_sender_restrictions в конфигеp.s. postfix сейчас "в моде" ;) ИМХО заслуженно !