1 |
jokey 08/09/28 19:36:17 |
2 |
|
3 |
Added: qpsmtpd-0.43-peer_hooks.patch qpsmtpd.confd |
4 |
qpsmtpd-0.40-clamd_conf.patch |
5 |
qpsmtpd-0.40-peer_hooks.patch qpsmtpd.initd |
6 |
qpsmtpd.envd |
7 |
qpsmtpd-0.40-badrcptto_allowrelay.patch |
8 |
qpsmtpd-0.40-badhelo_disconnect.patch |
9 |
qpsmtpd.xinetd |
10 |
Log: |
11 |
Initial import, also fixes bug #167930. Thanks to various people contributing on bugzie and on irc |
12 |
(Portage version: 2.2_rc11/cvs/Linux 2.6.26-gentoo-r1 i686) |
13 |
|
14 |
Revision Changes Path |
15 |
1.1 mail-mta/qpsmtpd/files/qpsmtpd-0.43-peer_hooks.patch |
16 |
|
17 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd-0.43-peer_hooks.patch?rev=1.1&view=markup |
18 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd-0.43-peer_hooks.patch?rev=1.1&content-type=text/plain |
19 |
|
20 |
Index: qpsmtpd-0.43-peer_hooks.patch |
21 |
=================================================================== |
22 |
--- qpsmtpd-0.40/lib/Qpsmtpd/SMTP.pm.peer_hooks 2007-06-14 11:57:27.000000000 -0600 |
23 |
+++ qpsmtpd-0.40/lib/Qpsmtpd/SMTP.pm 2007-06-14 13:44:52.000000000 -0600 |
24 |
@@ -95,6 +95,11 @@ |
25 |
my $self = shift; |
26 |
# this should maybe be called something else than "connect", see |
27 |
# lib/Qpsmtpd/TcpServer.pm for more confusion. |
28 |
+ my ($rc, $msg) = $self->run_hooks("set_hooks"); |
29 |
+ if ($rc == DENY) { |
30 |
+ $self->respond(550, ($msg || 'Connection from you denied, bye bye.')); |
31 |
+ return $rc; |
32 |
+ } |
33 |
$self->run_hooks("connect"); |
34 |
return DONE; |
35 |
} |
36 |
@@ -278,7 +283,9 @@ |
37 |
|
38 |
# if we don't have a plugin implementing this auth mechanism, 504 |
39 |
if( exists $auth_mechanisms{uc($mechanism)} ) { |
40 |
- return $self->{_auth} = Qpsmtpd::Auth::SASL( $self, $mechanism, @stuff ); |
41 |
+ $self->{_auth} = Qpsmtpd::Auth::SASL( $self, $mechanism, @stuff ); |
42 |
+ $self->run_hooks("valid_auth") if $self->{_auth} == OK; |
43 |
+ return $self->{_auth}; |
44 |
} else { |
45 |
$self->respond( 504, "Unimplemented authentification mechanism: $mechanism" ); |
46 |
return DENY; |
47 |
--- qpsmtpd-0.40/lib/Qpsmtpd//Plugin.pm.peer_hooks 2008-03-25 02:02:37.000000000 +0000 |
48 |
+++ qpsmtpd-0.40/lib/Qpsmtpd//Plugin.pm 2008-03-25 02:04:00.000000000 +0000 |
49 |
@@ -6,7 +6,7 @@ |
50 |
our @hooks = qw( |
51 |
logging config pre-connection connect ehlo_parse ehlo |
52 |
helo_parse helo auth_parse auth auth-plain auth-login auth-cram-md5 |
53 |
- rcpt_parse rcpt_pre rcpt mail_parse mail mail_pre |
54 |
+ valid_auth set_hooks rcpt_parse rcpt_pre rcpt mail_parse mail mail_pre |
55 |
data data_post queue_pre queue queue_post vrfy noop |
56 |
quit reset_transaction disconnect post-connection |
57 |
unrecognized_command deny ok received_line help |
58 |
|
59 |
|
60 |
|
61 |
1.1 mail-mta/qpsmtpd/files/qpsmtpd.confd |
62 |
|
63 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd.confd?rev=1.1&view=markup |
64 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd.confd?rev=1.1&content-type=text/plain |
65 |
|
66 |
Index: qpsmtpd.confd |
67 |
=================================================================== |
68 |
# Config file for /etc/init.d/qpsmtpd |
69 |
# |
70 |
|
71 |
QPSMTPD_CONFIG="/etc/qpsmtpd" |
72 |
QPSMTPD_NICELEVEL="0" |
73 |
|
74 |
# Select QPSMTPD server type |
75 |
# - async |
76 |
# Not all plugins work without problems with the async mode. |
77 |
# - forkserver (default) |
78 |
# - prefork |
79 |
# Does not work 100%. Use at your own risk. |
80 |
QPSMTPD_SERVER_TYPE="forkserver" |
81 |
|
82 |
# QPSMTPD options. This can be different depending on |
83 |
# what QPSMTPD server you run. |
84 |
# |
85 |
# Typical forkserver |
86 |
QPSMTPD_OPTIONS="-l 0.0.0.0 -p 25 -u smtpd" |
87 |
# |
88 |
# Typical prefork |
89 |
# QPSMTPD_OPTIONS="--interface 0.0.0.0 --port 25 --user smtpd" |
90 |
# |
91 |
# Typical async |
92 |
# QPSMTPD_OPTIONS="-l 0.0.0.0 -p 25 -u smtpd" |
93 |
|
94 |
|
95 |
|
96 |
1.1 mail-mta/qpsmtpd/files/qpsmtpd-0.40-clamd_conf.patch |
97 |
|
98 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd-0.40-clamd_conf.patch?rev=1.1&view=markup |
99 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd-0.40-clamd_conf.patch?rev=1.1&content-type=text/plain |
100 |
|
101 |
Index: qpsmtpd-0.40-clamd_conf.patch |
102 |
=================================================================== |
103 |
diff -Nur -x '*.orig' -x '*.rej' qpsmtpd-0.40/plugins/virus/clamav mezzanine_patched_qpsmtpd-0.40/plugins/virus/clamav |
104 |
--- qpsmtpd-0.40/plugins/virus/clamav 2007-06-14 11:57:23.000000000 -0600 |
105 |
+++ mezzanine_patched_qpsmtpd-0.40/plugins/virus/clamav 2007-06-15 13:37:26.000000000 -0600 |
106 |
@@ -148,7 +148,7 @@ |
107 |
$self->{_max_size} ||= 512 * 1024; |
108 |
$self->{_spool_dir} ||= $self->spool_dir(); |
109 |
$self->{_back_compat} ||= ''; # make sure something is set |
110 |
- $self->{_clamd_conf} ||= '/etc/clamd/conf'; # make sure something is set |
111 |
+ $self->{_clamd_conf} ||= '/etc/clamd.conf'; # make sure something is set |
112 |
|
113 |
unless ($self->{_spool_dir}) { |
114 |
$self->log(LOGERROR, "No spool dir configuration found"); |
115 |
|
116 |
|
117 |
|
118 |
1.1 mail-mta/qpsmtpd/files/qpsmtpd-0.40-peer_hooks.patch |
119 |
|
120 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd-0.40-peer_hooks.patch?rev=1.1&view=markup |
121 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd-0.40-peer_hooks.patch?rev=1.1&content-type=text/plain |
122 |
|
123 |
Index: qpsmtpd-0.40-peer_hooks.patch |
124 |
=================================================================== |
125 |
--- qpsmtpd-0.40/lib/Qpsmtpd/SMTP.pm.peer_hooks 2007-06-14 11:57:27.000000000 -0600 |
126 |
+++ qpsmtpd-0.40/lib/Qpsmtpd/SMTP.pm 2007-06-14 13:44:52.000000000 -0600 |
127 |
@@ -95,6 +95,11 @@ |
128 |
my $self = shift; |
129 |
# this should maybe be called something else than "connect", see |
130 |
# lib/Qpsmtpd/TcpServer.pm for more confusion. |
131 |
+ my ($rc, $msg) = $self->run_hooks("set_hooks"); |
132 |
+ if ($rc == DENY) { |
133 |
+ $self->respond(550, ($msg || 'Connection from you denied, bye bye.')); |
134 |
+ return $rc; |
135 |
+ } |
136 |
$self->run_hooks("connect"); |
137 |
return DONE; |
138 |
} |
139 |
@@ -278,7 +283,9 @@ |
140 |
|
141 |
# if we don't have a plugin implementing this auth mechanism, 504 |
142 |
if( exists $auth_mechanisms{uc($mechanism)} ) { |
143 |
- return $self->{_auth} = Qpsmtpd::Auth::SASL( $self, $mechanism, @stuff ); |
144 |
+ $self->{_auth} = Qpsmtpd::Auth::SASL( $self, $mechanism, @stuff ); |
145 |
+ $self->run_hooks("valid_auth") if $self->{_auth} == OK; |
146 |
+ return $self->{_auth}; |
147 |
} else { |
148 |
$self->respond( 504, "Unimplemented authentification mechanism: $mechanism" ); |
149 |
return DENY; |
150 |
--- qpsmtpd-0.40/lib/Qpsmtpd/Plugin.pm.peer_hooks 2007-06-14 11:57:27.000000000 -0600 |
151 |
+++ qpsmtpd-0.40/lib/Qpsmtpd/Plugin.pm 2007-06-14 13:43:53.000000000 -0600 |
152 |
@@ -6,7 +6,7 @@ |
153 |
our @hooks = qw( |
154 |
logging config pre-connection connect ehlo_parse ehlo |
155 |
helo_parse helo auth_parse auth auth-plain auth-login auth-cram-md5 |
156 |
- rcpt_parse rcpt_pre rcpt mail_parse mail mail_pre |
157 |
+ valid_auth set_hooks rcpt_parse rcpt_pre rcpt mail_parse mail mail_pre |
158 |
data data_post queue_pre queue queue_post |
159 |
quit reset_transaction disconnect post-connection |
160 |
unrecognized_command deny ok received_line |
161 |
|
162 |
|
163 |
|
164 |
1.1 mail-mta/qpsmtpd/files/qpsmtpd.initd |
165 |
|
166 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd.initd?rev=1.1&view=markup |
167 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd.initd?rev=1.1&content-type=text/plain |
168 |
|
169 |
Index: qpsmtpd.initd |
170 |
=================================================================== |
171 |
#!/sbin/runscript |
172 |
|
173 |
depend() { |
174 |
use logger dns ypbind amavisd mysql postgresql antivirus postfix_greylist net saslauthd |
175 |
provide mta |
176 |
} |
177 |
|
178 |
checkconfig() { |
179 |
if ! [ -d "${QPSMTPD_CONFIG:-/etc/qpsmtpd}" ]; then |
180 |
eerror "Configuration directory ${QPSMTPD_CONFIG:-/etc/qpsmtpd} does not exist." |
181 |
return 1 |
182 |
fi |
183 |
return 0 |
184 |
} |
185 |
|
186 |
start() { |
187 |
checkconfig || return 1 |
188 |
ebegin "Starting qpsmtpd [${QPSMTPD_SERVER_TYPE}] server" |
189 |
HOME="/var/spool/qpsmtpd" |
190 |
local QPSMTPD_SERVER_BIN="" |
191 |
local myopts="" |
192 |
export QPSMTPD_CONFIG=${QPSMTPD_CONFIG} |
193 |
for foo in PERL_UNICODE LANG LC_TIME LC_ALL BASH_ENV ENV CDPATH IFS |
194 |
do |
195 |
unset ${foo} |
196 |
done |
197 |
case "${QPSMTPD_SERVER_TYPE}" in |
198 |
prefork) |
199 |
QPSMTPD_SERVER_BIN="/usr/bin/qpsmtpd-prefork" |
200 |
QPSMTPD_OPTIONS="$(echo "${QPSMTPD_OPTIONS}" | sed "s:\-\-pid\-file[\t ]\{1,99\}[^ ]*::gI")" |
201 |
# Option --pid-file is mentioned in the help of the prefork server |
202 |
# but does not work when specified. |
203 |
# QPSMTPD_OPTIONS="${QPSMTPD_OPTIONS} --pid-file /var/run/qpsmtpd.pid" |
204 |
myopts="${myopts} --make-pidfile --pidfile /var/run/qpsmtpd.pid" |
205 |
;; |
206 |
async) |
207 |
QPSMTPD_SERVER_BIN="/usr/sbin/qpsmtpd-async" |
208 |
myopts="${myopts} --background --make-pidfile --pidfile /var/run/qpsmtpd.pid" |
209 |
;; |
210 |
forkserver|*) |
211 |
QPSMTPD_SERVER_BIN="/usr/bin/qpsmtpd-forkserver" |
212 |
QPSMTPD_OPTIONS="$(echo "${QPSMTPD_OPTIONS}" | sed "s:\-\-pid\-file[\t ]\{1,99\}[^ ]*::gI")" |
213 |
QPSMTPD_OPTIONS="$(echo "${QPSMTPD_OPTIONS}" | sed "s:[\t ]\{0,99\}\-d[\t ]\{1,99\}|[\t ]\{1,99\}\-d[\t ]\{0,99\}::gI")" |
214 |
QPSMTPD_OPTIONS="$(echo "${QPSMTPD_OPTIONS}" | sed "s:[\t ]\{0,99\}\-\detach[\t ]\{1,99\}|[\t ]\{1,99\}\-\-detach[\t ]\{0,99\}::gI")" |
215 |
QPSMTPD_OPTIONS="${QPSMTPD_OPTIONS} --pid-file /var/run/qpsmtpd.pid --detach" |
216 |
myopts="${myopts} --pidfile /dev/null" |
217 |
;; |
218 |
esac |
219 |
start-stop-daemon --start --nicelevel ${QPSMTPD_NICELEVEL:-0} \ |
220 |
--quiet ${myopts} \ |
221 |
--exec ${QPSMTPD_SERVER_BIN} \ |
222 |
-- ${QPSMTPD_OPTIONS} |
223 |
eend $? |
224 |
} |
225 |
|
226 |
stop() { |
227 |
ebegin "Stopping qpsmtpd [${QPSMTPD_SERVER_TYPE}] server" |
228 |
start-stop-daemon --stop --quiet --pidfile /var/run/qpsmtpd.pid |
229 |
eend $? |
230 |
} |
231 |
|
232 |
|
233 |
|
234 |
1.1 mail-mta/qpsmtpd/files/qpsmtpd.envd |
235 |
|
236 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd.envd?rev=1.1&view=markup |
237 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd.envd?rev=1.1&content-type=text/plain |
238 |
|
239 |
Index: qpsmtpd.envd |
240 |
=================================================================== |
241 |
QPSMTPD_CONFIG="/etc/qpsmtpd" |
242 |
CONFIG_PROTECT="/usr/share/qpsmtpd/plugins" |
243 |
|
244 |
|
245 |
|
246 |
1.1 mail-mta/qpsmtpd/files/qpsmtpd-0.40-badrcptto_allowrelay.patch |
247 |
|
248 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd-0.40-badrcptto_allowrelay.patch?rev=1.1&view=markup |
249 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd-0.40-badrcptto_allowrelay.patch?rev=1.1&content-type=text/plain |
250 |
|
251 |
Index: qpsmtpd-0.40-badrcptto_allowrelay.patch |
252 |
=================================================================== |
253 |
--- qpsmtpd-0.40/plugins/check_badrcptto.badrcptto_allowrelay 2007-06-14 11:57:24.000000000 -0600 |
254 |
+++ qpsmtpd-0.40/plugins/check_badrcptto 2007-06-14 13:26:42.000000000 -0600 |
255 |
@@ -3,6 +3,7 @@ |
256 |
|
257 |
sub hook_rcpt { |
258 |
my ($self, $transaction, $recipient, %param) = @_; |
259 |
+ return (DECLINED) if $self->qp->connection->relay_client; |
260 |
my @badrcptto = $self->qp->config("badrcptto") or return (DECLINED); |
261 |
return (DECLINED) unless $recipient->host && $recipient->user; |
262 |
my $host = lc $recipient->host; |
263 |
|
264 |
|
265 |
|
266 |
1.1 mail-mta/qpsmtpd/files/qpsmtpd-0.40-badhelo_disconnect.patch |
267 |
|
268 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd-0.40-badhelo_disconnect.patch?rev=1.1&view=markup |
269 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd-0.40-badhelo_disconnect.patch?rev=1.1&content-type=text/plain |
270 |
|
271 |
Index: qpsmtpd-0.40-badhelo_disconnect.patch |
272 |
=================================================================== |
273 |
--- qpsmtpd-0.40/plugins/check_spamhelo.badhelo_disconnect 2007-06-14 11:57:24.000000000 -0600 |
274 |
+++ qpsmtpd-0.40/plugins/check_spamhelo 2007-06-14 13:21:45.000000000 -0600 |
275 |
@@ -23,7 +23,7 @@ |
276 |
for my $bad ($self->qp->config('badhelo')) { |
277 |
if ($host eq lc $bad) { |
278 |
$self->log(LOGDEBUG, "Denying HELO from host claiming to be $bad"); |
279 |
- return (DENY, "Sorry, I don't believe that you are $host."); |
280 |
+ return (DENY_DISCONNECT, "Sorry, I don't believe that you are $host."); |
281 |
} |
282 |
} |
283 |
return DECLINED; |
284 |
|
285 |
|
286 |
|
287 |
1.1 mail-mta/qpsmtpd/files/qpsmtpd.xinetd |
288 |
|
289 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd.xinetd?rev=1.1&view=markup |
290 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-mta/qpsmtpd/files/qpsmtpd.xinetd?rev=1.1&content-type=text/plain |
291 |
|
292 |
Index: qpsmtpd.xinetd |
293 |
=================================================================== |
294 |
# default: off |
295 |
# description: The telnet server serves telnet sessions; it uses \ |
296 |
# unencrypted username/password pairs for authentication. |
297 |
|
298 |
service smtp |
299 |
{ |
300 |
flags = REUSE |
301 |
socket_type = stream |
302 |
wait = no |
303 |
user = smtpd |
304 |
group = smtpd |
305 |
groups = yes |
306 |
log_on_failure += USERID HOST |
307 |
disable = yes |
308 |
rlimit_as = 128M |
309 |
instances = 40 |
310 |
per_source = 10 |
311 |
cps = 50 10 |
312 |
server = /usr/bin/qpsmtpd |
313 |
} |