1 diff -r b4cc307a2719 .hgignore |
|
2 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
3 +++ b/.hgignore Thu Aug 13 13:46:31 2009 +0200 |
|
4 @@ -0,0 +1,325 @@ |
|
5 +syntax: regexp |
|
6 +^build-tree |
|
7 +^debian/patched |
|
8 +^EDITME\. |
|
9 +^build-arch-stamp |
|
10 +^build-indep-stamp |
|
11 +^configure-stamp |
|
12 +^debian/README.Debian |
|
13 +^debian/README.Debian.html |
|
14 +^debian/debconf/exim4.conf.template |
|
15 +^debian/exim4-base.debhelper.log |
|
16 +^debian/exim4-base.postinst.debhelper |
|
17 +^debian/exim4-base.postrm.debhelper |
|
18 +^debian/exim4-base.prerm.debhelper |
|
19 +^debian/exim4-base.substvars |
|
20 +^debian/exim4-base/DEBIAN/conffiles |
|
21 +^debian/exim4-base/DEBIAN/config |
|
22 +^debian/exim4-base/DEBIAN/control |
|
23 +^debian/exim4-base/DEBIAN/md5sums |
|
24 +^debian/exim4-base/DEBIAN/postinst |
|
25 +^debian/exim4-base/DEBIAN/postrm |
|
26 +^debian/exim4-base/DEBIAN/prerm |
|
27 +^debian/exim4-base/DEBIAN/templates |
|
28 +^debian/exim4-base/etc/cron.daily/exim4-base |
|
29 +^debian/exim4-base/etc/init.d/exim4 |
|
30 +^debian/exim4-base/etc/logrotate.d/exim4-base |
|
31 +^debian/exim4-base/etc/logrotate.d/exim4-paniclog |
|
32 +^debian/exim4-base/usr/sbin/exicyclog |
|
33 +^debian/exim4-base/usr/sbin/exigrep |
|
34 +^debian/exim4-base/usr/sbin/exim_checkaccess |
|
35 +^debian/exim4-base/usr/sbin/exim_convert4r4 |
|
36 +^debian/exim4-base/usr/sbin/exim_dbmbuild |
|
37 +^debian/exim4-base/usr/sbin/exim_dumpdb |
|
38 +^debian/exim4-base/usr/sbin/exim_fixdb |
|
39 +^debian/exim4-base/usr/sbin/exim_lock |
|
40 +^debian/exim4-base/usr/sbin/exim_tidydb |
|
41 +^debian/exim4-base/usr/sbin/eximstats |
|
42 +^debian/exim4-base/usr/sbin/exinext |
|
43 +^debian/exim4-base/usr/sbin/exipick |
|
44 +^debian/exim4-base/usr/sbin/exiqgrep |
|
45 +^debian/exim4-base/usr/sbin/exiqsumm |
|
46 +^debian/exim4-base/usr/sbin/exiwhat |
|
47 +^debian/exim4-base/usr/sbin/syslog2eximlog |
|
48 +^debian/exim4-base/usr/share/bug/exim4-base/script |
|
49 +^debian/exim4-base/usr/share/doc-base/exim4-filter-txt |
|
50 +^debian/exim4-base/usr/share/doc-base/exim4-readme-debian |
|
51 +^debian/exim4-base/usr/share/doc-base/exim4-spec-txt |
|
52 +^debian/exim4-base/usr/share/doc/exim4-base/ACKNOWLEDGMENTS.gz |
|
53 +^debian/exim4-base/usr/share/doc/exim4-base/Exim3.upgrade.gz |
|
54 +^debian/exim4-base/usr/share/doc/exim4-base/Exim4.upgrade.gz |
|
55 +^debian/exim4-base/usr/share/doc/exim4-base/NEWS.Debian.gz |
|
56 +^debian/exim4-base/usr/share/doc/exim4-base/NOTICE.gz |
|
57 +^debian/exim4-base/usr/share/doc/exim4-base/NewStuff.gz |
|
58 +^debian/exim4-base/usr/share/doc/exim4-base/OptionLists.txt.gz |
|
59 +^debian/exim4-base/usr/share/doc/exim4-base/README |
|
60 +^debian/exim4-base/usr/share/doc/exim4-base/README.Debian.gz |
|
61 +^debian/exim4-base/usr/share/doc/exim4-base/README.Debian.html |
|
62 +^debian/exim4-base/usr/share/doc/exim4-base/README.SIEVE.gz |
|
63 +^debian/exim4-base/usr/share/doc/exim4-base/README.UPDATING.gz |
|
64 +^debian/exim4-base/usr/share/doc/exim4-base/TODO.Debian |
|
65 +^debian/exim4-base/usr/share/doc/exim4-base/changelog.Debian.gz |
|
66 +^debian/exim4-base/usr/share/doc/exim4-base/changelog.Debian.old.gz |
|
67 +^debian/exim4-base/usr/share/doc/exim4-base/changelog.gz |
|
68 +^debian/exim4-base/usr/share/doc/exim4-base/copyright |
|
69 +^debian/exim4-base/usr/share/doc/exim4-base/dbm.discuss.txt.gz |
|
70 +^debian/exim4-base/usr/share/doc/exim4-base/examples/aliases |
|
71 +^debian/exim4-base/usr/share/doc/exim4-base/examples/cramtest.pl |
|
72 +^debian/exim4-base/usr/share/doc/exim4-base/examples/example.conf.gz |
|
73 +^debian/exim4-base/usr/share/doc/exim4-base/examples/exim-adduser |
|
74 +^debian/exim4-base/usr/share/doc/exim4-base/examples/exim-gencert |
|
75 +^debian/exim4-base/usr/share/doc/exim4-base/examples/logargs.sh |
|
76 +^debian/exim4-base/usr/share/doc/exim4-base/examples/unknownuser.sh |
|
77 +^debian/exim4-base/usr/share/doc/exim4-base/filter.txt.gz |
|
78 +^debian/exim4-base/usr/share/doc/exim4-base/pcrepattern.txt.gz |
|
79 +^debian/exim4-base/usr/share/doc/exim4-base/spec.txt.gz |
|
80 +^debian/exim4-base/usr/share/exim4/exim4_refresh_gnutls-params |
|
81 +^debian/exim4-base/usr/share/exim4/timeout.pl |
|
82 +^debian/exim4-base/usr/share/lintian/overrides/exim4-base |
|
83 +^debian/exim4-base/usr/share/man/man8/exicyclog.8.gz |
|
84 +^debian/exim4-base/usr/share/man/man8/exigrep.8.gz |
|
85 +^debian/exim4-base/usr/share/man/man8/exim.8.gz |
|
86 +^debian/exim4-base/usr/share/man/man8/exim_checkaccess.8.gz |
|
87 +^debian/exim4-base/usr/share/man/man8/exim_convert4r4.8.gz |
|
88 +^debian/exim4-base/usr/share/man/man8/exim_db.8.gz |
|
89 +^debian/exim4-base/usr/share/man/man8/exim_dbmbuild.8.gz |
|
90 +^debian/exim4-base/usr/share/man/man8/exim_dumpdb.8.gz |
|
91 +^debian/exim4-base/usr/share/man/man8/exim_fixdb.8.gz |
|
92 +^debian/exim4-base/usr/share/man/man8/exim_lock.8.gz |
|
93 +^debian/exim4-base/usr/share/man/man8/exim_tidydb.8.gz |
|
94 +^debian/exim4-base/usr/share/man/man8/eximstats.8.gz |
|
95 +^debian/exim4-base/usr/share/man/man8/exinext.8.gz |
|
96 +^debian/exim4-base/usr/share/man/man8/exipick.8.gz |
|
97 +^debian/exim4-base/usr/share/man/man8/exiqgrep.8.gz |
|
98 +^debian/exim4-base/usr/share/man/man8/exiqsumm.8.gz |
|
99 +^debian/exim4-base/usr/share/man/man8/exiwhat.8.gz |
|
100 +^debian/exim4-base/usr/share/man/man8/syslog2eximlog.8.gz |
|
101 +^debian/exim4-base/var/spool/exim4/gnutls-params |
|
102 +^debian/exim4-config.debhelper.log |
|
103 +^debian/exim4-config.postrm.debhelper |
|
104 +^debian/exim4-config.substvars |
|
105 +^debian/exim4-config/DEBIAN/conffiles |
|
106 +^debian/exim4-config/DEBIAN/config |
|
107 +^debian/exim4-config/DEBIAN/control |
|
108 +^debian/exim4-config/DEBIAN/md5sums |
|
109 +^debian/exim4-config/DEBIAN/postinst |
|
110 +^debian/exim4-config/DEBIAN/postrm |
|
111 +^debian/exim4-config/DEBIAN/preinst |
|
112 +^debian/exim4-config/DEBIAN/templates |
|
113 +^debian/exim4-config/etc/email-addresses |
|
114 +^debian/exim4-config/etc/exim4/conf.d/acl/00_exim4-config_header |
|
115 +^debian/exim4-config/etc/exim4/conf.d/acl/20_exim4-config_local_deny_exceptions |
|
116 +^debian/exim4-config/etc/exim4/conf.d/acl/30_exim4-config_check_mail |
|
117 +^debian/exim4-config/etc/exim4/conf.d/acl/30_exim4-config_check_rcpt |
|
118 +^debian/exim4-config/etc/exim4/conf.d/acl/40_exim4-config_check_data |
|
119 +^debian/exim4-config/etc/exim4/conf.d/auth/00_exim4-config_header |
|
120 +^debian/exim4-config/etc/exim4/conf.d/auth/30_exim4-config_examples |
|
121 +^debian/exim4-config/etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs |
|
122 +^debian/exim4-config/etc/exim4/conf.d/main/02_exim4-config_options |
|
123 +^debian/exim4-config/etc/exim4/conf.d/main/03_exim4-config_tlsoptions |
|
124 +^debian/exim4-config/etc/exim4/conf.d/main/90_exim4-config_log_selector |
|
125 +^debian/exim4-config/etc/exim4/conf.d/retry/00_exim4-config_header |
|
126 +^debian/exim4-config/etc/exim4/conf.d/retry/30_exim4-config |
|
127 +^debian/exim4-config/etc/exim4/conf.d/rewrite/00_exim4-config_header |
|
128 +^debian/exim4-config/etc/exim4/conf.d/rewrite/31_exim4-config_rewriting |
|
129 +^debian/exim4-config/etc/exim4/conf.d/router/00_exim4-config_header |
|
130 +^debian/exim4-config/etc/exim4/conf.d/router/100_exim4-config_domain_literal |
|
131 +^debian/exim4-config/etc/exim4/conf.d/router/150_exim4-config_hubbed_hosts |
|
132 +^debian/exim4-config/etc/exim4/conf.d/router/200_exim4-config_primary |
|
133 +^debian/exim4-config/etc/exim4/conf.d/router/300_exim4-config_real_local |
|
134 +^debian/exim4-config/etc/exim4/conf.d/router/400_exim4-config_system_aliases |
|
135 +^debian/exim4-config/etc/exim4/conf.d/router/500_exim4-config_hubuser |
|
136 +^debian/exim4-config/etc/exim4/conf.d/router/600_exim4-config_userforward |
|
137 +^debian/exim4-config/etc/exim4/conf.d/router/700_exim4-config_procmail |
|
138 +^debian/exim4-config/etc/exim4/conf.d/router/800_exim4-config_maildrop |
|
139 +^debian/exim4-config/etc/exim4/conf.d/router/850_exim4-config_lowuid |
|
140 +^debian/exim4-config/etc/exim4/conf.d/router/900_exim4-config_local_user |
|
141 +^debian/exim4-config/etc/exim4/conf.d/router/mmm_mail4root |
|
142 +^debian/exim4-config/etc/exim4/conf.d/transport/00_exim4-config_header |
|
143 +^debian/exim4-config/etc/exim4/conf.d/transport/10_exim4-config_transport-macros |
|
144 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_address_file |
|
145 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_address_pipe |
|
146 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_address_reply |
|
147 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_mail_spool |
|
148 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_maildir_home |
|
149 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_maildrop_pipe |
|
150 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_procmail_pipe |
|
151 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_remote_smtp |
|
152 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_remote_smtp_smarthost |
|
153 +^debian/exim4-config/etc/exim4/conf.d/transport/35_exim4-config_address_directory |
|
154 +^debian/exim4-config/etc/exim4/exim4.conf.template |
|
155 +^debian/exim4-config/etc/exim4/passwd.client |
|
156 +^debian/exim4-config/etc/ppp/ip-up.d/exim4 |
|
157 +^debian/exim4-config/usr/sbin/update-exim4.conf |
|
158 +^debian/exim4-config/usr/sbin/update-exim4.conf.template |
|
159 +^debian/exim4-config/usr/sbin/update-exim4defaults |
|
160 +^debian/exim4-config/usr/share/bug/exim4-config/script |
|
161 +^debian/exim4-config/usr/share/doc/exim4-config/NEWS.Debian.gz |
|
162 +^debian/exim4-config/usr/share/doc/exim4-config/README.Debian.gz |
|
163 +^debian/exim4-config/usr/share/doc/exim4-config/changelog.Debian.gz |
|
164 +^debian/exim4-config/usr/share/doc/exim4-config/copyright |
|
165 +^debian/exim4-config/usr/share/lintian/overrides/exim4-config |
|
166 +^debian/exim4-config/usr/share/man/man5/etc-aliases.5.gz |
|
167 +^debian/exim4-config/usr/share/man/man5/etc-email-addresses.5.gz |
|
168 +^debian/exim4-config/usr/share/man/man5/exim4-config_files.5.gz |
|
169 +^debian/exim4-config/usr/share/man/man5/exim4_exim_crt.5.gz |
|
170 +^debian/exim4-config/usr/share/man/man5/exim4_exim_key.5.gz |
|
171 +^debian/exim4-config/usr/share/man/man5/exim4_hubbed_hosts.5.gz |
|
172 +^debian/exim4-config/usr/share/man/man5/exim4_local_domain_dnsbl_whitelist.5.gz |
|
173 +^debian/exim4-config/usr/share/man/man5/exim4_local_host_blacklist.5.gz |
|
174 +^debian/exim4-config/usr/share/man/man5/exim4_local_host_whitelist.5.gz |
|
175 +^debian/exim4-config/usr/share/man/man5/exim4_local_rcpt_callout.5.gz |
|
176 +^debian/exim4-config/usr/share/man/man5/exim4_local_sender_blacklist.5.gz |
|
177 +^debian/exim4-config/usr/share/man/man5/exim4_local_sender_callout.5.gz |
|
178 +^debian/exim4-config/usr/share/man/man5/exim4_local_sender_whitelist.5.gz |
|
179 +^debian/exim4-config/usr/share/man/man5/exim4_passwd.5.gz |
|
180 +^debian/exim4-config/usr/share/man/man5/exim4_passwd_client.5.gz |
|
181 +^debian/exim4-config/usr/share/man/man5/update-exim4.conf.conf.5.gz |
|
182 +^debian/exim4-config/usr/share/man/man8/update-exim4.conf.8.gz |
|
183 +^debian/exim4-config/usr/share/man/man8/update-exim4.conf.template.8.gz |
|
184 +^debian/exim4-config/usr/share/man/man8/update-exim4defaults.8.gz |
|
185 +^debian/exim4-daemon-custom-dbg.debhelper.log |
|
186 +^debian/exim4-daemon-custom.debhelper.log |
|
187 +^debian/exim4-daemon-heavy-dbg.debhelper.log |
|
188 +^debian/exim4-daemon-heavy-dbg/DEBIAN/control |
|
189 +^debian/exim4-daemon-heavy-dbg/DEBIAN/md5sums |
|
190 +^debian/exim4-daemon-heavy-dbg/usr/lib/debug/usr/sbin/exim4 |
|
191 +^debian/exim4-daemon-heavy-dbg/usr/share/doc/exim4-daemon-heavy-dbg/changelog.Debian.gz |
|
192 +^debian/exim4-daemon-heavy-dbg/usr/share/doc/exim4-daemon-heavy-dbg/copyright |
|
193 +^debian/exim4-daemon-heavy-dbg/usr/share/lintian/overrides/exim4-daemon-heavy-dbg |
|
194 +^debian/exim4-daemon-heavy.debhelper.log |
|
195 +^debian/exim4-daemon-heavy.postinst |
|
196 +^debian/exim4-daemon-heavy.postrm.debhelper |
|
197 +^debian/exim4-daemon-heavy.prerm |
|
198 +^debian/exim4-daemon-heavy.substvars |
|
199 +^debian/exim4-daemon-heavy/DEBIAN/config |
|
200 +^debian/exim4-daemon-heavy/DEBIAN/control |
|
201 +^debian/exim4-daemon-heavy/DEBIAN/md5sums |
|
202 +^debian/exim4-daemon-heavy/DEBIAN/postinst |
|
203 +^debian/exim4-daemon-heavy/DEBIAN/postrm |
|
204 +^debian/exim4-daemon-heavy/DEBIAN/prerm |
|
205 +^debian/exim4-daemon-heavy/DEBIAN/templates |
|
206 +^debian/exim4-daemon-heavy/usr/bin/mailq |
|
207 +^debian/exim4-daemon-heavy/usr/bin/newaliases |
|
208 +^debian/exim4-daemon-heavy/usr/lib/exim4/exim4 |
|
209 +^debian/exim4-daemon-heavy/usr/lib/sendmail |
|
210 +^debian/exim4-daemon-heavy/usr/sbin/exim |
|
211 +^debian/exim4-daemon-heavy/usr/sbin/exim4 |
|
212 +^debian/exim4-daemon-heavy/usr/sbin/rmail |
|
213 +^debian/exim4-daemon-heavy/usr/sbin/rsmtp |
|
214 +^debian/exim4-daemon-heavy/usr/sbin/runq |
|
215 +^debian/exim4-daemon-heavy/usr/sbin/sendmail |
|
216 +^debian/exim4-daemon-heavy/usr/share/bug/exim4-daemon-heavy/script |
|
217 +^debian/exim4-daemon-heavy/usr/share/doc/exim4-daemon-heavy/EDITME.exim4-heavy.gz |
|
218 +^debian/exim4-daemon-heavy/usr/share/doc/exim4-daemon-heavy/NEWS.Debian.gz |
|
219 +^debian/exim4-daemon-heavy/usr/share/doc/exim4-daemon-heavy/README.Debian.gz |
|
220 +^debian/exim4-daemon-heavy/usr/share/doc/exim4-daemon-heavy/changelog.Debian.gz |
|
221 +^debian/exim4-daemon-heavy/usr/share/doc/exim4-daemon-heavy/changelog.gz |
|
222 +^debian/exim4-daemon-heavy/usr/share/doc/exim4-daemon-heavy/copyright |
|
223 +^debian/exim4-daemon-heavy/usr/share/lintian/overrides/exim4-daemon-heavy |
|
224 +^debian/exim4-daemon-heavy/usr/share/man/man8/exim4.8.gz |
|
225 +^debian/exim4-daemon-heavy/usr/share/man/man8/mailq.8.gz |
|
226 +^debian/exim4-daemon-heavy/usr/share/man/man8/newaliases.8.gz |
|
227 +^debian/exim4-daemon-heavy/usr/share/man/man8/rmail.8.gz |
|
228 +^debian/exim4-daemon-heavy/usr/share/man/man8/rsmtp.8.gz |
|
229 +^debian/exim4-daemon-heavy/usr/share/man/man8/runq.8.gz |
|
230 +^debian/exim4-daemon-heavy/usr/share/man/man8/sendmail.8.gz |
|
231 +^debian/exim4-daemon-light-dbg.debhelper.log |
|
232 +^debian/exim4-daemon-light-dbg/DEBIAN/control |
|
233 +^debian/exim4-daemon-light-dbg/DEBIAN/md5sums |
|
234 +^debian/exim4-daemon-light-dbg/usr/lib/debug/usr/sbin/exim4 |
|
235 +^debian/exim4-daemon-light-dbg/usr/share/doc/exim4-daemon-light-dbg/changelog.Debian.gz |
|
236 +^debian/exim4-daemon-light-dbg/usr/share/doc/exim4-daemon-light-dbg/copyright |
|
237 +^debian/exim4-daemon-light-dbg/usr/share/lintian/overrides/exim4-daemon-light-dbg |
|
238 +^debian/exim4-daemon-light.debhelper.log |
|
239 +^debian/exim4-daemon-light.postrm.debhelper |
|
240 +^debian/exim4-daemon-light.substvars |
|
241 +^debian/exim4-daemon-light/DEBIAN/config |
|
242 +^debian/exim4-daemon-light/DEBIAN/control |
|
243 +^debian/exim4-daemon-light/DEBIAN/md5sums |
|
244 +^debian/exim4-daemon-light/DEBIAN/postinst |
|
245 +^debian/exim4-daemon-light/DEBIAN/postrm |
|
246 +^debian/exim4-daemon-light/DEBIAN/prerm |
|
247 +^debian/exim4-daemon-light/DEBIAN/templates |
|
248 +^debian/exim4-daemon-light/usr/bin/mailq |
|
249 +^debian/exim4-daemon-light/usr/bin/newaliases |
|
250 +^debian/exim4-daemon-light/usr/lib/exim4/exim4 |
|
251 +^debian/exim4-daemon-light/usr/lib/sendmail |
|
252 +^debian/exim4-daemon-light/usr/sbin/exim |
|
253 +^debian/exim4-daemon-light/usr/sbin/exim4 |
|
254 +^debian/exim4-daemon-light/usr/sbin/rmail |
|
255 +^debian/exim4-daemon-light/usr/sbin/rsmtp |
|
256 +^debian/exim4-daemon-light/usr/sbin/runq |
|
257 +^debian/exim4-daemon-light/usr/sbin/sendmail |
|
258 +^debian/exim4-daemon-light/usr/share/bug/exim4-daemon-light/script |
|
259 +^debian/exim4-daemon-light/usr/share/doc/exim4-daemon-light/EDITME.exim4-light.gz |
|
260 +^debian/exim4-daemon-light/usr/share/doc/exim4-daemon-light/NEWS.Debian.gz |
|
261 +^debian/exim4-daemon-light/usr/share/doc/exim4-daemon-light/README.Debian.gz |
|
262 +^debian/exim4-daemon-light/usr/share/doc/exim4-daemon-light/changelog.Debian.gz |
|
263 +^debian/exim4-daemon-light/usr/share/doc/exim4-daemon-light/changelog.gz |
|
264 +^debian/exim4-daemon-light/usr/share/doc/exim4-daemon-light/copyright |
|
265 +^debian/exim4-daemon-light/usr/share/lintian/overrides/exim4-daemon-light |
|
266 +^debian/exim4-daemon-light/usr/share/man/man8/exim4.8.gz |
|
267 +^debian/exim4-daemon-light/usr/share/man/man8/mailq.8.gz |
|
268 +^debian/exim4-daemon-light/usr/share/man/man8/newaliases.8.gz |
|
269 +^debian/exim4-daemon-light/usr/share/man/man8/rmail.8.gz |
|
270 +^debian/exim4-daemon-light/usr/share/man/man8/rsmtp.8.gz |
|
271 +^debian/exim4-daemon-light/usr/share/man/man8/runq.8.gz |
|
272 +^debian/exim4-daemon-light/usr/share/man/man8/sendmail.8.gz |
|
273 +^debian/exim4-dbg.debhelper.log |
|
274 +^debian/exim4-dbg/DEBIAN/control |
|
275 +^debian/exim4-dbg/DEBIAN/md5sums |
|
276 +^debian/exim4-dbg/usr/lib/debug/usr/lib/exim4/eximon.bin |
|
277 +^debian/exim4-dbg/usr/lib/debug/usr/sbin/exim_dbmbuild |
|
278 +^debian/exim4-dbg/usr/lib/debug/usr/sbin/exim_dumpdb |
|
279 +^debian/exim4-dbg/usr/lib/debug/usr/sbin/exim_fixdb |
|
280 +^debian/exim4-dbg/usr/lib/debug/usr/sbin/exim_lock |
|
281 +^debian/exim4-dbg/usr/lib/debug/usr/sbin/exim_tidydb |
|
282 +^debian/exim4-dbg/usr/share/doc/exim4-dbg/changelog.Debian.gz |
|
283 +^debian/exim4-dbg/usr/share/doc/exim4-dbg/copyright |
|
284 +^debian/exim4-dbg/usr/share/lintian/overrides/exim4-dbg |
|
285 +^debian/exim4-dev.debhelper.log |
|
286 +^debian/exim4-dev/DEBIAN/control |
|
287 +^debian/exim4-dev/DEBIAN/md5sums |
|
288 +^debian/exim4-dev/usr/bin/exim4-localscan-plugin-config |
|
289 +^debian/exim4-dev/usr/include/exim4/config.h |
|
290 +^debian/exim4-dev/usr/include/exim4/local_scan.h |
|
291 +^debian/exim4-dev/usr/include/exim4/mytypes.h |
|
292 +^debian/exim4-dev/usr/include/exim4/store.h |
|
293 +^debian/exim4-dev/usr/share/doc/exim4-dev/README.Debian.gz |
|
294 +^debian/exim4-dev/usr/share/doc/exim4-dev/changelog.Debian.gz |
|
295 +^debian/exim4-dev/usr/share/doc/exim4-dev/changelog.gz |
|
296 +^debian/exim4-dev/usr/share/doc/exim4-dev/copyright |
|
297 +^debian/exim4-dev/usr/share/lintian/overrides/exim4-dev |
|
298 +^debian/exim4-dev/usr/share/man/man1/exim4-localscan-plugin-config.1.gz |
|
299 +^debian/exim4.debhelper.log |
|
300 +^debian/exim4.postrm.debhelper |
|
301 +^debian/exim4.substvars |
|
302 +^debian/exim4/DEBIAN/config |
|
303 +^debian/exim4/DEBIAN/control |
|
304 +^debian/exim4/DEBIAN/md5sums |
|
305 +^debian/exim4/DEBIAN/postinst |
|
306 +^debian/exim4/DEBIAN/postrm |
|
307 +^debian/exim4/DEBIAN/templates |
|
308 +^debian/exim4/usr/share/bug/exim4/script |
|
309 +^debian/exim4/usr/share/doc/exim4 |
|
310 +^debian/exim4/usr/share/lintian/overrides/exim4 |
|
311 +^debian/eximon4.debhelper.log |
|
312 +^debian/eximon4.postinst.debhelper |
|
313 +^debian/eximon4.postrm.debhelper |
|
314 +^debian/eximon4.substvars |
|
315 +^debian/eximon4/DEBIAN/control |
|
316 +^debian/eximon4/DEBIAN/md5sums |
|
317 +^debian/eximon4/DEBIAN/postinst |
|
318 +^debian/eximon4/DEBIAN/postrm |
|
319 +^debian/eximon4/usr/lib/exim4/eximon.bin |
|
320 +^debian/eximon4/usr/sbin/eximon |
|
321 +^debian/eximon4/usr/share/doc/eximon4/changelog.Debian.gz |
|
322 +^debian/eximon4/usr/share/doc/eximon4/copyright |
|
323 +^debian/eximon4/usr/share/lintian/overrides/eximon4 |
|
324 +^debian/eximon4/usr/share/man/man8/eximon.8.gz |
|
325 +^debian/eximon4/usr/share/menu/eximon4 |
|
326 +^debian/files |
|
327 +^installbase-stamp |
|
328 +^patch-stamp |
|
329 +^unpack-configs-stamp |
|
330 diff -r b4cc307a2719 debian/EDITME.exim4-light.diff |
|
331 --- a/debian/EDITME.exim4-light.diff Thu Aug 13 12:59:19 2009 +0200 |
|
332 +++ b/debian/EDITME.exim4-light.diff Thu Aug 13 13:46:31 2009 +0200 |
|
333 @@ -1,5 +1,5 @@ |
|
334 ---- /tmp/dpep-work.wG8120/trunk/build-tree/src/EDITME 2007-07-17 11:04:08.000000000 +0200 |
|
335 -+++ EDITME.exim4-light 2007-07-17 11:04:27.000000000 +0200 |
|
336 +--- /home/luser/src/debian-packages/exim4-4.69/build-tree/src/EDITME 2009-08-10 15:37:12.000000000 +0200 |
|
337 ++++ EDITME.exim4-light 2009-08-10 15:45:37.000000000 +0200 |
|
338 @@ -100,7 +100,7 @@ |
|
339 # /usr/local/sbin. The installation script will try to create this directory, |
|
340 # and any superior directories, if they do not exist. |
|
341 @@ -196,9 +196,15 @@ |
|
342 |
|
343 |
|
344 #------------------------------------------------------------------------------ |
|
345 -@@ -1149,3 +1156,6 @@ |
|
346 +@@ -1148,4 +1155,12 @@ |
|
347 + |
|
348 # ENABLE_DISABLE_FSYNC=yes |
|
349 |
|
350 ++#------------------------------------------------------------------------------ |
|
351 ++# support storage/retrieval of values to and from memcache servers via |
|
352 ++# expansions |
|
353 ++SUPPORT_MEMCACHE=yes |
|
354 ++ |
|
355 # End of EDITME for Exim 4. |
|
356 + |
|
357 +# enable IPv6 support |
|
358 diff -r b4cc307a2719 debian/changelog |
|
359 --- a/debian/changelog Thu Aug 13 12:59:19 2009 +0200 |
|
360 +++ b/debian/changelog Thu Aug 13 13:46:31 2009 +0200 |
|
361 @@ -1,3 +1,10 @@ |
|
362 +exim4 (4.69-9.1) unstable; urgency=low |
|
363 + |
|
364 + * Non-maintainer upload. |
|
365 + * memcache support |
|
366 + |
|
367 + -- Matthias Förste <foerste@schlittermann.de> Thu, 13 Aug 2009 13:26:52 +0200 |
|
368 + |
|
369 exim4 (4.69-9) unstable; urgency=medium |
|
370 |
|
371 * [update-exim4.conf]: Use POSIX character classes [:alnum:] or explicit |
|
372 diff -r b4cc307a2719 debian/patches/00list |
|
373 --- a/debian/patches/00list Thu Aug 13 12:59:19 2009 +0200 |
|
374 +++ b/debian/patches/00list Thu Aug 13 13:46:31 2009 +0200 |
|
375 @@ -12,3 +12,4 @@ |
|
376 60_convert4r4 |
|
377 66_enlarge-dh-parameters-size |
|
378 70_remove_exim-users_references |
|
379 +80_memcache |
|
380 diff -r b4cc307a2719 debian/patches/80_memcache.dpatch |
|
381 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
382 +++ b/debian/patches/80_memcache.dpatch Thu Aug 13 13:46:31 2009 +0200 |
|
383 @@ -0,0 +1,511 @@ |
|
384 +#! /bin/sh /usr/share/dpatch/dpatch-run |
|
385 +## 80_memcache.dpatch by Matthias Förste <foerste@schlittermann.de> |
|
386 +## |
|
387 +## All lines beginning with `## DP:' are a description of the patch. |
|
388 +## DP: key/value storage/retrieval via memcache |
|
389 + |
|
390 +@DPATCH@ |
|
391 +diff -urNad exim4-4.69~/build-tree/OS/Makefile-Base exim4-4.69/build-tree/OS/Makefile-Base |
|
392 +--- exim4-4.69~/build-tree/OS/Makefile-Base 2009-08-13 13:12:55.000000000 +0200 |
|
393 ++++ exim4-4.69/build-tree/OS/Makefile-Base 2009-08-13 13:12:56.000000000 +0200 |
|
394 +@@ -543,7 +543,7 @@ |
|
395 + dns.o: $(HDRS) dns.c |
|
396 + enq.o: $(HDRS) enq.c |
|
397 + exim.o: $(HDRS) exim.c |
|
398 +-expand.o: $(HDRS) expand.c |
|
399 ++expand.o: $(HDRS) memcache.h expand.c |
|
400 + filter.o: $(HDRS) filter.c |
|
401 + filtertest.o: $(HDRS) filtertest.c |
|
402 + globals.o: $(HDRS) globals.c |
|
403 +diff -urNad exim4-4.69~/build-tree/doc/OptionLists.txt exim4-4.69/build-tree/doc/OptionLists.txt |
|
404 +--- exim4-4.69~/build-tree/doc/OptionLists.txt 2007-08-29 15:37:28.000000000 +0200 |
|
405 ++++ exim4-4.69/build-tree/doc/OptionLists.txt 2009-08-13 13:12:56.000000000 +0200 |
|
406 +@@ -11,7 +11,7 @@ |
|
407 + 4. Those that can appear in the build time configuration for the Exim monitor |
|
408 + (Local/eximon.conf). |
|
409 + |
|
410 +-This file was last updated for Exim release 4.67. |
|
411 ++This file was last updated for Exim release 4.69. |
|
412 + |
|
413 + |
|
414 + 1. RUN TIME OPTIONS |
|
415 +@@ -887,6 +887,7 @@ |
|
416 + SUPPORT_CRYPTEQ optional support crypteq (if no auths) |
|
417 + SUPPORT_MAILDIR optional support for maildir delivery |
|
418 + SUPPORT_MAILSTORE optional support for mailstore delivery |
|
419 ++SUPPORT_MEMCACHE optional* support for memcache storage and retrieval |
|
420 + SUPPORT_MBX optional support for MBX delivery |
|
421 + SUPPORT_MOVE_FROZEN_MESSAGES optional* support for frozen message moving |
|
422 + SUPPORT_PAM optional support for PAM authentication |
|
423 +diff -urNad exim4-4.69~/build-tree/doc/memcache.txt exim4-4.69/build-tree/doc/memcache.txt |
|
424 +--- exim4-4.69~/build-tree/doc/memcache.txt 1970-01-01 01:00:00.000000000 +0100 |
|
425 ++++ exim4-4.69/build-tree/doc/memcache.txt 2009-08-13 13:12:56.000000000 +0200 |
|
426 +@@ -0,0 +1,72 @@ |
|
427 ++* store some value under key; expands to 'true' if successful; expiration & |
|
428 ++ timeout are optional |
|
429 ++ |
|
430 ++ ${memcache \ |
|
431 ++ {+memcache_servers} \ |
|
432 ++ {set} \ |
|
433 ++ {namespace} \ |
|
434 ++ {key} \ |
|
435 ++ {value} \ |
|
436 ++ {expiration} \ |
|
437 ++ {timeout}} |
|
438 ++ |
|
439 ++ |
|
440 ++* lookup the value of some key; expands to 'true' if the key has been found; |
|
441 ++ stores the value in $value; timeout is optional |
|
442 ++ |
|
443 ++ ${memcache \ |
|
444 ++ {+memcache_servers} \ |
|
445 ++ {get} \ |
|
446 ++ {namespace} \ |
|
447 ++ {key} \ |
|
448 ++ {$value} \ |
|
449 ++ {timeout}} |
|
450 ++ |
|
451 ++ |
|
452 ++Currently only tcp connections are supported. No sanity checks on arguments are |
|
453 ++done yet. You can use a hostlist, but its probably not useful. Each host is |
|
454 ++tried in the order listed until one succeeds. Expansion will fail if none |
|
455 ++suceeds. |
|
456 ++ |
|
457 ++example usage for greylisting: |
|
458 ++ |
|
459 ++ [...] |
|
460 ++ |
|
461 ++ hostlist memcache_servers = <; host1:port1; host2:port2; host3 |
|
462 ++ |
|
463 ++ [...] |
|
464 ++ |
|
465 ++ acl_check_rcpt: |
|
466 ++ |
|
467 ++ # greylisting with memcache |
|
468 ++ # do we already have a timestamp for this sender/receiver combo? try to store |
|
469 ++ # one if we dont and defer if this succeeds, deny otherwise; accept the |
|
470 ++ # message if we find a timestamp which is older than 5 minutes, deny |
|
471 ++ # otherwise (if the timestamp is younger that is) |
|
472 ++ accept |
|
473 ++ logwrite = memcache \ |
|
474 ++ get \ |
|
475 ++ exim-lenny:${sender_address}*${local_part}@${domain} |
|
476 ++ condition = ${memcache \ |
|
477 ++ {+memcache_servers} \ |
|
478 ++ {get} \ |
|
479 ++ {exim-lenny:} \ |
|
480 ++ {${sender_address}*${local_part}@${domain}} \ |
|
481 ++ {$value}} |
|
482 ++ endpass |
|
483 ++ condition = ${if or { \ |
|
484 ++ {eq {$value}{}} \ |
|
485 ++ { > {$tod_epoch}{${eval: $value + 300}}} \ |
|
486 ++ }} |
|
487 ++ defer |
|
488 ++ logwrite = memcache \ |
|
489 ++ set \ |
|
490 ++ exim-lenny:${sender_address}*${local_part}@${domain} \ |
|
491 ++ $tod_epoch |
|
492 ++ condition = ${memcache \ |
|
493 ++ {+memcache_servers} \ |
|
494 ++ {set} \ |
|
495 ++ {exim-lenny:} \ |
|
496 ++ {${sender_address}*${local_part}@${domain}} \ |
|
497 ++ {$tod_epoch}} |
|
498 ++ deny |
|
499 +diff -urNad exim4-4.69~/build-tree/scripts/MakeLinks exim4-4.69/build-tree/scripts/MakeLinks |
|
500 +--- exim4-4.69~/build-tree/scripts/MakeLinks 2007-09-28 14:21:57.000000000 +0200 |
|
501 ++++ exim4-4.69/build-tree/scripts/MakeLinks 2009-08-13 13:12:56.000000000 +0200 |
|
502 +@@ -200,6 +200,7 @@ |
|
503 + ln -s ../src/globals.h globals.h |
|
504 + ln -s ../src/local_scan.h local_scan.h |
|
505 + ln -s ../src/macros.h macros.h |
|
506 ++ln -s ../src/memcache.h memcache.h |
|
507 + ln -s ../src/mytypes.h mytypes.h |
|
508 + ln -s ../src/osfunctions.h osfunctions.h |
|
509 + ln -s ../src/store.h store.h |
|
510 +diff -urNad exim4-4.69~/build-tree/src/config.h.defaults exim4-4.69/build-tree/src/config.h.defaults |
|
511 +--- exim4-4.69~/build-tree/src/config.h.defaults 2009-08-13 13:12:55.000000000 +0200 |
|
512 ++++ exim4-4.69/build-tree/src/config.h.defaults 2009-08-13 13:12:56.000000000 +0200 |
|
513 +@@ -122,6 +122,7 @@ |
|
514 + #define SUPPORT_MAILDIR |
|
515 + #define SUPPORT_MAILSTORE |
|
516 + #define SUPPORT_MBX |
|
517 ++#define SUPPORT_MEMCACHE |
|
518 + #define SUPPORT_MOVE_FROZEN_MESSAGES |
|
519 + #define SUPPORT_PAM |
|
520 + #define SUPPORT_TLS |
|
521 +diff -urNad exim4-4.69~/build-tree/src/expand.c exim4-4.69/build-tree/src/expand.c |
|
522 +--- exim4-4.69~/build-tree/src/expand.c 2007-10-04 15:23:05.000000000 +0200 |
|
523 ++++ exim4-4.69/build-tree/src/expand.c 2009-08-13 13:14:42.000000000 +0200 |
|
524 +@@ -27,6 +27,10 @@ |
|
525 + #include "lookups/ldap.h" |
|
526 + #endif |
|
527 + |
|
528 ++#ifdef SUPPORT_MEMCACHE |
|
529 ++#include "memcache.h" |
|
530 ++#endif |
|
531 ++ |
|
532 + #ifdef SUPPORT_CRYPTEQ |
|
533 + #ifdef CRYPT_H |
|
534 + #include <crypt.h> |
|
535 +@@ -113,6 +117,7 @@ |
|
536 + US"length", |
|
537 + US"lookup", |
|
538 + US"map", |
|
539 ++ US"memcache", |
|
540 + US"nhash", |
|
541 + US"perl", |
|
542 + US"prvs", |
|
543 +@@ -135,6 +140,7 @@ |
|
544 + EITEM_LENGTH, |
|
545 + EITEM_LOOKUP, |
|
546 + EITEM_MAP, |
|
547 ++ EITEM_MEMCACHE, |
|
548 + EITEM_NHASH, |
|
549 + EITEM_PERL, |
|
550 + EITEM_PRVS, |
|
551 +@@ -4980,6 +4986,231 @@ |
|
552 + } |
|
553 + } |
|
554 + #endif /* EXPAND_DLFUNC */ |
|
555 ++ |
|
556 ++ case EITEM_MEMCACHE: |
|
557 ++ #ifndef SUPPORT_MEMCACHE |
|
558 ++ expand_string_message = US"\"${memcache\" encountered, but this facility " |
|
559 ++ "is not included in this binary"; |
|
560 ++ goto EXPAND_FAILED; |
|
561 ++ |
|
562 ++ #else /* SUPPORT_MEMCACHE */ |
|
563 ++ /* we dont use flags right now - should we? */ |
|
564 ++ |
|
565 ++ { |
|
566 ++ uschar *memcache_timeout = US"0s"; /* with time unit postfix, fex 7d */ |
|
567 ++ uschar *memcache_expiration = US"0"; /* in seconds */ |
|
568 ++ int i_memcache_expiration = -1, i_memcache_timeout = -1; |
|
569 ++ int memcache_operation; |
|
570 ++ uschar *sub_arg[7]; |
|
571 ++ |
|
572 ++ uschar *memcache_servers[MEMCACHE_SERVERS_MAX]; |
|
573 ++ tree_node *memcache_hosts_node; |
|
574 ++ uschar *memcache_hosts_string, *memcache_op_string; |
|
575 ++ uschar *memcache_host; |
|
576 ++ int memcache_hostlist_separator = 0; |
|
577 ++ int i_memcache_server = 0; |
|
578 ++ int n_memcache_servers = 0; |
|
579 ++ |
|
580 ++ uschar *memcache_request; |
|
581 ++ int memcache_request_len; |
|
582 ++ BOOL memcache_request_failed = FALSE; |
|
583 ++ |
|
584 ++ uschar *memcache_readsocket_result; |
|
585 ++ |
|
586 ++ if ((expand_forbid & RDO_MEMCACHE) != 0) |
|
587 ++ { |
|
588 ++ expand_string_message = US"memcache storage/retrieval are not permitted"; |
|
589 ++ goto EXPAND_FAILED; |
|
590 ++ } |
|
591 ++ |
|
592 ++ /* read up to 7 args */ |
|
593 ++ switch(read_subs(sub_arg, 7, 5, &s, skipping, TRUE, US"memcache")) |
|
594 ++ { |
|
595 ++ case 1: goto EXPAND_FAILED_CURLY; |
|
596 ++ case 2: |
|
597 ++ case 3: goto EXPAND_FAILED; |
|
598 ++ } |
|
599 ++ |
|
600 ++ /* validate operation and set argument indices */ |
|
601 ++ memcache_op_string = string_sprintf(US"%S", sub_arg[1]); |
|
602 ++ if (Ustrcmp(memcache_op_string, US"set") == 0) |
|
603 ++ { |
|
604 ++ i_memcache_expiration = 5; i_memcache_timeout = 6; memcache_operation = MEMCACHE_OP_SET; |
|
605 ++ } |
|
606 ++ else if (Ustrcmp(memcache_op_string, US"get") == 0) |
|
607 ++ { |
|
608 ++ i_memcache_timeout = 5; memcache_operation = MEMCACHE_OP_GET; |
|
609 ++ } |
|
610 ++ else |
|
611 ++ { |
|
612 ++ expand_string_message = string_sprintf(US"invalid memcache operation '%s'", |
|
613 ++ sub_arg[1]); |
|
614 ++ goto EXPAND_FAILED; |
|
615 ++ } |
|
616 ++ |
|
617 ++ /* expiration */ |
|
618 ++ if (i_memcache_expiration >=0 && sub_arg[i_memcache_expiration] != NULL) |
|
619 ++ { |
|
620 ++ memcache_expiration = string_sprintf(US"%d", readconf_readtime(sub_arg[i_memcache_expiration], 0, FALSE)); |
|
621 ++ if (memcache_expiration < 0) |
|
622 ++ { |
|
623 ++ expand_string_message = string_sprintf(US"bad time value %s", |
|
624 ++ sub_arg[i_memcache_expiration]); |
|
625 ++ goto EXPAND_FAILED; |
|
626 ++ } |
|
627 ++ } |
|
628 ++ |
|
629 ++ /* now that we have an expiration time we should be able to build the request string */ |
|
630 ++ if (memcache_operation == MEMCACHE_OP_SET) |
|
631 ++ { |
|
632 ++ uschar* data = sub_arg[4]; |
|
633 ++ int data_len = Ustrlen(data); |
|
634 ++ |
|
635 ++ /* writeop [namespace]key flags expiration size-in-bytes [noreply] */ |
|
636 ++ uschar *cmd = string_sprintf(US"%s %s%s %d %s %d %s", |
|
637 ++ US"set", |
|
638 ++ sub_arg[2], |
|
639 ++ sub_arg[3], |
|
640 ++ 0, |
|
641 ++ memcache_expiration, |
|
642 ++ data_len, |
|
643 ++ US""); |
|
644 ++ int cmd_len = Ustrlen(cmd); |
|
645 ++ |
|
646 ++ memcache_request = string_sprintf(US"%s\r\n%s\r\n", cmd, data); |
|
647 ++ memcache_request_len = Ustrlen(memcache_request); |
|
648 ++ } |
|
649 ++ else if (memcache_operation == MEMCACHE_OP_GET) |
|
650 ++ { |
|
651 ++ memcache_request = string_sprintf(US"%s %s%s\r\n", US"get", sub_arg[2], sub_arg[3]); |
|
652 ++ memcache_request_len = Ustrlen(memcache_request); |
|
653 ++ } |
|
654 ++ else |
|
655 ++ { |
|
656 ++ expand_string_message = string_sprintf(US"invalid memcache operation: '%s'", memcache_op_string); |
|
657 ++ goto EXPAND_FAILED; |
|
658 ++ } |
|
659 ++ |
|
660 ++ /* memcache servers - we expect either a named list or just a list */ |
|
661 ++ if (sub_arg[0][0] == '+') |
|
662 ++ { |
|
663 ++ if (NULL == (memcache_hosts_node = tree_search(hostlist_anchor, sub_arg[0] + sizeof(uschar)))) |
|
664 ++ { |
|
665 ++ expand_string_message = string_sprintf(US"named list '%s' not found", |
|
666 ++ sub_arg[0]); |
|
667 ++ goto EXPAND_FAILED; |
|
668 ++ } |
|
669 ++ memcache_hosts_string = ((namedlist_block *) memcache_hosts_node->data.ptr)->string; |
|
670 ++ } |
|
671 ++ else |
|
672 ++ { |
|
673 ++ memcache_hosts_string = sub_arg[0]; |
|
674 ++ } |
|
675 ++ |
|
676 ++ while ((NULL != (memcache_host = string_nextinlist(&memcache_hosts_string, &memcache_hostlist_separator, NULL, 0)))) |
|
677 ++ { |
|
678 ++ if (i_memcache_server >= MEMCACHE_SERVERS_MAX) |
|
679 ++ { |
|
680 ++ expand_string_message = string_sprintf(US"too many memcache servers, %d is max", |
|
681 ++ MEMCACHE_SERVERS_MAX); |
|
682 ++ goto EXPAND_FAILED; |
|
683 ++ } |
|
684 ++ memcache_servers[i_memcache_server] = memcache_host; |
|
685 ++ i_memcache_server++; |
|
686 ++ } |
|
687 ++ n_memcache_servers = i_memcache_server; |
|
688 ++ |
|
689 ++ /* talk to server(s) unless we are skipping */ |
|
690 ++ if (!skipping) |
|
691 ++ { |
|
692 ++ for (i_memcache_server = 0; i_memcache_server < n_memcache_servers; |
|
693 ++ i_memcache_server++) |
|
694 ++ { |
|
695 ++ |
|
696 ++ uschar *memcache_server_name = memcache_servers[i_memcache_server]; |
|
697 ++ uschar *memcache_port_name = Ustrrchr(memcache_server_name, ':'); |
|
698 ++ uschar *memcache_default_port_name = US"11211"; |
|
699 ++ |
|
700 ++ /* Sort out the port */ |
|
701 ++ if (memcache_port_name == NULL) |
|
702 ++ { |
|
703 ++ memcache_port_name = memcache_default_port_name; |
|
704 ++ } |
|
705 ++ else |
|
706 ++ { |
|
707 ++ *memcache_port_name++ = 0; /* Terminate server name */ |
|
708 ++ } |
|
709 ++ |
|
710 ++ uschar *memcache_server_readsocket = |
|
711 ++ string_sprintf(US"${readsocket{inet:%s:%s}{%s}{%s}}", |
|
712 ++ memcache_server_name, |
|
713 ++ memcache_port_name, |
|
714 ++ memcache_request, |
|
715 ++ sub_arg[i_memcache_timeout] == NULL ? memcache_timeout : sub_arg[i_memcache_timeout]); |
|
716 ++ DEBUG(D_memcache) |
|
717 ++ { |
|
718 ++ debug_printf("readsocket expansion item: '%s'\n", memcache_server_readsocket); |
|
719 ++ } |
|
720 ++ memcache_readsocket_result = expand_string(memcache_server_readsocket); |
|
721 ++ if (memcache_readsocket_result != NULL) |
|
722 ++ { |
|
723 ++ if (memcache_operation == MEMCACHE_OP_GET |
|
724 ++ && 0 == Ustrncmp(memcache_readsocket_result, US"VALUE ", Ustrlen(US"VALUE "))) |
|
725 ++ { |
|
726 ++ /* we tried to use expand_gettokened but it segfaults and we |
|
727 ++ didnt find out why */ |
|
728 ++ uschar *memcache_value_size = memcache_readsocket_result; |
|
729 ++ int i; |
|
730 ++ for (i = 0; i < 3; i++) { memcache_value_size = Ustrchr(memcache_value_size, ' ') + 1; } |
|
731 ++ |
|
732 ++ lookup_value = strstr(memcache_readsocket_result, "\r\n") + Ustrlen("\r\n"); |
|
733 ++ lookup_value[ |
|
734 ++ Ustrtol(memcache_value_size, |
|
735 ++ NULL, |
|
736 ++ 0)] = 0; |
|
737 ++ |
|
738 ++ DEBUG(D_memcache) { debug_printf("lookup_value: '%s'\n", lookup_value); } |
|
739 ++ |
|
740 ++ } |
|
741 ++ else if (memcache_operation == MEMCACHE_OP_SET |
|
742 ++ && 0 == Ustrcmp(memcache_readsocket_result, US"STORED\r\n")) |
|
743 ++ { |
|
744 ++ } |
|
745 ++ else |
|
746 ++ { |
|
747 ++ /* something went wrong - try something else */ |
|
748 ++ memcache_request_failed = TRUE; |
|
749 ++ DEBUG(D_memcache) |
|
750 ++ { |
|
751 ++ debug_printf("memcache operation '%s' failed: '%s'\n", |
|
752 ++ memcache_op_string, |
|
753 ++ memcache_readsocket_result); |
|
754 ++ } |
|
755 ++ continue; |
|
756 ++ } |
|
757 ++ |
|
758 ++ yield = string_cat(yield, |
|
759 ++ &size, |
|
760 ++ &ptr, |
|
761 ++ US"yes", |
|
762 ++ Ustrlen(US"yes")); |
|
763 ++ break; |
|
764 ++ } |
|
765 ++ |
|
766 ++ } |
|
767 ++ |
|
768 ++ if (memcache_request_failed) |
|
769 ++ { |
|
770 ++ /* every try failed if we come here */ |
|
771 ++ expand_string_message = |
|
772 ++ string_sprintf(US"all memcache servers failed - last error was: '%s'", |
|
773 ++ expand_string_message); |
|
774 ++ goto EXPAND_FAILED; |
|
775 ++ } |
|
776 ++ } |
|
777 ++ continue; |
|
778 ++ } |
|
779 ++ #endif /* SUPPORT_MEMCACHE */ |
|
780 + } |
|
781 + |
|
782 + /* Control reaches here if the name is not recognized as one of the more |
|
783 +diff -urNad exim4-4.69~/build-tree/src/globals.c exim4-4.69/build-tree/src/globals.c |
|
784 +--- exim4-4.69~/build-tree/src/globals.c 2009-08-13 13:12:55.000000000 +0200 |
|
785 ++++ exim4-4.69/build-tree/src/globals.c 2009-08-13 13:12:56.000000000 +0200 |
|
786 +@@ -451,6 +451,7 @@ |
|
787 + { US"load", D_load }, |
|
788 + { US"local_scan", D_local_scan }, |
|
789 + { US"lookup", D_lookup }, |
|
790 ++ { US"memcache", D_memcache }, |
|
791 + { US"memory", D_memory }, |
|
792 + { US"pid", D_pid }, |
|
793 + { US"process_info", D_process_info }, |
|
794 +diff -urNad exim4-4.69~/build-tree/src/macros.h exim4-4.69/build-tree/src/macros.h |
|
795 +--- exim4-4.69~/build-tree/src/macros.h 2007-08-22 12:10:23.000000000 +0200 |
|
796 ++++ exim4-4.69/build-tree/src/macros.h 2009-08-13 13:12:56.000000000 +0200 |
|
797 +@@ -313,19 +313,20 @@ |
|
798 + #define D_load 0x00008000 |
|
799 + #define D_lookup 0x00010000 |
|
800 + #define D_memory 0x00020000 |
|
801 +-#define D_pid 0x00040000 |
|
802 +-#define D_process_info 0x00080000 |
|
803 +-#define D_queue_run 0x00100000 |
|
804 +-#define D_receive 0x00200000 |
|
805 +-#define D_resolver 0x00400000 |
|
806 +-#define D_retry 0x00800000 |
|
807 +-#define D_rewrite 0x01000000 |
|
808 +-#define D_route 0x02000000 |
|
809 +-#define D_timestamp 0x04000000 |
|
810 +-#define D_tls 0x08000000 |
|
811 +-#define D_transport 0x10000000 |
|
812 +-#define D_uid 0x20000000 |
|
813 +-#define D_verify 0x40000000 |
|
814 ++#define D_memcache 0x00040000 |
|
815 ++#define D_pid 0x00080000 |
|
816 ++#define D_process_info 0x00100000 |
|
817 ++#define D_queue_run 0x00200000 |
|
818 ++#define D_receive 0x00400000 |
|
819 ++#define D_resolver 0x00800000 |
|
820 ++#define D_retry 0x01000000 |
|
821 ++#define D_rewrite 0x02000000 |
|
822 ++#define D_route 0x04000000 |
|
823 ++#define D_timestamp 0x08000000 |
|
824 ++#define D_tls 0x10000000 |
|
825 ++#define D_transport 0x20000000 |
|
826 ++#define D_uid 0x40000000 |
|
827 ++#define D_verify 0x80000000 |
|
828 + |
|
829 + /* The D_all value must always have all bits set, as it is recognized specially |
|
830 + by the function that decodes debug and log selectors. This is to enable it to |
|
831 +@@ -515,21 +516,21 @@ |
|
832 + #define RDO_INCLUDE 0x00000100 /* Forbid :include: */ |
|
833 + #define RDO_LOG 0x00000200 /* Forbid "log" */ |
|
834 + #define RDO_LOOKUP 0x00000400 /* Forbid "lookup" in expansion in filter */ |
|
835 +-#define RDO_PERL 0x00000800 /* Forbid "perl" in expansion in filter */ |
|
836 +-#define RDO_READFILE 0x00001000 /* Forbid "readfile" in exp in filter */ |
|
837 +-#define RDO_READSOCK 0x00002000 /* Forbid "readsocket" in exp in filter */ |
|
838 +-#define RDO_RUN 0x00004000 /* Forbid "run" in expansion in filter */ |
|
839 +-#define RDO_DLFUNC 0x00008000 /* Forbid "dlfunc" in expansion in filter */ |
|
840 +-#define RDO_REALLOG 0x00010000 /* Really do log (not testing/verifying) */ |
|
841 +-#define RDO_REWRITE 0x00020000 /* Rewrite generated addresses */ |
|
842 +-#define RDO_EXIM_FILTER 0x00040000 /* Forbid Exim filters */ |
|
843 +-#define RDO_SIEVE_FILTER 0x00080000 /* Forbid Sieve filters */ |
|
844 +-#define RDO_PREPEND_HOME 0x00100000 /* Prepend $home to relative paths in Exim filter save commands */ |
|
845 +- |
|
846 ++#define RDO_MEMCACHE 0x00000800 /* Forbid "memcache" in expansion in filter */ |
|
847 ++#define RDO_PERL 0x00001000 /* Forbid "perl" in expansion in filter */ |
|
848 ++#define RDO_READFILE 0x00002000 /* Forbid "readfile" in exp in filter */ |
|
849 ++#define RDO_READSOCK 0x00004000 /* Forbid "readsocket" in exp in filter */ |
|
850 ++#define RDO_RUN 0x00008000 /* Forbid "run" in expansion in filter */ |
|
851 ++#define RDO_DLFUNC 0x00010000 /* Forbid "dlfunc" in expansion in filter */ |
|
852 ++#define RDO_REALLOG 0x00020000 /* Really do log (not testing/verifying) */ |
|
853 ++#define RDO_REWRITE 0x00040000 /* Rewrite generated addresses */ |
|
854 ++#define RDO_EXIM_FILTER 0x00080000 /* Forbid Exim filters */ |
|
855 ++#define RDO_SIEVE_FILTER 0x00100000 /* Forbid Sieve filters */ |
|
856 ++#define RDO_PREPEND_HOME 0x00200000 /* Prepend $home to relative paths in Exim filter save commands */ |
|
857 + /* This is the set that apply to expansions in filters */ |
|
858 + |
|
859 + #define RDO_FILTER_EXPANSIONS \ |
|
860 +- (RDO_EXISTS|RDO_LOOKUP|RDO_PERL|RDO_READFILE|RDO_READSOCK|RDO_RUN|RDO_DLFUNC) |
|
861 ++ (RDO_EXISTS|RDO_LOOKUP|RDO_MEMCACHE|RDO_PERL|RDO_READFILE|RDO_READSOCK|RDO_RUN|RDO_DLFUNC) |
|
862 + |
|
863 + /* As well as the RDO bits themselves, we need the bit numbers in order to |
|
864 + access (most of) the individual bits as separate options. This could be |
|
865 +@@ -537,8 +538,9 @@ |
|
866 + |
|
867 + enum { RDON_BLACKHOLE, RDON_DEFER, RDON_EACCES, RDON_ENOTDIR, RDON_EXISTS, |
|
868 + RDON_FAIL, RDON_FILTER, RDON_FREEZE, RDON_INCLUDE, RDON_LOG, RDON_LOOKUP, |
|
869 +- RDON_PERL, RDON_READFILE, RDON_READSOCK, RDON_RUN, RDON_DLFUNC, RDON_REALLOG, |
|
870 +- RDON_REWRITE, RDON_EXIM_FILTER, RDON_SIEVE_FILTER, RDON_PREPEND_HOME }; |
|
871 ++ RDON_MEMCACHE, RDON_PERL, RDON_READFILE, RDON_READSOCK, RDON_RUN, |
|
872 ++ RDON_DLFUNC, RDON_REALLOG, RDON_REWRITE, RDON_EXIM_FILTER, RDON_SIEVE_FILTER, |
|
873 ++ RDON_PREPEND_HOME }; |
|
874 + |
|
875 + /* Results of filter or forward file processing. Some are only from a filter; |
|
876 + some are only from a forward file. */ |
|
877 +diff -urNad exim4-4.69~/build-tree/src/memcache.h exim4-4.69/build-tree/src/memcache.h |
|
878 +--- exim4-4.69~/build-tree/src/memcache.h 1970-01-01 01:00:00.000000000 +0100 |
|
879 ++++ exim4-4.69/build-tree/src/memcache.h 2009-08-13 13:12:56.000000000 +0200 |
|
880 +@@ -0,0 +1,14 @@ |
|
881 ++#ifndef MEMCACHE_H |
|
882 ++ |
|
883 ++#define MEMCACHE_SERVERS_MAX 16 |
|
884 ++#define MEMCACHE_OP_SET 0 |
|
885 ++#define MEMCACHE_OP_GET 1 |
|
886 ++ |
|
887 ++/* |
|
888 ++extern void memcache_addhost(uschar *, uschar *, void *); |
|
889 ++*/ |
|
890 ++/* host list */ |
|
891 ++ |
|
892 ++/* put declarations before */ |
|
893 ++#define MEMCACHE_H |
|
894 ++#endif |
|