File: README.exim4

package info (click to toggle)
mlmmj 1.2.11-7.1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 2,020 kB
  • ctags: 439
  • sloc: ansic: 7,225; sh: 4,030; php: 727; perl: 481; makefile: 176
file content (111 lines) | stat: -rw-r--r-- 3,201 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111

README.exim4                                                      May 7th 2005


This is a step-by-step guide to run mlmmj with Exim4. The most current version
of this can be found on http://plonk.de/sw/mlmmj/README.exim4.



Notes:
- We assume that you have a user and group called mlmmj to use with mlmmj
- The exim user needs read access rights to mlmmj's spool directory and its
  subdirectories
- Existence of mailing lists is automatically checked ($listdir/index) and you
  don't need to put anything into your aliases file
- If you want VERP to be done by your MTA, follow the instructions below and
  put an empty file named verp into the control directory of your lists


1. In the main configuration section:

MLMMJ_HOME=/var/spool/mlmmj
domainlist mlmmj_domains = list.your.domain


2. Add +mlmmj_domains to relay_to_domains:

domainlist relay_to_domains = other.domain : +mlmmj_domains


3. mlmmj is barely interested in delay warnings, so add this in the main
configuration:

delay_warning_condition = ${if match_domain{$domain}{+mlmmj_domains}{no}{yes}}


4. In the routers section (before the dnslookup router, preferably at the
beginning):

mlmmj_router:
  driver = accept
  domains = +mlmmj_domains
  require_files = MLMMJ_HOME/${lc::$local_part}/index
  local_part_suffix = +*
  local_part_suffix_optional
  headers_remove = Delivered-To
  headers_add = Delivered-To: $local_part$local_part_suffix@$domain
  transport = mlmmj_transport


If you want VERP to be done by your MTA, also add this:

verp_router:
  driver = dnslookup
  # we only consider messages sent in through loopback
  condition = ${if eq{$sender_host_address}{127.0.0.1}{yes}{no}}
  # we do not do this for traffic going to the local machine
  domains = !+mlmmj_domains : !+local_domains
  ignore_target_hosts = <; 0.0.0.0; 127.0.0.0/8; ::1/128; fe80::/10; ff00::/8
  # only the un-VERPed bounce addresses are handled
  senders = \N^.+\+bounces-\d+@.+\N
  transport = verp_smtp


To prevent temporary errors for not-existing lists, add !+mlmmj_domains to the
domains condition of the dnslookup router:

dnslookup:
  driver = dnslookup
  domains = !+mlmmj_domains : !+local_domains
[...]

5. Somewhere in the transports section. (Change the path of mlmmj-recieve if you
don't use the default location!):

mlmmj_transport:
  driver = pipe
  return_path_add
  user = mlmmj
  group = mlmmj
  home_directory = MLMMJ_HOME
  current_directory = MLMMJ_HOME
  command = /usr/local/bin/mlmmj-recieve -F -L MLMMJ_HOME/${lc::$local_part}

If you want VERP to be done by your MTA, also add this:

verp_smtp:
  driver = smtp
  # put recipient address into return_path
  return_path = \
    ${local_part:$return_path}-$original_local_part=$original_domain@${domain:$return_path}
  # must restrict to one recipient at a time
  max_rcpt = 1
  # Errors-To: may carry old return_path
  headers_remove = Errors-To
  headers_add = Errors-To: $return_path


6. Test your setup with

$ exim -bt mlmmj-test@your.list.domain
mlmmj-test@your.list.domain
  router = mlmmj_router, transport = mlmmj_transport

If you get different output, run it with -d to see what's going wrong.
If not, you're done!



	Jakob Hirsch (jh at plonk dot de)