4. ОБЩИЕ ПРОБЛЕМЫ SENDMAIL


Q4.1 - я должен использовать уайлдкард MX для моего домена?

Дата: 9 июля, 1996
Модифицирован: 5 ноября, 1997

Если это  возможно, то нет.

Уайлдкард  MX записей имеет много семантического "мусора". Например, она будет соответствовать хосту "unknown.your.domain" - если Вы явно не проверяете ваш домен на  неизвестные хосты, Вы получите "MX list for hostname points back to hostname"( MX  список для пунктов имени хоста обратно к имени хоста" ) или "config error: mail loops back to myself" ("ошибка конфигурации: почта возвращена к началу цикла ко мне же непосредственно").

См. RFCS 1535, 1536, и 1912 (обновленный RFC 1537)для большего количества деталей и других связанный (или общих) проблем. См. также _DNS и BIND_ Albitz и Liu.

Они могут также заставлять вашу систему прибавлять ваш домен к исходящему FQDN  в отчаянной попытке послать почту  туда, куда она якобы адресована, но потому что *.your.domain допустим из-за уайлдкарты MX, доставка к not.real.domain.your.domain будет формировать дамп на Вас же, и Вы можете даже оказаться в цикле, поскольку домен продолжает становиться прикрепляемым все последующее время  раз за разом (проблема "config error: mail loops back to myself").

Уайлдкард MX записей - только плохая идея, это очевидно и просто. Они не работают так, как  вы ожидаете, и фактически никто не получает их права. Избегайте их любой ценой.


Q4.2 - Как я могу установить автоответчик?

Дата:март 23, 1996
Модифицирован: 16 февраля, 1999

Это - проблема локального мэйлера, а не проблема sendmail. В зависимости от того, что вы делаете, смотрите на procmail (см. Q4.9), ftpmail, или Majordomo.

Самая последняя версия Majordomo может быть найдена в ftp://ftp.greatcircle.com/pub/majordomo/. Она написана на  Perl и требует или Perl 4.036, или, кажется, выполняется с небольшими отклонениями только под версией 5.001a или более поздней. Для уверенности, проверьте веб-интерфейс для Majordomo называемый LWGATE  в http://www.netspace.org/users/dwb/lwgate.html. Самые последние версии Perl (и 4.x и 5.x) могут быть найдены в http://www.metronet.com/perlinfo/src/. Подробная информация относительно Perl может быть найдена в http://www.metronet.com/perlinfo/perl5.html

Самая последняя версия ftpmail может быть найдена в ftp://src.doc.ic.ac.uk/packages/ftpmail или любом архиве comp.sources.misc (том 37).


Тема: Q4.3 - Как я могу заставить sendmail доставлять локальную почту в  $HOME/.mail вместо  /usr/spool/mail (или /usr/mail)?

Дата: 9 июля, 1996
Модифицирован: 7 января, 1999

Опять же, это - локальная проблема мэйлера, а не проблема sendmail. Или модифицируйте ваш мэйлер  (потребуется исходный текст) или измените программу, названную "локальным" мэйлером в описании конфигурации, на новую программу, которая способна выполнять такую локальную доставку. Одна программа, которая  способна  выполнять это - procmail (см. Q4.9), хотя, вероятно, имеется также много других программ.


Тема: Q4.4 - Почему почта  доставляется в интерактивном режиме когда я пытаюсь заставить делать это только в режиме очереди?

Дата: март 23, 1996
Модифицирован: 14 августа, 2000

Или, я пробую использовать флаг "не передают дорогому мэйлеру" , и это доставляет почту в интерактивном режиме так или иначе. Я могу видеть, что это делается, поскольку имеется вывод " sendmail -v foo@somehost " (или Mail -v или эквивалент).

Флаг -v в sendmail (который связан с  флагом -v в Mail  и других программах  этого семейства) указывает sendmail наблюдать транзакцию. Так как Вы явно захотели видеть то, что происходит, предполагается, что Вы не хотите использовать очередь, и поэтому  эта особенность выключается. Удалите флаг -v  и используйте вместо этого команду "tail -f" вашего лога (выводит последние 10 строк файла - прим.перев.) , чтобы видеть то, что происходит.

Если Вы пытаетесь использовать флаг "не передавать дорогому мэйлеру " (флаг мэйлера "e"), убедитесь, что Вы также включаете глобальную опцию "HoldExpensive" (чьё старое односимвольное название было "C") - иначе флаг мэйлера будет игнорироваться .


Тема: Q4.5 - Как я могу избавиться от сообщений "MX list for hostname points back to hostname" и "config error: mail loops back to myself"?

Дата: 17 января, 1997
Модифицирован: 8 мая, 2000

Я получаю такие сообщения об ошибках:

 

553 MX list for domain.net points back to relay.domain.net  
554 <user@domain.net>... Local configuration error 
  
Как я могу решить эту проблему?

Вы попросили почту в домен (например, domain.net) принимать вначале на определенный хост (в этом случае relay.domain.net) используя   MX запись, но машина релея  не признает себя как domain.net. Добавьте domain.net в файл /etc/mail/local-host-names [известный как /etc/sendmail.cw до версии 8.10] (если Вы используете FEATURE(`use_cw_file')) или добавьте " Cw domain.net " в ваш конфигурационный файл.

Имеется пара дополнительных случаев, где Вы фактически не можете хотеть локальной доставки, и таким образом добавление domain.net к классу w  не будет правильным решением:

  • Когда relay.domain.net должен  действовать только как форвардер (forwarder) , например  как firewall/gateway. Соответствующая настройка должна быть установлена в содержимом mailertable  для domain.net.
  • Когда relay.domain.net вторичная (и т.д) MX запись, и MX по ошибке указывает на CNAME, или другое "не-каноническое" имя [это дает "config error: mail loops back to me (MX problem?)"].Соответствующей настройкой будет указание в  MX  фактического имени, добавив кругом  MX адресата к классу w.
ВАЖНОЕ ЗАМЕЧАНИЕ: При выполнении изменений в вашем конфигурационном файле, убедитесь, что Вы уничтожаете и перезапускаете демона sendmail  (это касается любых изменений  в конфигурации, а не только  описанного выше): kill -HUP `head -1 /var/run/sendmail.pid`

Тема: Q4.6 - Почему мой  процесс sendmail иногда зависает при соединении по  SLIP/PPP?

Дата: март 23, 1996

Я соединяюсь с сетью с помощью SLIP/PPP соединения. Иногда мой процесс sendmail зависает (хотя видно что часть сообщения  была передана). Все остальное работает. Что является неправильным?

Наиболее вероятно, это проблема вообще не sendmail , а низкогоуровневого сетевого соединения. Важно чтобы MTU (Maximum Transfer Unit) для SLIP/PPP соединения был установлен должным образом с обеих сторон. Если же они не соответствуют, большие пакеты будут застревать, и подключение зависнет.


Тема: Q4.7 - Как я могу суммировать статистику, сгенерированные sendmail в syslog?

Дата: 9 апреля, 1997
Модифицирован: январь 4, 1999
Модифицирован: март 27, 2000
Модифицирован: 13 июля, 2000
Модифицирован: май, 2001
Модифицирован: август, 2001

Этот вопрос обсужден на страницах  445-449 of _sendmail, 2nd Ed_ (см. страницу 319 первого издания) Брайеном Косталесом (см. вступление sendmail-faq // book/ISBN/1-56592-222-0 в Q6.1).

Чтобы посмотреть, что еще является доступным на сегодня, проверьте Comprehensive Perl Archive Network. Для получения дополнительной информации, см. the comp.lang.perl.* FAQs at ftp://rtfm.mit.edu/pub/usenet-by-hierarchy/comp/lang/perl/

Если вы заинтересованы в использовании этих видов приложений, помогающих Вам осуществлять некоторый оперативный контроль вашей системы, Вы можете заинтересоваться  MEWS (Mail Early Warning System). Из README:

If you've ever written a perl script to parse sendmail log files looking for errors, MEWS might be of interest to you. If you've ever thought about writing a perl script to munge sendmail log files, cringed a little and hurriedly came up with an excuse not to do it, read on. If you don't have a Solaris 2.5 machine, you can probably stop reading here. The Mail Early Warning System (MEWS) gives postmasters immediate notification of trouble spots on your mail backbone. It only works with sendmail. To explain it in a nutshell, whenever sendmail returns a 4xx or 5xx SMTP code, with the MEWS modifications, it also sends the code over UDP to a daemon which then replays the error message to interested parties. The man pages go into a little bit more detail.(все классно, только надо Solaris - прим.перев.) Если это как-то звучит, Вы можете быть заинтересованы в получении большего количества подробностей, Вы можете найти архив MEWS в ftp://ftp.qualcomm.com/pub/people/eamonn/mews.tar.Z.

Имеется обновление от Stephane Lentz 29 июня, 2000:

  • anteater - написанный в C++ (+ STL lib), быстрый, действительно многообещающий (Вы можете прибавлять модули)
  • mreport - написанный в C, прекрасно работает с  маленькими логами, но не с большими(все данные хранятся в памяти)

См. также страницу sendmail tools Джона Оливера для указания на несколько связанных скриптов(25 мая, 2001)

Ссылки Брэда Ноулеса для popstats, smtpstats and syslog_stats были восстановлены в новом месте. (29 мая, 2001)


Тема: Q4.8 - Как я могу проверить мой sendmail.cf, чтобы быть уверенным что он перезаписывает адреса правильно?

Дата: 9 июля, 1996

Рекомендуемая программа для этого - "checksendmail" от Роба Колстада. Старые версии ее доступны на различных архивных узлах, но в настоящее время  единственный способ получить самую современную версию (которая была модифицирована, чтобы понимать длинный синтаксис названий опций версии 8.7 , а также теперь поддерживает и Perl 4.x и Perl 5.x) - от самого Роба.

Самый последний архив будет сделан общедоступным (наиболее вероятно через SMTPRD, выполненный Andras Salamon; см. Q6.5, entry sendmail-faq // online/index/14) сразу как только будет получен.


Тема: Q4.9 - Что такое procmail, и где я могу получить это?

Дата: 8 апреля, 1997
Модифицирован: 28 февраля, 1999

Программа "procmail" - замена для локального мэйлера (с различными именами: /bin/mail, /usr/bin/mail, mail.local, rmail, и т.д ...). Она была перенесена  практически на  каждую Unix-подобную OS, с которой вы можете столкнуться, и имеет целый набор основных особенностей. Обычно, это  приблизительно на 30 % более быстрее выполнение работы локального мэйлера в сравнении с программами типа /bin/mail или /usr/bin/mail, она испытавалась на прочность настолько  сильно, что это сделало ее чрезвычайно безопасной (намного более безопасной чем  большинство локальных мэйлеров) и очень устойчивой. Procmail также способен  помочь Вам установить квоту на пользовательский почтовый ящик через стандартый Unix-механизм квоты (см. Q4.3).

Короче говоря, независимо от того, что вы имеете, вам почти гарантируют, что procmail лучше (если нечего добавить, отмечу, что автор был способен сфокусировать большое количество времени и энергии в создание этой самой лучшей и самой быстрой доступной утилиты, в то время как большинство системных продавцов только выбрасывает кое-что так быстро, как только они могут, а затем  переходят  к целой паузе OS).

Однако, это только  поверхность того, на что  способен procmail .Наиболее важная особенность этого то, что  фактически это  дает Вам, стандартный способ создания правил (procmail называет их "recipes"(рецепты)) чтобы обработать вашу почту прежде чем сообщения помещаются в ваш почтовый ящик, эта особенность - одна из наиболее важных утилит, какие каждый администратор может найти в ее наборе. Фильтруя  или автоматически борясь с 80 % вашего ежедневного мусора, она позволяет Вам тратить большее количество времени на более жесткие 20 % случаев.

Объявлено, что в последние выпуски версии 8 sendmail встроена поддержка использования procmail как альтернативного локального мэйлера (см. "FEATURE(local_procmail" для версии 8.7 и выше). Они также поддерживают procmail как дополнительный локальный мэйлер, если вы заинтересованы в полной  замене вашего  текущего локального мэйлера на  procmail (см. "MAILER(procmail)" в версии 8.7 и выше).

Вы можете также установить procmail как пользователь и выполнять его из вашего .forward файла, хотя подобное имеет тенденцию быть немного медленным и менее эффективным.

Подробная информация относительно procmail может быть найдена в  http://www.procmail.org/ и самая последняя версия может быть найдена в ftp://ftp.procmail.org/pub/procmail/.

Procmail - также ядро в пакете управлений списком рассылки, называемом "SmartList", так что, если вы уже получили procmail, добавление SmartList может быть хорошей опцией. Некоторые владельцы рассылок предпочитают Majordomo, Listserv, или одну  из других такого рода программ, но SmartList также имеет более чем несколько сторонников. Ваши персональные вкусы диктуют, присягаете ли Вы SmartList или нет.


Тема: Q4.10 - Как я могу решить  ошибки типа "cannot alias non-local names"?

Дата: март 24, 1997

Я обновил  sendmail, полученную от моего продавца к самой последней версии, и теперь я получаю эти сообщения об ошибках, когда  выполняю "newaliases":

 

/etc/aliases: line 13: MAILER-DAEMON... cannot alias non-local names 
 
/etc/aliases: line 14: postmaster... cannot alias non-local names 
 
  
Как  мне решить эту проблему?

Ваше локальный мэйлер  не имеет специального флага  "A". Редактируйте строчку Mlocal в файле sendmail.cf и добавьте "A" к флгам, перечисленным после " F = ".

Еще лучше, если вы используете последнюю версию sendmail, которая использует m4 для генерации .cf файла из  .mc файла, сгенерируйте ваш sendmail.cf, и посмотрите, фиксирует ли это проблему. Не забудьте установить новый sendmail.cf и перезапустить демона sendmail.


Тема: Q4.11 - Является ли sendmail готовым к проблеме 2000 (Y2K)? 

( :))-прим.перев.)

Дата: 24 апреля, 1997
Модифицирован: 7 июля, 1999

Пожалуйста, посмотрите страницу Year 2000 Readiness Disclosure.


Тема: Q4.12 - Как я могу  посылать почту отдаленным адресатам, используя моего провайдера, и при этом локальную почту доставлять немедленно?

Дата: 14 октября, 1997
Модифицирован: 9 февраля, 1999

Сначала, Вы должны заставить sendmail не использовать DNS на вашей локальной машине таким образом, чтобы ваш хост не пытался соединиться с вашим  провайдером для  DNS запросов. См. Q3.22 для получения дополнительной информации.

Вы также должны определить "smart host" или внешний релей, чтобы обрабатывать всю почту, которую Вы не можете доставить локально (это  и будет почтовый сервер вашего провайдера).

Вы должны сконфигурировать это так, чтобы smtp мэйлер рассмотривался как "expensive", добавив F=e флаг мэйлера и сообщив sendmail не соединяться с expensive мэйлерами по умолчанию, устанавливая опцию HoldExpensive в True.

Вы должны добавить mydomain.com к sendmail.cw файлу, или  в строчку Cw  в файл  sendmail.cf. См. Q4.5.

Наконец, Вы должны запускать программу периодически, чтобы отдать ваш пакет вашему провайдеру и доставить любую почту, которая, возможно, уже стоит у провайдера в очереди для Вас. См. Q3.23.


Тема: Q4.13 - Что значит "unknown mailer error 1"?

Дата: 24 сентября, 1998

Вообще говоря, sendmail не  выполняет конечную доставку сообщений, а полагается  вместо этого на локального доставочного агента . Такой агент как  mail.local  поставляется вместе с дистрибутивом sendmail. Любой такой агент, которого sendmail вызывает для доставки сообщения, как определено в строке М в файле sendmail.cf, должен выйти с кодом 0 (успешно), или одним  из кодов неисправностей, отмеченных в src/sysexits.h. Они обычно работают в диапазоне 64 - 78, так что 1 находится  вне этого диапазона, что и приводит к генерации sendmail вышеупомянутой ошибки.


Тема: Q4.14 - Как я могу сделать почтовую очередь для другого домена?

Дата: 28 апреля, 1999
Модифицирован: 21 декабря, 2000

Ситуация: Ваша система mailserver.my.domain должна действовать как вспомогательный почтовый сервер для mailserver.destination.domain. Клиент хочет принять почту для адреса user@destination.domain. Для этого требуется:

  1. MX записи: destination.domain. IN MX 10 mailserver.destination.domain. destination.domain. IN MX 20 mailserver.my.domain. mailserver.destination.domain. IN MX 10 mailserver.destination.domain. mailserver.destination.domain. IN MX 20 mailserver.my.domain.


    Последние две записи "на всякий случай" (если кто-то забыл о маскарадинге).
    Удостоверитесь, что Вы используете реальные имена всех систем, Mailserver.my.domain должно быть его собственным именем, иначе вы получите известную ошибку mail loops back to myself.

    Вместо использования MX записей, которые указывают на mailserver.destination.domain, Вы можете использовать FEATURE(mailertable) на  mailserver.my.domain как объяснено в cf/README для routing e-mails.

     

  2. На вашей системе: не делайте ничего, если Вы имеете установленные anti-relay rules (которые Вы действительно должны иметь!). В этом случае, прибавьте destination.domain к required files (8.9) (или для 8.8). Не прибавляйте destination.domain или mailserver.destination.domain к классу w на вашей системе!
  3. Sendmail на вашей системе будет пробовать доставить почту во время запуска  очереди, однако, клиент может вызывать доставку, используя команду ETRN

Тема: Q4.15 - Как я могу создать вложение  с помощью sendmail?

Дата: 26 мая, 1999

Вы не можете. Sendmail это mail transfer agent (MTA)- почтовый сервер. Создание сообщений электронной почты, включая добавление вложений или сигнатуры, является функцией mail user agent (MUA) - почтового клиента. Некоторые популярные почтовые клиенты:  mutt, elm, exmh, Netscape, Eudora и Pine. Некоторые специализированные пакеты (metamail, некоторые модули Perl  и т.д.) также  могут использоваться, чтобы создавать сообщения с вложениями.


Тема: Q4.16 - Как мне найти номер версии sendmail?

Дата: 2 августа, 1999
Модифицирован: 19 июля, 2000

Выяснять, который версия выполняется фактически, сделайте извне telnet на порт SMTP (порт 25). Демон обычно объявляет свое название и номер версии, как в следующем случае: thishost% telnet that.host 25 Trying IP_addr... Connected to that.host. Escape character is '^]'. 220 that.host ESMTP Sendmail 8.9.3/8.9.3; Mon, 2 Aug 1999 11:39:34 -0700 ^] telnet> quit Сделайте  второй запрос на вашем локальном хосте, следующая команда должна отобразить ее номер версии, наряду с некоторой дополнительной конфигурационной информацией, возможно включая конфигурационный номер версии:

 

% echo \$Z | /usr/sbin/sendmail -bt -d0

Version 8.10.2

Compiled with: MAP_REGEX LOG MATCHGECOS MIME7TO8 MIME8TO7 NAMED_BIND

                        NETINET NETUNIX NEWDB NIS QUEUE SCANF SMTP USERDB XDEBUG

============ SYSTEM IDENTITY (after readcf) ============

(short domain name) $w = knecht

(canonical domain name) $j = knecht.Sendmail.ORG

(subdomain name) $m = Sendmail.ORG

(node name) $k = knecht.Sendmail.ORG

========================================================

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)

Enter <ruleset> <address>

> 8.10.2

%

 

Скорректируйте путь как правильно; наиболее обычные расположения -  /usr/lib и /usr/sbin .

Тема: Q4.17 - Как мне обрабатывать имена пользователей с символами верхнего регистра?

Дата: 18 ноября, 1999
Модифицирован: 8 августа, 2001

В  действительности  Вы не должны этого делать, потому что символы верхнего регистра в именах пользователей противоречат традиции Unix . Если Вы это сделаете, то адреса электронной почты будут зависимы от регистра, так  что почта к <USER@your.host> будет сброшена вместо того чтобы быть доставленой к <user@your.host>. Поскольку это противоречит ожиданиям многих, это не рекомендуется.

Но если Вы все равно настаиваете на выполнении этого, и Вы имеете версию 8.10, поместите следующее в ваш .mc file: MODIFY_MAILER_FLAGS(`LOCAL', `+u')dnl Если Вы не имеете версии 8.10, Вы будете должны переопределить  переменную m4  LOCAL_MAILER_FLAGS , но её первоначальное значение изменяется от OS до OS, так что это еще одна причина не портить этот флаг.

Другая уловка - создание алиасов для локальных пользователей с символами верхнего регистра в именах в форме:

 

 # lowercase version to real one  
   uppercase: Uppercase 
 
Это будет заставлять sendmail доставлять сообщения локальным
 пользователям  с символами верхнего
 регистра в именах в случае
 нечувствительности sendmail к регистру. 

Тема: Q4.18 - Что значит "NOQUEUE: Null connection from ..."?

Дата: 24 февраля, 2000
Модифицирован: март 12, 2000

Сообщение  подобно: NOQUEUE: Null connection from host.domain [IP.AD.DD.RESS] В logfile означает, что host.domain соединился с вашим MTA, но ни инициализировал передачу сообщения (издавая команду MAIL), ни использовал любую из команд, которые зарегистрированы отдельно (EXPN/VRFY/ETRN). Если это не случается очень часто, Вы можете проигнорировать это. Если же это случается очень часто, это является или чьей-то игрой,  или это - сетевая проблема.

Примечание1: существенная часть сообщения не NOQUEUE, а "Null connection from ...". В частности NOQUEUE не ошибка индикации,а только "метка - заполнитель" когда идентификатор очереди не был назначен, обычно, потому что передача совокупности сообщений не началась (все же). Это может случаться также и  в других сообщениях, и там  также существенная часть та,  которая поступает после NOQUEUE.

Примечание 2: В 8.10, текст, который вводил в замешательство был заменен на: "... did not issue MAIL/EXPN/VRFY/ETRN during connection to ..."


Тема: Q4.19 - Как мне конфигурировать sendmail для POP/IMAP/ ...?

Дата: март 12, 2000

Вы не нужно делать это. Sendmail - почтовый сервер, чья главная  цель состоит в том, чтобы посылать и принимать электронную почту (прежде всего через SMTP). Sendmail не выполняет никаких протоколов удаленного доступа типа POP или IMAP. Но если Вы хотите узнать больше относительно этих и других (не - sendmail) вещей,  связанных с электронной почтой, пожалуйста обратитесь к нашей странице Other (Non-Sendmail) E-Mail Related Links.


Тема: Q4.20 - Как я автоматически могу копировать сообщения, основываясь на адресе отправителя или получателя?

Дата: 30 июня, 2000
Модифицирован: 27 февраля, 2001
Модифицирован: 5 июня, 2001

Это требует заказного программирования. Вы могли или записывать фильтр почты, используя новый (в настоящее время не поддержанный) Milter API в sendmail 8.10 и позже (см. libmilter/README) или же Вы можете посмотреть на некоторые   другие неподдерживаемые подсказки:

Отметьте, что никакой подобной особенности не было добавлено в sendmail. Когда спрашивали относительно этого одного из sendmail разработчиков , ответ  был " потому что мы все еще верим немного в секретность. "

Тема: Q4.21 - Как я могу послать почту всем пользователям?

Дата: 12 декабря, 2000

Не имеется никакого волшебного короткой команды  для этого. Но это нетрудно установить: создайте пункт в файле алиасов alluser: :include:/etc/mail/allusers Не забудьте выполнить ' newaliases'. Затем перечислите ваших пользователей, по одному  в строке, в файле. Вы можете сделать это с помощью: awk -F: '$3 > 100 { print $1 }' /etc/passwd > /etc/mail/allusers


Оглавление Sendmail FAQ