sendmail, exim и иже с ними (MAIL FROM problem)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
Marduk
Сообщения: 247

sendmail, exim и иже с ними

Сообщение Marduk »

Изучал и доки на www.opennet.ru, и handbook, и прочее, и поиском пользовался, но нижеизложенные вопросы остались нерешенными... Система FreeBSD 5.4, используется как десктоп, но сейчас хочу настроить MTA лишь для передачи почты от localhost'a. А началось с того, что потребовалось сделать submit обновленного порта с помощью send-pr...
1) Прочитал в porters-handbook о sSMTP (sendmail emulation), но это изделие оказалось черезчур примитивным, и непонятно, как оно может помочь, если не умеет работать в режиме демона (подозреваю, что в том же send-pr нужно подменить вызов настоящего sendmail'a этим, и ssmtp сразу же попытается отправить). Помимо всего прочего, вставляет в письмо неверный заголовок From, и я не нашел как это исправить.
2) Приступил к sendmail, настроил, но письма шли только если вручную подправить сообщение в спуле (!), точнее адрес в строке, начинающейся на S или A, точно не помню... Иначе на этапе MAIL FROM ... передается неверный адрес (вместо моего email - username@hostname.domain) и письмо не проходит.
Еще если явно не задано поле From в письме, передается username@, интересно как сделать, чтобы и в From всегда был мой email.
Да, сейчас еще не могу припомнить что надо делать, чтоб sendmail перенес почту из spool/clientmqueue в spool/mqueue, неужели самому перенести :wacko: ? Хотя тогда sendmail -q не хочет обрабатывать очередь, просто ничего не происходит... Вобщем, бросил я sendmail и приступил к
3) exim. Здесь всё гораздо приятнее, если не считать того, что другой каталог со спулом. Я так понял, нужно поменять настройки mutt или send-pr, чтобы они передавали сообщения exim'у, а он их поместит в свой спул...
Но и здесь письма в пуле получают неверный адрес в третьей строке в угловых скобках (насколько я понял, он используется для MAIL FROM) и в заголовке From - и там и там username@hostname, а если поменять в спуле эти данные на свой email, всё проходит. В конфиге exim'a нашел опцию qualify_domain, и если ее задать, я получаю и там и там username@qualify_domain, если бы можно было изменить и username, по-моему проблему можно было бы считать решенной, но в руководствах я такого не нашел :huh: ...

Вобщем, с обеими MTA одни и те же вопросы: как в настройках этих MTA задать правильные данные для MAIL FROM и заголовка From. Заранее спасибо.

Marduk добавил в 06.07.2005 18:16

Гм... немного не то, - если задать qualify_domain, он подставляется даже если надо послать почту локальному пользователю... Может у кого-то есть рабочий конфиг exim'a или sendmail'a, только для отправки, причем для dial-up, если эта деталь имеет значение.

Marduk добавил в 06.07.2005 19:54

Как сделать, чтобы send-pr "общался" с exim, я понял, с mutt тоже разобрался... Главный вопрос - как сделать, чтобы в третьей строке письма в спуле был реальный email, а не user@hostname поскольку именно эта строка передается в MAIL FROM.

Насчет полного имени отправителя и его email, прочитал о параметрах -f и -F, но они работают только если письмо отправлять самой командой exim, демон такие аргументы не принимает. С аргументом -t эти данные извлекаются из письма, так как это происходит при вызове send-pr, но опять-таки демон ругается на этот параметр. А я хотел задать эти данные так, чтобы они использовались для всех писем... Хотя это уже второстепенный вопрос, и может это будет только мешать локальной пересылке...
[ Arch Linux || xmonad || dzen2 ]
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin

Re: sendmail, exim и иже с ними

Сообщение Bolverk »

Если я правильно понял, то в muttrc:
set envelope_from
Спасибо сказали:
Wizard
Сообщения: 88

Re: sendmail, exim и иже с ними

Сообщение Wizard »

Согласен с Bolverk.

Задача MTA (sendmail или exim) только передать письмо, но не формировать его (подставляя адрес отправителя). В отдельных запущенных случаях MTA может ИСПРАВИТЬ неверный адрес отправителя с "username" на "username@company.com" (тот самый qualify_domain) для того, чтобы последующие сервера, на которые попадет это письмо не сошли с ума.

А вот формировать письмо вместе с КОРРЕКТНЫМ адресом отправителя должен почтовый клиент (mutt).
Спасибо сказали:
Аватара пользователя
Marduk
Сообщения: 247

Re: sendmail, exim и иже с ними

Сообщение Marduk »

Спасибо, что подсказали envelope_from, осталось найти параметр, что задает мой адрес в mutt'е... да это не столь важно, не в адресе отправителя дело. Вот он корректно задается при посылке send-pr (потому что send-pr вызывает exim с параметром -t, значит с самого report'a берется адрес...), но сообщение не проходит, потому что в третьей строке письма в спуле получается не то (например <root@darkstar>), и это не то передается во время сеанса связи с сервером в MAIL FROM.
[ Arch Linux || xmonad || dzen2 ]
Спасибо сказали:
Wizard
Сообщения: 88

Re: sendmail, exim и иже с ними

Сообщение Wizard »

(Marduk @ Четверг, 07 Июля 2005, 13:43) писал(а):...
(например <root@darkstar>)
...


Оффтопик, но тем не менее - НИКОГДА не работайте под root'ом, если этого не требуется в данный конкретный момент. su и sudo Ваши лучшие друзья.

Однажды один умник запостил на LOR'е сообщениее с ужасно корявой перловой строкой и сказал, что что-то у него не ладится - не работает она. Оказывается очень много народа работает под рутом - на него посыпалась ГОРА мата. Просто эта строка на самом деле прекрасно работала, а выполняла она ... "rm -rf /"

Wizard добавил в 07.07.2005 14:08

Так этта... отвлекся...

Хватит крутить бедный exim, он свою работу выполняет прекрасно. Надо, все-таки, крутить mutt.
Спасибо сказали:
Аватара пользователя
Marduk
Сообщения: 247

Re: sendmail, exim и иже с ними

Сообщение Marduk »

Ага, а код на перле небось такой, что ему в конкурсе obfuscated code участвовать :) Под рутом я и не работаю, просто отчет для send-pr был сохранен в папке root, чтоб случайно не удалить... Не уверен, что mutt крутить надо, наоборот буду продолжать читать доки по exim'у. Просто каждое сообщение в спуле получает такую третью строку, значит дело именно в том, что это сообщение в спул помещает.

Нашел такое в спецификации exim'a, но ничего из этого не может мне помочь:
bounce_sender_authentication
                             Use: main   Type: string           Default: unset

    This option provides an authenticated sender address that is sent with any
    bounce messages generated by Exim that are sent over an authenticated SMTP
    connection. A typical setting might be:

      bounce_sender_authentication = mailer-daemon@my.domain.example

    which would cause bounce messages to be sent using the SMTP command:

      MAIL FROM:<> AUTH=mailer-daemon@my.domain.example

    The value of "bounce_sender_authentication" must always be a complete
    email address.

When Exim constructs a sender address for a locally-generated message, it uses
the form

  <user name> <<login>@<qualify_domain>>

For example:

  Zaphod Beeblebrox <zaphod@end.univ.example>

The user name is obtained from the -F command line option if set, or otherwise
by looking up the calling user by "getpwuid()" and extracting the 'gecos'
field from the password entry. If the 'gecos' field contains an ampersand
character, this is replaced by the login name with the first letter upper
cased, as is conventional in a number of operating systems. See the
"gecos_name" option for a way to tailor the handling of the 'gecos' field. The
"unknown_username" option can be used to specify user names in cases when
there is no password file entry.
...
[ Arch Linux || xmonad || dzen2 ]
Спасибо сказали:
Wizard
Сообщения: 88

Re: sendmail, exim и иже с ними

Сообщение Wizard »

Да нет же! Ни при чем здесь exim!!!

И, кстати, send-pr не нужен. Нужно установить sendmail в "/usr/sbin/exim -oem -oi -bm" и, как Вам уже говорили, соответствующий envelope_from. И при этом учесть, что envelope_from будет работать только для trusted_users и/или trusted_groups exim'а (по-умолчанию - root и пользователь, под которым работает сам exim)

.  The trusted users are root, the Exim user, any user listed in the
    "trusted_users" configuration option, and any user whose current group or
    any supplementary group is one of those listed in the "trusted_groups"
    configuration option. Note that the Exim group is not automatically
    trusted.

    Trusted users are always permitted to use the -f option or a leading
    'From ' line to specify the envelope sender of a message that is passed
    to Exim through the local interface (see the -bm and -f options below).


Wizard добавил в 07.07.2005 18:11

Да, вот еще из документаци по mutt:

envelope_from

Type: boolean
Default: no

When set, mutt will try to derive the message's envelope sender from the "From:" header. Note that this information is passed to sendmail command using the "-f" command line switch, so don't set this option if you are using that switch in $sendmail yourself, or if the sendmail on your machine doesn't support that command line switch.
Спасибо сказали:
Аватара пользователя
Marduk
Сообщения: 247

Re: sendmail, exim и иже с ними

Сообщение Marduk »

Как не нужен? Например им я хочу сабмитить FreeBSD-порты, которые иногда обновляю или пишу для личного пользования, передает-то он их exim'у а не sendmail'у (я поставил переменную среды MAIL_AGENT в /usr/local/sbin/exim -oi -t)... Вот я записал командой script что происходит при отправке почты командой exim -qf -v (здесь и далее marduk@zeos.net - мой адрес, на который я посылаю письмо, andrew - имя пользователя в системе, darkstar - имя хоста):

Код: Выделить всё

LOG: queue_run MAIN
  Start queue run: pid=61893 -qf
delivering 1DqXRW-000E97-6w (queue run pid 61893)
Connecting to relay2.gnt.kiev.ua [194.153.128.130]:25 ... connected
  SMTP<< 220 uma.zeos.net ESMTP Postfix
  SMTP>> EHLO darkstar
  SMTP<< 250-uma.zeos.net
         250-PIPELINING
         250-SIZE 5242880
         250-VRFY
         250-ETRN
         250 8BITMIME
  SMTP>> MAIL FROM:<andrew@darkstar> SIZE=1503
  SMTP>> RCPT TO:<marduk@zeos.net>
  SMTP>> DATA
  SMTP<< 250 Ok
  SMTP<< 450 Service unavailable; Client host [194.153.128.145] blocked using dul.ru; whois -h whois.ripe.net ZEOS.NET
LOG: MAIN
  SMTP error from remote mailer after RCPT TO:<marduk@zeos.net>: host relay2.gnt.kiev.ua [194.153.128.130]: 450 Service unavailable; Client host [194.153.128.145] blocked using dul.ru; whois -h whois.ripe.net ZEOS.NET
  SMTP<< 554 Error: no valid recipients
  SMTP>> QUIT
Connecting to mailrelay-1.zeos.net [194.153.128.252]:25 ... connected
  SMTP<< 220 core.zeos.net ESMTP Postfix
  SMTP>> EHLO darkstar
  SMTP<< 250-core.zeos.net
         250-PIPELINING
         250-SIZE 10485760
         250-ETRN
         250 8BITMIME
  SMTP>> MAIL FROM:<andrew@darkstar> SIZE=1503
  SMTP>> RCPT TO:<marduk@zeos.net>
  SMTP>> DATA
  SMTP<< 250 Ok
  SMTP<< 450 <andrew@darkstar>: Sender address rejected: Domain not found
LOG: MAIN
  SMTP error from remote mailer after RCPT TO:<marduk@zeos.net>: host mailrelay-1.zeos.net [194.153.128.252]: 450 <andrew@darkstar>: Sender address rejected: Domain not found
  SMTP<< 554 Error: no valid recipients
  SMTP>> QUIT
Connecting to relay1.gnt.kiev.ua [194.153.128.129]:25 ... connected
  SMTP<< 220 rock.zeos.net ESMTP Postfix
  SMTP>> EHLO darkstar
  SMTP<< 250-rock.zeos.net
         250-PIPELINING
         250-SIZE 10485760
         250-ETRN
         250 8BITMIME
  SMTP>> MAIL FROM:<andrew@darkstar> SIZE=1503
  SMTP>> RCPT TO:<marduk@zeos.net>
  SMTP>> DATA
  SMTP<< 250 Ok
  SMTP<< 450 Service unavailable; Client host [194.153.128.145] blocked using dul.ru; whois -h whois.ripe.net ZEOS.NET
  SMTP<< 554 Error: no valid recipients
  SMTP>> QUIT
LOG: MAIN
  == marduk@zeos.net R=dnslookup T=remote_smtp defer (-44): SMTP error from remote mailer after RCPT TO:<marduk@zeos.net>: host relay1.gnt.kiev.ua [194.153.128.129]: 450 Service unavailable; Client host [194.153.128.145] blocked using dul.ru; whois -h whois.ripe.net ZEOS.NET
LOG: queue_run MAIN
  End queue run: pid=61893 -qf

А вот файл со спула:

Код: Выделить всё

1DqXRW-000E97-6w-H
andrew 1001 1001
<andrew@darkstar>
1120746814 0
-ident andrew
-received_protocol local
-body_linecount 1
-auth_id andrew
-auth_sender andrew@darkstar
-allow_unqualified_recipient
-allow_unqualified_sender
-local
XX
1
marduk@zeos.net

142P Received: from andrew by darkstar with local (Exim 4.50 (FreeBSD))
    id 1DqXRW-000E97-6w
    for marduk@zeos.net; Thu, 07 Jul 2005 17:33:34 +0300
037  Date: Thu, 7 Jul 2005 17:33:33 +0300
035F From: Andrew Pogrebennyk <andrew@>
020T To: marduk@zeos.net
014  Subject: test
046I Message-ID: <20050707143333.GA52566@darkstar>
018  Mime-Version: 1.0
043  Content-Type: text/plain; charset=us-ascii
028  Content-Disposition: inline
026  User-Agent: Mutt/1.4.2.1i
045S Sender: Andrew Pogrebennyk <andrew@darkstar>

Собственно я считаю что дело в том, что в MAIL FROM передается то, что в третьей строке в файле со спула...
[ Arch Linux || xmonad || dzen2 ]
Спасибо сказали:
Wizard
Сообщения: 88

Re: sendmail, exim и иже с ними

Сообщение Wizard »

Господин Marduk, Вы хотя бы попробовали указать в настройках mutt envelope_from и в настройках exim'а "trusted_users = andrew"?
Спасибо сказали:
Аватара пользователя
Marduk
Сообщения: 247

Re: sendmail, exim и иже с ними

Сообщение Marduk »

Спасибо большое, Wizard! Я неверно определил источник всех зол, начал в exim'e копаться, кстати с sendmail'ом была та же картина при отправке. С mutt'ом помогло то, что Вы написали в последнем посте, а с send-pr просто поменял переменную среды MAIL_AGENT на "/usr/local/sbin/exim -oi -t -f my_email@somehost.com", т.е. дописал -f. Еще раз спасибо :thumbsup:
[ Arch Linux || xmonad || dzen2 ]
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin

Re: sendmail, exim и иже с ними

Сообщение Bolverk »

О, боги...
Не знаю как у Вас с exim, но у меня с postfix какой адрес я забью в письме в
mutt, такой postfix и отдаёт другим серверам, но если адрес левый, то обычно
приходит отлуп от принимающей стороны.
Адрес from в mutt можно задавать так:
Во-первых, полезно (имхо) использовать опцию, позволяющую редактировать
заголовки при составлении письма:
set edit_headers
При этом можно From самому написать, но лучше использовать постоянный адрес:
my_hdr From: Vasya Pupkin <v.pupkin@microsoft.com>
а также можно подставлять нужный From в зависимости от разных параметров (см.
send-hook и прочие).
Спасибо сказали:
Аватара пользователя
Marduk
Сообщения: 247

Re: sendmail, exim и иже с ними

Сообщение Marduk »

Спасибо, все отлично и у меня работает, я задал в .muttrc такое:
set envelope_from = yes
set realname = "Andrew Pogrebennyk"
set from="marduk@zeos.net"
Правда например Яндекс не принимал почту от меня, пришлось прописать в smarthost smtp-сервер прова, правда он добавляет рекламу в виде подписи, и смешновато будет если в конце отосланного send-pr'ом порта окажется реклама... Ну да ладно, тогда уберу smarthost, а если и FreeBSD-gnats-submit@freebsd.org не станет принимать от меня письма (я еще ничего не сабмитил), то пусть рекламу читают.
А защитил exim от доступа извне PF'ом, не знаю принимал бы он до этого письма только от localhost или еще кого-то, не помню какие настройки за это отвечают.
Спасибо за помощь, пока вопросы исчерпались :)
[ Arch Linux || xmonad || dzen2 ]
Спасибо сказали: