[Exim] was: Configuring exim for a dialup-system

Kezdőlap
Üzenet törlése
Válasz az üzenetre
Szerző: Marco Herrn
Dátum:  
Címzett: exim
CC: exim-users
Tárgy: [Exim] was: Configuring exim for a dialup-system
Hello Marc

I got it working now after using option 2 in eximconfig. After looking at
the big spec file I decided this was the easiest way. And now I really got
it working (after some more tries).

Many thanks, though

--
Sent through GMX FreeMail - http://www.gmx.net> Today's Topics:
>
>    1. Re: Quoted printables to 8bit (Ralf Sauther)
>    2. Logging the envelope sender for remote deliveries and faulures.
> [patch] (Theo E. Schlossnagle)

Jeffrey Goldberg schrieb am Freitag, den 09. Februar 2001:

> > sendmail can do an automatic conversion from quoted printables or base64
> > mails to 8bit. How can i do this on an exim mailsystem ? exim does not seem
> > to have this "feature" :-(
>
> May I ask why you want to do such an annoying thing? There must be a
> better solution to the problem it is designed to solve.


Of course. exim should be used here as a sendmail replacement in this
environment. And there were a few scripts that did not manage to read quoted
printables ;-(

Ralf
--
Ralf Sauther -- rhs@???
"Someday, in the mist of time, when they ask me if you knew me, remember that
you were a friend of mine. As the final curtain falls before my eyes, when
i'm old an wise" - Alan Parsons Project

This message is to Philip and developers.

I didn't see a development list :-(

For a bounce processing system I am working on it is extremely useful to know
who sent the message when it is delivered or hard fails. Of course, exim
knows this but it doesn't share this secret in the log file.

I have addeded E=<sender_address> (E is for Envelope Sender) as a logging
extension for remote deliveries and hard failures. And a configuration
options (a long one) to enable it. By default it is false and doesn't change
the way exim logs now unless you specify:

log_envelope_sender_on_remote_delivery = true

The motivation:

We send out mails and like most large mailing operations we tag the return
path (or envelope sender) with a piece of user identifying data to process
bounces and track deliveries effectively. (e.g.
bounces-userid@???). If we want to mark a user as bounced or
successfully delivered, we need to mark it in the database based on the user's
ID. We handle soft bounces in a completely separate system.

On the hosts that are sending the messages out, it is much much faster to
_not_ deliver the errors. Instead you use errors_to or deliver the
bounce-*@??? to :blackhole:. You pick up the bounce
information either in real-time or after the fact from the mail logs.

Before this "feature" you needed to marry up the queueid during delivery or
failure to the queueid of the inbound message. Only then could you see who
the envelope sender is. This can be annoying at the very least. Keeping
track of this can be resource intensive and an overall pain.

With the E=<sender_address> in the log line for those deliveries/failure, you
immediately have enough information to act on. (e.g. update a database row).

The patch (pretty small):

diff -u exim-3.22/src/deliver.c exim-3.22/src.lesord/deliver.c
--- exim-3.22/src/deliver.c     Fri Jan 19 04:31:45 2001
+++ exim-3.22/src.lesord/deliver.c      Sun Feb 11 14:52:26 2001
@@ -770,6 +770,12 @@
       }
     }


+    if(log_envelope_sender_on_remote_delivery)
+      if(sender_address)
+        s = mac_cat2(s, &size, &ptr, " E=", sender_address);
+      else
+        s = mac_cat2(s, &size, &ptr, " E=", "<>");
+
   /* string_cat() always leaves room for the terminator. Release the
   store we used to build the line after writing it. */


@@ -973,6 +979,12 @@
     fprintf(message_log, "%s %s\n", now, s);


   fflush(message_log);
+
+  if(log_envelope_sender_on_remote_delivery)
+    if(sender_address)
+      s = mac_cat2(s, &size, &ptr, " E=", sender_address);
+    else
+      s = mac_cat2(s, &size, &ptr, " E=", "<>");


   log_write(0, LOG_MAIN, "** %s", s);
   store_reset(reset_point);
diff -u exim-3.22/src/globals.c exim-3.22/src.lesord/globals.c
--- exim-3.22/src/globals.c     Fri Jan 19 04:31:46 2001
+++ exim-3.22/src.lesord/globals.c      Sun Feb 11 14:46:22 2001
@@ -410,6 +410,7 @@
 BOOL   log_all_parents        = FALSE;
 BOOL   log_arguments          = FALSE;
 char  *log_buffer             = NULL;
+BOOL   log_envelope_sender_on_remote_delivery = FALSE;
 char  *log_file_path          = LOG_FILE_PATH
                          "\0<--------------Space to patch log_file_path->";
 BOOL   log_incoming_port      = FALSE;
diff -u exim-3.22/src/globals.h exim-3.22/src.lesord/globals.h
--- exim-3.22/src/globals.h     Fri Jan 19 04:31:46 2001
+++ exim-3.22/src.lesord/globals.h      Sun Feb 11 14:46:35 2001
@@ -282,6 +282,7 @@
 extern BOOL   log_all_parents;        /* As it says */
 extern BOOL   log_arguments;          /* Logs Exim's args */
 extern char  *log_buffer;             /* For constructing log entries */
+extern BOOL   log_envelope_sender_on_remote_delivery; /* Log E=sender_address
on remote deliveries */
 extern char  *log_file_path;          /* If unset, use default */
 extern BOOL   log_incoming_port;      /* For logging incoming port numbers */
 extern BOOL   log_ip_options;         /* For logging IP source routing */
diff -u exim-3.22/src/readconf.c exim-3.22/src.lesord/readconf.c
--- exim-3.22/src/readconf.c    Fri Jan 19 04:31:48 2001
+++ exim-3.22/src.lesord/readconf.c     Sun Feb 11 14:46:08 2001
@@ -120,6 +120,7 @@
   { "locally_caseless",         opt_bool,        &locally_caseless },
   { "log_all_parents",          opt_bool,        &log_all_parents },
   { "log_arguments",            opt_bool,        &log_arguments },
+  { "log_envelope_sender_on_remote_delivery", opt_bool,
&log_envelope_sender_on_remote_delivery },
   { "log_file_path",            opt_stringptr,   &log_file_path },
   { "log_incoming_port",        opt_bool,        &log_incoming_port },
   { "log_ip_options",           opt_bool,        &log_ip_options },



--
Theo Schlossnagle
1024D/A8EBCF8F/13BD 8C08 6BE2 629A 527E 2DC2 72C2 AD05 A8EB CF8F
2047R/33131B65/71 F7 95 64 49 76 5D BA 3D 90 B9 9F BE 27 24 E7

On Sat, Feb 10, 2001 at 19:00:35 +0100, Marco Herrn wrote:
> Is there more comprehensive information about eximconfig available? Or maybe
> someone can tell me an easy on configuring exim.


Eximconfig is a debian addon, I think.
What about using the sample configuration file and changing it for
your needs? It is documented very well, and all information you need
in additional can be found on http://www.exim.org or in the spec.txt
which is probably installed in /usr/doc or a similar directory.

> Also, do I need to run fetchmail and procmail additional to exim?


You need fetchmail to access your pop3 account. In your case procmail
is highly recommended to sort mails in different mailboxes.

Marc




On Fri, Feb 09, 2001 at 05:18:50PM +0000, Philip Hazel wrote:
> OR: Are you misunderstanding what queue_run_max actually does? It does
> not cause Exim to start up that many queue runners at once.


Hmm, looks as if I have misunderstood. Basically what I want to do is to have Exim work
harder to push mail out of the door at night than I want to do during the day, and
changing the number of queue runners seem(ed) like a good way of doing that.

--
Alain Williams

On Thu, 8 Feb 2001, Gary van Blerk wrote:

> Anyway, I didn't happen to find a fix to the problem I have.


Did you spot sample configuration C013?

C013:  "I've take some tips from the FAQ about permitting only certain users
       to send to external mail and came up with my own for the receiving
       part."


> How do I make exim limit the users from being able to send email to remote
> networks?


-- 
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.



Hello!
Is there an option ignore_eacces for localuser director?
I've tried to implement vacation_message, as desribed in one (perhaps C007)
example configuration. I have an option "require_files ${home}/.message".
But one of my users has 750 rights to his home directory, so when my rule in
exim conf tries to check file I get "message frozen" message. I saw option
"ignore_eacces" in forwardfile director, but I want to have similar in
localuser director ! Is there any other solution ?
Robert

Can anyone help me? I've just taken over administration of a Debian Linux
box that's running Exim mail which, from what I understand, is a derivitive
of Smail. As the postmaster I continually get these "frozen" messages.
Here is an example of one of the thousands of messages the postmaster
receives daily:

Message 14Rng8-00007P-00 has been frozen. The sender is
<eai@???>.

The following address(es) have yet to be delivered:
eai@???: remote host address is the local host

Does anyone know what this means and how I can rectify it. If anybody has
any ideas I would really appreciate it.

Thanks in advance!


I desperately need some assistance, and am hoping someone reading this
newsgroup can help:

Our production mail server has been working reliably up until yesterday, at
which time the deliveries started failing. The associated error messages are
nearly identical:

<-- BEGIN LOG -->
LOG: 0 MAIN
Unfrozen by forced delivery
LOG: 0 MAIN
** <email info removed> R=lookuphost T=remote_pipe: Child process of
remote_pipe transport returned 134 (could mean shell command ended by signal
6 (Abort)) from command: /usr/bin/env
LOG: 0 MAIN
Frozen (delivery error message)
<-- END LOG -->

The return code 134 is constant -- although at times the command referred to
is an in-house Perl script (which has worked flawlessly for months). Most of
the time, however, the failing command is usually /usr/bin/env!?

I have tried forcing the delivery, rebooting the server itself, and have
scoured the system logs for something to identify the source of the problem.
No luck. I am completely lost.

The OS and mailer version(s) are:

# ./exim -bV
Exim version 3.13 #7 built 01-Jun-2000 10:07:35
Copyright (c) University of Cambridge 1999


# uname -impsvr
SunOS 5.7 Generic_106541-04 sun4u sparc SUNW,UltraSPARC-IIi-cEngine

If anyone has *any* suggestions as to where I might even start looking, I
would be extremely grateful.

My, ahem, employment might be at stake :(


--
Whitney Williams


On Fri, 9 Feb 2001, Ralf Sauther wrote:

> sendmail can do an automatic conversion from quoted printables or base64
> mails to 8bit. How can i do this on an exim mailsystem ? exim does not seem
> to have this "feature" :-(


Exim makes no modifications to message bodies. This was a conscious
design decision, based on my belief that it is not the job of an MTA to
mess with content. Exim is "8-bit clean".

-- 
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.



On Fri, 9 Feb 2001, Jason wrote:

> I was wondering if there was a way to make it run in daemon mode so that
> it could recieve email's
> because all that I know is that I can send email's out using
> exim <address>
> is there a way to make it start up when the machine starts up?
> Is there some good documentatoin somewhere that I could find all this
> information on ... because I really don't like bothering mailing lists
> but I can't find the information anywhere ...


RTFM. It's all there! Starting up in daemon mode is done exactly as for
Sendmail. Use the -bd and -q<time> options.


-- 
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.



On Fri, 9 Feb 2001, Jeremy C. Reed wrote:

> I am having problems stopping the continuing attempts to reply bounce
> messages back to spammers who don't even exist. I want to try to reply
> back if there is a bounce, but I don't want it to continue to try if there
> are problems. I do not want to retry undeliverable bounce messages. (I had
> an email to this list a month ago about this, but I never got it figured
> out.)


Set ignore_errmsg_errors[_after].

> Any ideas on how I can get this "ignore_errmsg_errors_after" to work?


It seems to work for me. Which release of Exim are you using?

-- 
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.



On Fri, 9 Feb 2001, Jeffrey C. Ollie wrote:

> Well, mainly I was thinking of "tls_host_accept_relay", but there may
> be other options that I don't recall that allow exim to act
> differently if a connection is encrypted.


You can easily enough set up a configuration with macros in it that you
vary when you start up from stunnel.

-- 
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.



On Sun, 11 Feb 2001, Theo E. Schlossnagle wrote:

> This message is to Philip and developers.
>
> I didn't see a development list :-(


At present, I'm the only developer.

> log_envelope_sender_on_remote_delivery = true


Point noted. I'll roll this into the idea for Exim 4 (I'm trying to
leave Exim 3 more or less alone now).

-- 
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.



More things about:
#directors
# ...
odpowiedz1:
require_files = ${home}/.message
# to prevent replying to certain domains
senders = ${if exists {${home}/.domains} {!${home}/.domains} {"^.*@.*}}

Everything works fine except one user. Mail is for postmaster, and exim tries
to deliver it to 2 users. For one user it works fine. For second:
<date> user@domain <postmaster@domain> D=odpowiedz1 defer (-1): file
existence defer in odpowiedz1 director: Permission denied
<second user> localdelivery succed
<second user> children all complete
<first user> ... directing defer (-1) ...
----------- || -------------
and so on ...
Can anyone help ? I would like to implement something like ignore_eacces, but
I don't know such an option in this director.
User's home dir rights: 750.


I appreciate the replies I have already received -- although in hindsight I
realize the information was sparse.

Attached below is a typical error message, generated via -d9 -v options:

Although it appears that the external Perl script is the culprit, it has not
been changed. Does this logfile shed any further light on the problem? The
Perl script does not complain when run standalone...

(non-essential identifiers are x'd out to foil spamming)

<== BEGIN LOGFILE EXCERPT ==>
Exim version 3.13 debug level 9 uid=0 gid=1
probably ndbm
Caller is an admin user
Caller is a trusted user
set_process_info: 2224 3.13 delivering specified messages
delivering message 14SDF5-0000X9-00
set_process_info: 2224 3.13 delivering 14SDF5-0000X9-00
Opened spool file 14SDF5-0000X9-00-H
user=root uid=0 gid=1 sender=
sender_local=0 resent=no ident=root
Non-recipients:
Empty Tree
---- End of tree ----
recipients_count=1
body_linecount=361 message_linecount=10
LOG: 0 MAIN
Unfrozen by forced delivery
Delivery address list:
xxxxxxxxxxxxxxxxxxxxxxx
locked /usr/local/exim/spool/db/retry.lockfile
opened DB file /usr/local/exim/spool/db/retry: flags=0
>>>>>>>>>>>>>>>>>>>>>>>>

Considering: xxxxxxxxxxxxxxxxxxxxxxx
www-etrader.com in local_domains? no (end of list)
unique = xxxxxxxxxxxxxxxxxxxxxxx
dbfn_read: key=R:xxxxxxxxxxxxxxx
dbfn_read: key=R:xxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx: queued for routing
>>>>>>>>>>>>>>>>>>>>>>>>

After directing:
  Local addresses:
  Remote addresses:
  Failed addresses:
  Addresses to be routed:
    xxxxxxxxxxxxxxxxxxxxxxx
  Deferred addresses:

>>>>>>>>>>>>>>>>>>>>>>>>

routing xxxxxxxxxxxxxxxxxxxxxxx, domain xxxxxxxxxxxxxxx
cluster_delivery router called for xxxxxxxxxxxxxxxxxxxxxxx
route_domain = xxxxxxxxxxxxxxx
routelist_item = *.xxxxxxxxxxxx $domain byname
after handling route_lists items, matched = 0
cluster_delivery router failed
lookuphost router called for xxxxxxxxxxxxxxxxxxxxxxx
dns lookup: route_domain = xxxxxxxxxxxxxxx
DNS lookup of xxxxxxxxxxxxxxxx(MX) succeeded
Actual local interface address is xxxxxxxxx
Actual local interface address is xxxxxxxxxxxxx
Actual local interface address is xxxxxxxxxxxxx
lists.xxxxxxxxxxxxxxx in hosts_treat_as_local? no (end of list)
fully qualified name = xxxxxxxxxxxxxxx
host_find_bydns yield = HOST_FOUND (2); returned hosts:
lists.xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx 10 1028
queued for remote_pipe transport: local_part=etrader domain=www-etrader.com
routed by lookuphost router:
deliver to xxxxxxxxxxxxxxxxxxxxxxx
transport: remote_pipe
host lists.www-etrader.com xxxxxxxxxxxxxxxx] MX=10
search_tidyup called
>>>>>> Local deliveries >>>>>>

locked /usr/local/exim/spool/db/retry.lockfile
opened DB file /usr/local/exim/spool/db/retry: flags=0
dbfn_read: key=Txxxxxxxxxxxxxxxxxxxxxxxx
delivering xxxxxxxxxxxxxxxxxxxxxxx as etrader using remote_pipe:
uid=60001 gid=60001 home=NULL current=/
auxiliary group list: <none>
set_process_info: 2225 3.13 delivering 14SDF5-0000X9-00 to xxxxxxx using
remote_pipe
remote_pipe transport entered
direct command:
argv[0] = /usr/bin/env
argv[1] = RECIPIENT=$local_part@$domain
argv[2] = /var/mail/bin/Munge-OUT
direct command after expansion:
argv[0] = /usr/bin/env
argv[1] = RECIPIENT=xxxxxxxxxxxxxxxxxxxxxxx
argv[2] = /var/mail/bin/Munge-OUT
set_process_info: 2227 3.13 reading output from |/usr/bin/env
RECIPIENT=$local_part@$domain /var/mail/bin/Munge-OUT
Writing message to pipe
writing data block size=44 timeout=3600
writing data block size=8191 timeout=3600
writing data block size=6221 timeout=3600
writing data block size=1 timeout=3600
remote_pipe transport yielded 3
remote_pipe transport returned FAIL
post-process xxxxxxxxxxxxxxxxxxxxxxx
LOG: 0 MAIN
** xxxxxxxxxxxxxxxxxxxxxxx R=lookuphost T=remote_pipe: Child process of
remote_pipe transport returned 134 (could mean shell command ended by signal
6 (Abort)) from command: /usr/bin/env
search_tidyup called
set_process_info: 2224 3.13 tidying up after delivering 14SDF5-0000X9-00
Processing retry items
Succeeded addresses:
Failed addresses:
Deferred addresses:
xxxxxxxxxxxxxxxxxxxxxxx: no retry items
end of retry processing
LOG: 0 MAIN
Frozen (delivery error message)
delivery deferred: update_spool=1 header_changed=0
Writing spool header file
Size of headers = 488
end delivery of 14SDF5-0000X9-00
<== END LOGFILE EXCERPT ==>