Mercurial > masqmail
annotate docs/oem-option @ 261:0afe18a9ee03
fixed previous commit and excluded mode_version() from main()
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Thu, 02 Dec 2010 16:52:39 -0300 (2010-12-02) |
parents | 05fa719b7002 |
children |
rev | line source |
---|---|
258
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
1 -oem |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
2 ==== |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
3 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
4 This document explains what I found out about the -oem/-oee options. It |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
5 is intended as a knowledge base for further development on this topic. |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
6 In version 0.3.0 (2010-11), masqmail's implementation of -oem is |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
7 considered broken and -oee is not implemented. |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
8 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
9 Following is the behavior masqmail actually had: |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
10 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
11 If -oi/-i is given, -oem is ignored. |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
12 If no -oi/-i is given, always return with a non-zero return code. |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
13 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
14 This current behavior is not like it should be. |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
15 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
16 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
17 The desired behavior |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
18 -------------------- |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
19 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
20 It had been difficult to identify good explanations. The problem, as |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
21 often, is that sendmail's source would be the definitive definition. |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
22 But in which version and what if common behavior differs from sendmail's |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
23 (maybe as a result of misunderstanding)? Exim's documentation has proven |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
24 to be a valuable resource. |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
25 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
26 In exim the behavior is such: |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
27 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
28 If an error is detected while a non-SMTP message is being received |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
29 (for example, a malformed address), the error is reported to |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
30 the sender in a mail message. Exim exits with a non-zero return |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
31 code then, no matter if the error message was successful or not. |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
32 (In exim, -oee is similar but exim returns successful if the error |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
33 message had been sent successful.) |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
34 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
35 The mutt wiki writes about ``sendmail -oi -oem'': |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
36 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
37 The mail server (in this case sendmail) will receive the message |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
38 in input, and will parse it. In case of a malformed message, |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
39 it will send an error message to the user to whom belongs the |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
40 MUA trasmitting the message (e.g. user@localhost.localdomain), |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
41 and it will exit with a non zero exit code: the -oem flag forces |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
42 the returning of a non zero exit code even in the case the error |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
43 message has been successfully sent to the local server. |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
44 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
45 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
46 What does it mean for masqmail? |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
47 ------------------------------- |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
48 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
49 Masqmail does not send error messages on malformed addresses. It does |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
50 not much check for syntax. It detects general errors (unexpected EOF, |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
51 no recipients, max message size exceeded) (see masqmail.c:mode_accept()) |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
52 but simply prints a message to stderr and exits non-zero. I think that |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
53 currently it is not of need to add some elaborate error handling in |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
54 this area. Hence, for the implementing of -oem and -oee would do assume |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
55 that sending the error message does always fail (because we never send |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
56 any such message) and hence we exit non-zero on error. This is the |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
57 similar behavior of both options. |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
58 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
59 From 0.3.1 on masqmail will not recognize -oem anymore and thus ignore |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
60 it like any unknown -oXXX option. It's behavior is then as if error |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
61 message sending fails. |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
62 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
63 Remind that all this affects only the case of accepting non-SMTP messages |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
64 on stdin. |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
65 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
66 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
67 On the relationship of -oi and -oem |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
68 ----------------------------------- |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
69 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
70 It seems as if the two options should not affect each other; in contrast |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
71 to the behavior in masqmail before 0.3.1. Their relationship is just |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
72 that -oem does only affect non-SMTP messages on stdin, which is the |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
73 typical use case of -oi. |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
74 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
75 |
05fa719b7002
fixed -oem by removing it ;-)
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
76 meillo |