LINUX.ORG.RU
ФорумAdmin

Проблемы с настрокой SMTP

 , ,


0

1

Добрего всем времени суток.
Вообщем в заголовке темы, причина обращения написана. Вообще я не админ, но так как его нет вообще то настраивать сервер приходится мне. Собственно во время настройки конфига SMTP вылетает ошибка, делаю все так как написано тут, http://thetech.com.ua/?p=147, но во время конпеляции выдает ошибку.

m4:/etc/mail/sendmail.mc:112: Warning: end of file treated as newline

sendmail.mc:
dnl # Dialup/LAN connection overrides
dnl #
include(`/etc/mail/m4/dialup.m4')dnl
include(`/etc/mail/m4/provider.m4')dnl
include(`/etc/mail/tls/starttls.m4')dnl
define(`SMART_HOST',`smtp.ornest.com')dnl
dnl #
dnl # Masquerading options
FEATURE(`always_add_domain')dnl
MASQUERADE_AS(`smtp-server')dnl
FEATURE(`allmasquerade')dnl
FEATURE(`masquerade_envelope')dnl
dnl # Default Mailer setup
MAILER_DEFINITIONS
MAILER(`local')dnl
MAILER(`smtp')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
# dnl define(`confDOMAIN_NAME', `ornest.com')dnl

PS почту настраиваю первый раз в жизни, поэтому заранее извиняюсь если что не так написал или ошибка банальна( в последнем я уверен ).


А ты сендмейл по какой-то определенной причине используешь? Если нет, то снеси его нафиг, поставь postfix, например, и оно у тебя почти само все заработает.

alex_the_v ★★★
()

Warning: end of file treated as newline

1. Где написано, что это ошибка ?
2. Что именно непонятно во фразе «end of file treated as newline» ? Просто перевод строки надо в конце последней строки.

AS ★★★★★
()
Ответ на: комментарий от alex_the_v

Если нет, то снеси его нафиг, поставь postfix, например, и оно у тебя почти само все заработает.

Умиляют такие советчики...

AS ★★★★★
()
Ответ на: комментарий от AS

Ты - любитель секса с шлимылом? Или ты хочешь сказать, что сендмейл предоставляет ясные и хорошо документированные средства конфигурирования, доступные человеку, который ни разу не конфигурил MTA? Или к чему ты это сказал?

Если ты про «само заработает», то в шляпе, например, постфикс поставляется с очень вменяемым дефолтным конфигом. Там буквально надо вписать почтовый домен и еще пару вещей. После этого оно «практически сразу само работает».

alex_the_v ★★★
()
Последнее исправление: alex_the_v (всего исправлений: 1)
Ответ на: комментарий от alex_the_v

Хотелось бы услышать, какие такие «ясные и хорошо документированные средства конфигурирования, доступные человеку, который ни разу не конфигурил MTA» предоставляет postfix?

И, если эти средства есть, почему весь интернет завален рекомендациями по редактированию файла /etc/postfix/main.cf?

mky ★★★★★
()
Ответ на: комментарий от mky

Я правильно понимаю, что на твой взгляд сендмейл обладает не менее ясным способом конфигурирования и не менее простой для понимания архитектурой, чем постфикс или экзим? И лично ты бы рекомендовал человеку, который никогда не настраивал MTA, начинать изучение вопроса с сендмейла, так?

Чем там завален интернет - вообще дело десятое.

alex_the_v ★★★
()
Последнее исправление: alex_the_v (всего исправлений: 1)
Ответ на: комментарий от alex_the_v

За exim не скажу, а что postfix, что sendmail для новичка одинаково непонятны, ИМХО. В sendmail *.mc файл конфигурации достаточно краток, но, так как это m4, то выглядит необычно. А в postfix'е, вроде, всё привычно, но куча строк (комментариев), и, если с превого раза захочется всё прочитать, то утонешь.

Лично я бы рекомендовал ТС именно то, что он делает — найти готовый краткий HOWTO, подходящий для его случая и тупо следовать ему, а потом смотреть, что не работает и искать ответы на конкретные вопросы. И, набив шишек, он начнёт понимать как работает электронная почта. Ну, или начинать с чтения RFC :-)

Если предположить, что ТС нужен именно такая конфигурация — MTA, пересылающий всю почту на другой вышестоящий MTA, то он нашёл правильный «рецепт» и замена sendmail на postfix для него будет шаг назад. По умолчанию конфиг postfix'а подразумевает, что postfix сам расслыает всю почту адресатам напрямую, TC потратит время на поиск параметра relayhost.

mky ★★★★★
()
Ответ на: комментарий от mky

Я готов согласиться, что без хотя бы краткого изучения предмета у ТС ничего не получится. Просто сендмейл - наверное наихудший для освоения продукт. Хуже только autotools.

С сендмейлом испытывают трудности даже люди с двадцатилетним опытом. Нам приходится юзать сендмейл на Соляре, ибо Соляра у нас стоит под одной специфической софтиной от Алкателя, и какое-либо изменение в поставку операционки нам приходится согласовывать с Алкатель, иначе потом будут проблемы с саппортом. Так вот, тот самый чувак с двадцатилетним опытом потратил полтора дня, пытаясь понять почему на двух соседних хостах сендмейл с одинаковым конфигом ведет себя абсолютно по-разному. У сендмейла ужасные инструменты для настройки, уродливая и неимоверно сложная для понимания архитектура и практическое отсутствие инструментов для отладки (сравни с exim -bhc 127.0.0.1.25). Плюс к тому, сендмейл отсутствует по умолчанию во всех операционках, кроме Соляры и BSD. В AIX, вроде, постфикс, но я могу ошибаться.

ТС сказал, что он - не админ, и хочет просто получить работающий релей с минимумом усилий. В шляпе постфикс поставляется с комплектом шаблонов main.cf, в числе которых есть и конфиг релея, надо только домены/хостнеймы прописать. Конфиги очень подробно документированы. В дебиане/убунту у тебя dpkg-reconfigure при установке постфикса спрашивает как ты собираешься его использовать, в меню есть пункт «Relay», ты его выбираешь, оно спрашивает у тебя домен, еще какую-то шнягу, и вуаля, ты получаешь готовый работающий релей. На сайте постфикса в официальной документации есть даже картинки, в которых невозможно не разобраться. Материала в интернете по постфиксу - вагон и маленькая тележка.

Пойми, бывают ситуации, когда не надо набивать шишки и читать RFC. Когда надо чтобы фигак-фигак, и заработало. У ТС как раз этот случай, и сендмейл для этого случая - наихудший выбор. Он вообще для всего наихудший выбор, и его применение оправдано, только если ты по каким-либо причинам вынужден его использовать.

alex_the_v ★★★
()
Последнее исправление: alex_the_v (всего исправлений: 1)
Ответ на: комментарий от alex_the_v

Ты - любитель секса с шлимылом ?

Я не знаю, чем его удобно заменить. :-) Postfix поддерживает не весь milter, а с Exim, хоть он и может многое сам, всё равно milter хочется.

Или ты хочешь сказать, что сендмейл предоставляет ясные и хорошо документированные
средства конфигурирования, доступные человеку, который ни разу не конфигурил MTA?
Или к чему ты это сказал?

Тебе уже задали ряд вопросов, повторяться не буду. Вообще, у меня такое впечатление, что ты просто повторил сказанную кем-то фразу, которая в Internet болтается, а сам и не пробовал.

Что касается настроек, во всех дистрибутивах Sendmail лежит уже настроенный, по крайней мере, в упомянутой тобой «шляпе» так было до 7.x как минимум, потом я ей пользоваться перестал.

AS ★★★★★
()
Ответ на: комментарий от alex_the_v

(сравни с exim -bhc 127.0.0.1.25)

А что там ? У Sendmail тоже есть дебаг на много-много строк вывода.

Плюс к тому, сендмейл отсутствует по умолчанию во всех операционках

Он долго был по-умолчанию и во многих Linux. Но убрали его не по причине сложности, в основном - сложность-то, она небольшая, если не заморачиваться с ручным редактированием cf. Основная причина - всё же, работающий в chroot Postfix менее уязвим (да и без chroot - статистика по уязвимостям в его пользу). Если использовать Sendmail, надо больше внимания уделять чтению рассылок и обновлениям, а рядовой современный юзер делать этого не будет.

AS ★★★★★
()
Ответ на: комментарий от AS

так было до 7.x как минимум, потом я ей пользоваться перестал

Угу, понятно.

milter хочется

Нет, не хочется.

у меня такое впечатление, что ты просто повторил сказанную кем-то фразу

Как ты, однако, поспешен в выводах.

alex_the_v ★★★
()
Ответ на: комментарий от AS

У Sendmail тоже есть дебаг на много-много строк вывода.

Из которых 90% не содержат какой-либо ценной информации, strace и то более понятную картину дает. А для разбора остальных десяти процентов надо привлекать как минимум следственный комитет при прокуратуре, чтобы разобраться кто убийца.

Он долго был по-умолчанию

Когда-то UUCP был по-умолчанию. Убрали сендмейл по причине того, что он решает проблемы, которые более не ставятся перед MTA. А те, которые ставятся, он либо не решает, либо решает с большим трудом. Например, сделай мне хранение алиасов и форвардов в Оракле.

alex_the_v ★★★
()
Последнее исправление: alex_the_v (всего исправлений: 1)
Ответ на: комментарий от AS

Слушай, жесть какая вообще. А что ты за операционку юзаешь на серверах? Просто интересно.

alex_the_v ★★★
()
Ответ на: комментарий от alex_the_v

Например, сделай мне хранение алиасов и форвардов в Оракле.

Зачем это ?!

А что ты за операционку юзаешь на серверах ?

ALT Linux.

AS ★★★★★
()
Ответ на: комментарий от AS

Зачем это ?!

С разными другими продуктами интегрироваться, например. У меня, вот, пару лет назад закомандовали такую штуку. Пришлось к Довекоту драйвер для Оракла изваять на Pro*C, спасибо Тимо за хорошую архитектуру.

alex_the_v ★★★
()
Ответ на: комментарий от alex_the_v

milter хочется

Нет, не хочется.

Сделай условное тестирование входящей почты на спам, к примеру. Скажем, несколько произвольных тестов, по результату некоторых - контент-фильтр, по результату других - грейлистинг, по результату третьих - немедленный отлуп. При этом первые вторые и третьи - не самостоятельные группы, а выборочно взятые результаты из всех тестов, то есть, один и тот же результат может учитываться при решении о применении разных действий. Грубо говоря, конфиг в стиле скрипта, с функциями, математикой и т.п.

AS ★★★★★
()

/etc/mail/sendmail.mc

Файл как редактировал? покажи вывод

file /etc/mail/sendmail.mc
а то бывают любители редактировать файл на винде и потом закидывать его обратно.

Наличие перевода строки в конце файла можно посмотреть

tail -1 /etc/mail/sendmail.mc | od -x

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 1)
Ответ на: комментарий от alex_the_v

Пришлось к Довекоту драйвер для Оракла изваять

И при чём тут MTA ? Задача MTA - выполнить доставку до mail storage. А юзер для себя уже формирует настройки, через Sieve, например. Алиасы для MTA - это небольшое количество не сильно стандартных списков, которые сисадмин настраивает, и их не на столько много, чтобы задействовать СУБД. Тем не менее, Sendmail может брать алиасы из скрипта, а там уж что и на чём напишешь. Причём, лучше из файла наверное, а из СУБД доставать периодически - менее накладно.

AS ★★★★★
()

К срачу в комментах. Некоторое время назад выбирал MTA, смотрел Sendmail, Postfix, Exim, Qmail. Только у Exim есть живой рабочий репозиторий кода, а значит, культура разработки на современном качестве (или по крайней мере предпосылки к ней). Все остальные варианты стали для меня неприемлемы автоматически.

Krieger_Od ★★
()
Ответ на: комментарий от AS

Сделай условное тестирование входящей почты на спам

На постфиксе не выйдет, там можно либо полиси, который запрещает/разрешает, либо мильтер, который тоже запрещает/разрешает, либо контент-фильтр, который получает письмо из очереди, производит с ним манипуляции, после чего закидывает обратно в очередь. На экзиме - не вопрос, посмотри в выводе, который я на пастбин закинул, строки с acl_c_spamscore. Это переменная, которую экзим высчитывает в зависимости от ряда условий, после чего решает отдать письмо спамассассину, заблэклистить хост или что еще сделать.

Ты - просто невероятно крут, если замутил такую штуку на сендмейле. Покажи конфиги, ужасно любопытно.

alex_the_v ★★★
()
Ответ на: комментарий от AS

И при чём тут MTA

С МТА как раз проблемы не возникло, экзим и постфикс отлично работают с ораклом. А IMAP с поддержкой оракла найти не удалось, пришлось погнуть самому.

alex_the_v ★★★
()
Ответ на: комментарий от alex_the_v

Ты - просто невероятно крут, если замутил такую штуку на сендмейле.

Я не зря про milter написал, так что не особенно это круто.
Решение тут: http://puszcza.gnu.org.ua/software/mailfromd/

К Postfix это тоже можно приспособить, но у него не так много данных для обработки в milter передать можно, как у Sendmail.

AS ★★★★★
()
Ответ на: комментарий от sdio

после ввода:

file /etc/mail/sendmail.mc
показал вот это:
/etc/mail/sendmail.mc: ASCII English text
после ввода этого:
tail -1 /etc/mail/sendmail.mc | od -x
такой ответ:
0000000 2023 6e64 206c 6564 6966 656e 6028 6f63
0000020 666e 4f44 414d 4e49 4e5f 4d41 2745 202c
0000040 6f60 6e72 7365 2e74 6f63 276d 6429 6c6e
0000060

rdbn
() автор топика
Ответ на: комментарий от AS

А, блин, это читерство, вся логика в мильтере. Я к постфиксу тоже полиси-демон писал, который это все умел делать. Я думал, что сендмейл умеет математику в конфиге, и ты все это осилил. Например, вот что у меня в экзиме:

...
acl_check_connect:
	warn	set acl_c_spamscore = 0
		set acl_c_spamreason = R
		set acl_c_remote_hostname = ${lookup dnsdb{defer_never,ptr=${sender_host_address}}}
		set acl_c_logid = "${sender_host_address}/${acl_c_remote_hostname}"
...
acl_check_mailfrom:
	warn	!verify = reverse_host_lookup
		hosts  = !+relay_from_hosts
		set acl_c_spamscore = ${eval:$acl_c_spamscore+30}
		set acl_c_spamreason = ${acl_c_spamreason} NO_PTR
		logwrite = ${acl_c_logid} reverse DNS lookup failed
...

Ну, а в конце делаются выводы на основании acl_c_spamscore.

alex_the_v ★★★
()
Ответ на: комментарий от alex_the_v

С МТА как раз проблемы не возникло, экзим и постфикс отлично работают с ораклом.

Но зачем ? Есть красивое решение. Cyrus-IMAP с сервисом smmapd. Через него можно спрашивать, доступен ли ящик. Sendmail это умеет. В этом случае MTA требуется спросить «доставляем» и получить ответ «да/нет/позже». Собственной базы пользователей MTA, в этом случае, иметь не надо.

AS ★★★★★
()
Ответ на: комментарий от rdbn

после ввода:
показал вот это:

Так, в итоге, что не работает-то ? «Warning: end of file treated as newline» - это предупреждение о том, что mc не заканчивается переводом строки.

AS ★★★★★
()
Ответ на: комментарий от alex_the_v

А, блин, это читерство, вся логика в мильтере.

Но удобно, и milter появился в Sendmail, а уже оттуда переехал в Postfix (но, всё ещё, не весь).

Ну, а в конце делаются выводы на основании acl_c_spamscore.

А конструкция, позволяющая внешнюю проверку выполнить по результату, есть ? На самом деле, я читал когда-то документацию по Exim, когда milter в Sendmail не было ещё, и были попытки куда-нибудь сползти, но менее сложным описание мне тогда не показалось.

AS ★★★★★
()
Ответ на: комментарий от AS

Все, всем спасибо все заработало.
Отдельное спасибо sdio.

PS насчет причины забавно вышло, нужен был переход на новую строку( собственно забавность в том, что я это делал, но ошибка все равно вылетала, сегодня попробовал все заработало, странно как то ).

rdbn
() автор топика
Ответ на: комментарий от rdbn

PS насчет причины забавно вышло, нужен был переход на новую строку

В конфигах приложений это полезно делать всегда. m4 - далеко не единственное приложение, где это имеет значение. Лучше лишний перевод строки, чем его отсутствие в последней строке. Это просто следует сделать привычкой.

Только, в данной ситуации, дело было в чём-то другом. Кстати, последняя строка

# dnl define(`confDOMAIN_NAME', `ornest.com')dnl
неправильная. Символ «#» не является признаком начала комментария у m4. Признак - «dnl». А в конце строк dnl для того, чтобы в оттранслированный выходной файл не попадали лишние переводы строк. Как правило, они не мешают, но мало ли...

AS ★★★★★
()
Ответ на: комментарий от AS

Но удобно

Даже у постфикса концепция полиси-демона и контент-фильтра гораздо функциональней, чем мильтеры. Насколько я знаю, мильтеры портированы в постфикс не как офигенная фича, а исключительно для совместимости.

А конструкция, позволяющая внешнюю проверку выполнить по результату, есть ?

Ну конечно есть:

  drop !senders = :
       !condition = ${if <{$acl_c_spamscore}{150}}
       message = Connection closed. ACL spamscore threshold (150 points) exceeded. \
                 Spamscore is $acl_c_spamscore! \
                 Warning: IP [$sender_host_address] added to Blacklist. \
                 Details: $acl_c_bouncemessage
       condition = ${lookup mysql{INSERT INTO blacklist (ip,time,counter,active) \
                                  VALUES ('${sender_host_address}',${tod_epoch},1,1) \
                                  ON DUPLICATE KEY UPDATE time = ${tod_epoch}, counter = counter + 1, active = 1 ;}}

alex_the_v ★★★
()
Ответ на: комментарий от AS

Есть красивое решение. Cyrus-IMAP

Cyrus-IMAP и «красивое решение» в одном предложении несовместимы. Открой ради любопытства сорцы дебиановского пакета и сосчитай патчи, которые они накладывают только для того, чтобы эта горбуха собралась.

Довекот умеет это без всяких smmapd. Плюс к этому, он умеет SASL, то есть, можно настроить MTA, чтобы он аутентификацию проводил через довекот. Я отдаю почту в довекот через LMTP, а он ее сам раскладывает с учетом sieve, и прочей ботвы. При этом постфикс просто не примет письмо, если довекот скажет «опаньки, нет такого ящика».

alex_the_v ★★★
()
Ответ на: комментарий от alex_the_v

Даже у постфикса концепция полиси-демона и контент-фильтра гораздо
функциональней, чем мильтеры.

Ага, before-queue появился в 2.1 только. «Очень» функциоанильно оно было до 2005 года... Или когда там 2.1 вышел ? Кроме того, он использует SMTP для общения с фильтром. Вопрос - он параметры исходного соединения как в фильтр передаёт, если соединение с локалхоста устанавливается ? IP источника уже сразу теряется.

Cyrus-IMAP и «красивое решение» в одном предложении несовместимы.

Да ладно ?

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

Открой, ради любопытства, сорцы дебиановского пакета и посмотри, что именно в этих патчах. Собирается и без них. Хотя, без сомнения, некоторые полезны. Это раз. А два - не всё ли тебе равно, как он собирается, когда за тебя мантейнер собрал уже ?

Довекот умеет это без всяких smmapd.

Что Довекот умеет ? Ты перечитай, что я написал. И «без всяких» тут неуместно: smmapd - часть Cyrus-IMAP, такая же, как pop3d, imapd, lmtpd и прочее.

Плюс к этому, он умеет SASL, то есть, можно настроить MTA, чтобы
он аутентификацию проводил через довекот.

То есть ? Хочешь сказать, что он собой saslauthd заменяет ? Ты точно ничего не путаешь ? Если нет, тогда зачем ?. А так-то sasl умеет и Sendmail, соответственно, если в saslauthd настроить rimap, то пожалуйста, пользуйся напрямую через imap-сервер.

При этом постфикс просто не примет письмо, если довекот скажет «опаньки, нет такого ящика».

Точно ? Передача по LMTP, по идее, начинается после помещения сообщения в очередь. Для того Постфиксу и надо уметь с той же базой пользователей и эккаунтинга работать, что и Довекоту, чтобы при приёме глянуть, стоит ли принимать. Проверь лог доставки:

http://www.postfix.org/lmtp.8.html

The Postfix SMTP+LMTP client implements the SMTP and LMTP mail delivery protocols. It processes message delivery requests from the queue manager.

AS ★★★★★
()
Ответ на: комментарий от AS

Ага, before-queue появился

На самом деле, в постфиксе и правда не все так гладко с этим делом. Я клепал комплект из полиси-демона (туда все как надо передается), который запоминал все что надо в базе и контент-фильтра, который по msgid находил заранее прикопаную инфу. Есть еще вот какая штука: Postfix generates its own EHLO, XFORWARD (for logging the remote client IP address instead of localhost[127.0.0.1]),

Да ладно ?

Хм, надо же, даже разработку возобновили. Я когда смотрел, оно было тухлое и воняло. Ну ладно, не буду гнать. Но все равно, количество и содержимое патчей в дебиане пугает.

Что Довекот умеет ?

Предоставлять информацию о наличии мейлбокса и свободного места в нем постфиксу с помощью полиси-сервиса. С экзимом такая проблема не стоит, там можно это решить десятью разными путями.

service quota-status {
    executable = quota-status -p postfix
    inet_listener {
        port = 12340
        # You can choose any port you want
    }
    client_limit = 1
}
smtpd_recipient_restrictions =
    ...
    check_policy_service inet:mailstore.example.com:12340

У меня, к сожалению, в постфиксе прописаны virtual_mailbox_maps, то есть он прямо в мускуле проверяет наличие мейлбокса.

Хочешь сказать, что он собой saslauthd заменяет

Угу. Заменяет:

service auth {
  unix_listener /var/spool/postfix/private/dovecot-auth {
    mode = 0600
    user = postfix
    group = postfix
  }
}
smtpd_sasl_auth_enable                          = yes
smtpd_sasl_type                                 = dovecot
smtpd_sasl_path                                 = private/dovecot-auth
smtpd_sasl_security_options                     = noanonymous

Точно ?

Да, ты прав, доставку он осуществляет после того, как принял письмо. У меня постфикс смотрит в ту же базу, что и довекот. Если надо единственный источник правды, то можно заюзать довекотовский полиси-демон, о котором я говорил выше.

alex_the_v ★★★
()
Ответ на: комментарий от AS

Давай забьем, а то холивар какой-то развели. Постфикс меня, на самом деле, и правда перестал удовлетворять. Единственный его плюс - это то, что он простой как дверь, надо минимум мозга, чтобы получить нормально работающую систему.

alex_the_v ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.