/[smecontribs]/rpms/smeserver-altqmail/contribs10/smeserver-altqmail-0.1.2-sme10-throttle.patch
ViewVC logotype

Annotation of /rpms/smeserver-altqmail/contribs10/smeserver-altqmail-0.1.2-sme10-throttle.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Fri Mar 24 03:45:27 2023 UTC (14 months, 1 week ago) by jpp
Branch: MAIN
CVS Tags: smeserver-altqmail-0_1_2-2_el7_sme, HEAD
* Thu Mar 23 2023 Jean-Philippe Pialasse <tests@pialasse.com> 0.1.2-2.sme
- import to SME10 [SME: 12344]
  adapt for systemd and add update event
  add throttle capability

1 jpp 1.1 diff -Nur --no-dereference smeserver-altqmail-0.1.2.old/createlinks smeserver-altqmail-0.1.2/createlinks
2     --- smeserver-altqmail-0.1.2.old/createlinks 2017-11-19 04:53:47.000000000 -0500
3     +++ smeserver-altqmail-0.1.2/createlinks 2023-03-23 23:44:37.531000000 -0400
4     @@ -2,28 +2,55 @@
5    
6     use esmith::Build::CreateLinks qw(:all);
7    
8     -service_link_enhanced("altqmail", "S80", "7");
9     -service_link_enhanced("altqmail", "K60", "6");
10     -service_link_enhanced("altqmail", "K60", "0");
11     -service_link_enhanced("altqmail", "K60", "1");
12     -service_link_enhanced("altqmail-smtpd", "S80", "7");
13     -service_link_enhanced("altqmail-smtpd", "K60", "6");
14     -service_link_enhanced("altqmail-smtpd", "K60", "0");
15     -service_link_enhanced("altqmail-smtpd", "K60", "1");
16     +#service_link_enhanced("altqmail", "S80", "7");
17     +#service_link_enhanced("altqmail", "K60", "6");
18     +#service_link_enhanced("altqmail", "K60", "0");
19     +#service_link_enhanced("altqmail", "K60", "1");
20     +#service_link_enhanced("altqmail-smtpd", "S80", "7");
21     +#service_link_enhanced("altqmail-smtpd", "K60", "6");
22     +#service_link_enhanced("altqmail-smtpd", "K60", "0");
23     +#service_link_enhanced("altqmail-smtpd", "K60", "1");
24    
25     safe_touch("root/var/service/altqmail/down");
26     safe_touch("root/var/service/altqmail-smtpd/down");
27     -safe_symlink("../daemontools" , 'root/etc/rc.d/init.d/supervise/altqmail');
28     -safe_symlink("../daemontools" , 'root/etc/rc.d/init.d/supervise/altqmail-smtpd');
29     +#safe_symlink("../daemontools" , 'root/etc/rc.d/init.d/supervise/altqmail');
30     +#safe_symlink("../daemontools" , 'root/etc/rc.d/init.d/supervise/altqmail-smtpd');
31    
32     safe_symlink("/var/service/altqmail" , 'root/service/altqmail');
33     safe_symlink("/var/service/altqmail-smtpd" , 'root/service/altqmail-smtpd');
34    
35     -safe_symlink("sighup", "root/etc/e-smith/events/email-update/services2adjust/altqmail");
36     -safe_symlink("sighup", "root/etc/e-smith/events/email-update/services2adjust/altqmail-smtpd");
37     +safe_symlink("reload-or-restart", "root/etc/e-smith/events/email-update/services2adjust/altqmail");
38     +safe_symlink("reload-or-restart", "root/etc/e-smith/events/email-update/services2adjust/altqmail-smtpd");
39    
40     -foreach my $f (qw(me bouncehost smtproutes concurrencyremote)){
41     +foreach my $f (qw(me bouncehost smtproutes concurrencyremote outratelimit)){
42     safe_touch("root/etc/e-smith/templates/var/service/altqmail/root/var/qmail/control/$f/template-begin");
43     templates2events("/var/service/altqmail/root/var/qmail/control/$f", qw(email-update bootstrap-console-save));
44     }
45    
46     +my $pkg= "smeserver-altqmail";
47     +my $event = "${pkg}-update";
48     +
49     +event_actions($event, qw(
50     + systemd-default 88
51     + systemd-reload 89
52     +));
53     +
54     +event_templates($event, qw(
55     +/var/service/altqmail/root/var/qmail/control/me
56     +/var/service/altqmail/root/var/qmail/control/bouncehost
57     +/var/service/altqmail/root/var/qmail/control/smtproutes
58     +/var/service/altqmail/root/var/qmail/control/concurrencyremote
59     +/var/service/altqmail/root/var/qmail/control/outratelimit
60     +));
61     +
62     +event_services($event, qw(
63     + altqmail reload-or-restart
64     + altqmail-smtpd reload-or-restart
65     + qmail restart
66     +));
67     +
68     +#nothing to backup restore
69     +#use esmith::Build::Backup qw(:all);
70     +#backup_includes($pkg, qw(
71     +#/opt/foo/
72     +#));
73     diff -Nur --no-dereference smeserver-altqmail-0.1.2.old/root/etc/e-smith/templates/var/service/altqmail/root/var/qmail/control/outratelimit/10all smeserver-altqmail-0.1.2/root/etc/e-smith/templates/var/service/altqmail/root/var/qmail/control/outratelimit/10all
74     --- smeserver-altqmail-0.1.2.old/root/etc/e-smith/templates/var/service/altqmail/root/var/qmail/control/outratelimit/10all 1969-12-31 19:00:00.000000000 -0500
75     +++ smeserver-altqmail-0.1.2/root/etc/e-smith/templates/var/service/altqmail/root/var/qmail/control/outratelimit/10all 2023-03-23 23:29:13.227000000 -0400
76     @@ -0,0 +1 @@
77     +{ $DB->get('altqmail')->prop('OutRateLimit') || "20/3600"; }
78     diff -Nur --no-dereference smeserver-altqmail-0.1.2.old/root/usr/lib/systemd/system/altqmail.service smeserver-altqmail-0.1.2/root/usr/lib/systemd/system/altqmail.service
79     --- smeserver-altqmail-0.1.2.old/root/usr/lib/systemd/system/altqmail.service 1969-12-31 19:00:00.000000000 -0500
80     +++ smeserver-altqmail-0.1.2/root/usr/lib/systemd/system/altqmail.service 2023-03-23 22:10:48.539000000 -0400
81     @@ -0,0 +1,16 @@
82     +[Unit]
83     +Description=altqmail, message transfer agent
84     +After=network.target
85     +Requires=runit.service
86     +
87     +[Service]
88     +Type=oneshot
89     +ExecStartPre=/sbin/e-smith/service-status altqmail
90     +ExecStart=/usr/bin/sv u /service/altqmail
91     +ExecStop=/usr/bin/sv stop /service/altqmail
92     +ExecReload=/usr/bin/sv t /service/altqmail
93     +RemainAfterExit=yes
94     +
95     +[Install]
96     +WantedBy=sme-server.target
97     +
98     diff -Nur --no-dereference smeserver-altqmail-0.1.2.old/root/usr/lib/systemd/system/altqmail-smtpd.service smeserver-altqmail-0.1.2/root/usr/lib/systemd/system/altqmail-smtpd.service
99     --- smeserver-altqmail-0.1.2.old/root/usr/lib/systemd/system/altqmail-smtpd.service 1969-12-31 19:00:00.000000000 -0500
100     +++ smeserver-altqmail-0.1.2/root/usr/lib/systemd/system/altqmail-smtpd.service 2023-03-23 22:19:27.855000000 -0400
101     @@ -0,0 +1,16 @@
102     +[Unit]
103     +Description=altqmail-smtpd, message transfer agent
104     +After=network.target
105     +Requires=runit.service
106     +
107     +[Service]
108     +Type=oneshot
109     +ExecStartPre=/sbin/e-smith/service-status altqmail-smtpd
110     +ExecStart=/usr/bin/sv u /service/altqmail-smtpd
111     +ExecStop=/usr/bin/sv stop /service/altqmail-smtpd
112     +ExecReload=/usr/bin/sv t /service/altqmail-smtpd
113     +RemainAfterExit=yes
114     +
115     +[Install]
116     +WantedBy=sme-server.target
117     +
118     diff -Nur --no-dereference smeserver-altqmail-0.1.2.old/root/var/service/altqmail/finish smeserver-altqmail-0.1.2/root/var/service/altqmail/finish
119     --- smeserver-altqmail-0.1.2.old/root/var/service/altqmail/finish 2017-11-19 04:53:47.000000000 -0500
120     +++ smeserver-altqmail-0.1.2/root/var/service/altqmail/finish 2023-03-23 23:19:04.622000000 -0400
121     @@ -1,5 +1,6 @@
122     #!/bin/sh
123    
124     -umount /var/service/altqmail/root/var/qmail/bin
125     +#umount /var/service/altqmail/root/var/qmail/bin
126     +rm -rf /var/service/altqmail/root/var/qmail/bin/*
127     rm -rf root/etc
128     rm -rf root/lib{,64}
129     diff -Nur --no-dereference smeserver-altqmail-0.1.2.old/root/var/service/altqmail/qmail-remote-throttle smeserver-altqmail-0.1.2/root/var/service/altqmail/qmail-remote-throttle
130     --- smeserver-altqmail-0.1.2.old/root/var/service/altqmail/qmail-remote-throttle 1969-12-31 19:00:00.000000000 -0500
131     +++ smeserver-altqmail-0.1.2/root/var/service/altqmail/qmail-remote-throttle 2023-03-23 23:33:43.608000000 -0400
132     @@ -0,0 +1,119 @@
133     +#!/usr/bin/perl
134     +
135     +use Fcntl ':flock';
136     +$QMAIL = "/var/qmail";
137     +$CONTROL = "$QMAIL/control";
138     +
139     +open LOG, ">>", "/tmp/qmail-remote-log";
140     +{ my $ofh = select LOG; $|=1; select $ofh; }
141     +Log("starting");
142     +
143     +$msgs = 0;
144     +$time = 0;
145     +
146     +load_policy();
147     +
148     +
149     +while(1) {
150     + my @last = grep {$_ > time() - $time} read_log();
151     + Log("status " . @last . "/$msgs");
152     +
153     + if (@last >= $msgs) {
154     +# Log("sleeping");
155     + } else {
156     + last;
157     + }
158     +
159     + while (@last >= $msgs) {
160     + my $oldest = $last[0];
161     + my $age = time() - $oldest;
162     + # When will the oldest message expire off the queue?
163     + # The end of the queue is $time seconds ago
164     + # The age of the oldest message is now time() - $oldest
165     + # The oldest message will expire in $time - $age seconds
166     + my $zzz = $time - $age + int(rand(3));
167     + $zzz = 1 if $zzz < 1;
168     +# Log("Sleeping for $zzz secs");
169     + sleep $zzz;
170     + shift @last while @last && $last[0] < time() - $time;
171     + load_policy();
172     + }
173     +}
174     +
175     +append_log(time());
176     +
177     +#if (open F, ">>", "/tmp/qmail-remote-log") {
178     +# print F time(), " @ARGV\n";
179     +#}
180     +Log("sending @ARGV");
181     +exec "/var/qmail/bin/qmail-remote.real", @ARGV;
182     +exit 0;
183     +
184     +
185     +sub fail {
186     + my $msg = shift;
187     + Log("fail: $msg");
188     + print "Z$msg";
189     + exit 0;
190     +}
191     +
192     +my $last_policy_load ;
193     +sub load_policy {
194     + my $POLICY = "$CONTROL/outratelimit";
195     + return if ((stat($POLICY))[9] <= $last_policy_load);
196     + if (open F, "<", $POLICY) {
197     + chomp(my $line = <F>);
198     + ($msgs, $time) = split m{/}, $line;
199     + if (defined $last_policy_load) {
200     + Log("Policy changed to $msgs/$time");
201     + }
202     + $last_policy_load = time();
203     + close F;
204     + }
205     +}
206     +
207     +
208     +sub read_log {
209     + lock_semaphore(LOCK_SH);
210     +
211     + my @last;
212     + if (open(F, "+<", "$CONTROL/outlog")) {
213     + chomp(@last = <F>);
214     + close F;
215     + }
216     +
217     + lock_semaphore(LOCK_UN);
218     +
219     + return @last;
220     +}
221     +
222     +sub append_log {
223     + lock_semaphore(LOCK_EX);
224     +
225     + if (open(F, "+<", "$CONTROL/outlog")) {
226     + my @last = grep {$_ > time() - $time} <F>;
227     + chomp(@last);
228     + truncate F, 0;
229     + seek F, 0, 0;
230     + print F join "\n", @last, @_, "";
231     + close F;
232     + }
233     +
234     + lock_semaphore(LOCK_UN);
235     +}
236     +
237     +
238     +sub lock_semaphore {
239     + if (open SEM, ">", "$CONTROL/qmail-remote-semaphore") {
240     + flock(SEM, $_[0]) or fail("Couldn't lock semaphore: $!");
241     + } else {
242     + fail("Couldn't open semaphore: $!");
243     + }
244     +}
245     +
246     +sub Log {
247     + my @args = @_;
248     + tr/\n//d for @args;
249     + print LOG time(), " $$ @args\n";
250     +}
251     +
252     diff -Nur --no-dereference smeserver-altqmail-0.1.2.old/root/var/service/altqmail/run smeserver-altqmail-0.1.2/root/var/service/altqmail/run
253     --- smeserver-altqmail-0.1.2.old/root/var/service/altqmail/run 2017-11-19 04:53:47.000000000 -0500
254     +++ smeserver-altqmail-0.1.2/root/var/service/altqmail/run 2023-03-23 23:18:46.569000000 -0400
255     @@ -2,7 +2,13 @@
256    
257     exec 2>&1
258    
259     -/bin/mount --bind /var/qmail/bin/ root/var/qmail/bin
260     +#/bin/mount --bind /var/qmail/bin/ root/var/qmail/bin
261     +if [ ! -f root/var/qmail/bin/ ]; then
262     + cp -a /var/qmail/bin/* root/var/qmail/bin/
263     + mv root/var/qmail/bin/qmail-remote root/var/qmail/bin/qmail-remote.real
264     + cp -a qmail-remote-throttle root/var/qmail/bin/qmail-remote
265     +
266     +fi
267    
268     if [ ! -d root/etc ]; then
269     mkdir root/etc
270     @@ -13,13 +19,10 @@
271     fi
272    
273     LIBDIR="lib"
274     -LIBC="2.5"
275     +LIBC="2.17"
276     if [ -d /lib64 ]; then
277     LIBDIR="lib64"
278     fi
279     -if [ -e /$LIBDIR/libc-2.12.so ]; then
280     - LIBC="2.12"
281     -fi
282    
283     if [ ! -d root/$LIBDIR ]; then
284     mkdir root/$LIBDIR
285     @@ -35,6 +38,66 @@
286     ln -s libnss_files-$LIBC.so root/$LIBDIR/libnss_files.so.2
287     cp -a /$LIBDIR/libresolv-$LIBC.so root/$LIBDIR
288     ln -s libresolv-$LIBC.so root/$LIBDIR/libresolv.so.2
289     +
290     + ## added for throttle
291     + # for perl /usr/bin/perl
292     + #cp --parents `ldd BIN_PATH | cut -d " " -f 3` CHROOT_PATH
293     + #cp -a --parents `ldd /usr/bin/perl | cut -d " " -f 3` root/
294     + # wold almost work inside a loop checking if link and cpying also the target
295     + cp -a --parents /usr/$LIBDIR/perl5/CORE/libperl.so root/
296     + cp -a --parents /$LIBDIR/libresolv.so.2 root/
297     + cp -a --parents /$LIBDIR/libnsl.so.1 root/
298     + cp -a --parents /$LIBDIR/libnsl-$LIBC.so root/
299     + cp -a --parents /$LIBDIR/libdl.so.2 root/
300     + cp -a --parents /$LIBDIR/libdl-$LIBC.so root/
301     + cp -a --parents /$LIBDIR/libm.so.6 root/
302     + cp -a --parents /$LIBDIR/libm-$LIBC.so root/
303     + cp -a --parents /$LIBDIR/libcrypt.so.1 root/
304     + cp -a --parents /$LIBDIR/libcrypt-$LIBC.so root/
305     + cp -a --parents /$LIBDIR/libutil.so.1 root/
306     + cp -a --parents /$LIBDIR/libutil-$LIBC.so root/
307     + cp -a --parents /$LIBDIR/libpthread.so.0 root/
308     + cp -a --parents /$LIBDIR/libpthread-$LIBC.so root/
309     + cp -a --parents /lib64/libfreebl3.so root/
310     +
311     + cp -a --parents /usr/$LIBDIR/perl5/Fcntl.pm root/
312     + cp -a --parents /usr/$LIBDIR/perl5/auto/Fcntl root/
313     + cp -a --parents /usr/share/perl5/strict.pm root/
314     + cp -a --parents /usr/share/perl5/AutoLoader.pm root/
315     + cp -a --parents /usr/share/perl5/Carp.pm root/
316     + cp -a --parents /usr/share/perl5/Carp/Heavy.pm root/
317     + cp -a --parents /usr/share/perl5/Exporter.pm root/
318     + cp -a --parents /usr/share/perl5/Exporter root/
319     + cp -a --parents /usr/share/perl5/warnings.pm root/
320     +
321     + cp -a --parents /usr/$LIBDIR/perl5/XSLoader.pm root/
322     + cp -a --parents /usr/$LIBDIR/perl5/DynaLoader.pm root/
323     + cp -a --parents /usr/$LIBDIR/perl5/Config.pm root/
324     + cp -a --parents /usr/$LIBDIR/perl5/Config_heavy.pl root/
325     + cp -a --parents /usr/$LIBDIR/perl5/Config_git.pl root/
326     + cp -a --parents /usr/$LIBDIR/perl5/auto/DynaLoader/dl_findfile.al root/
327     +
328     + # might better somewhere else
329     + cp -a --parents /usr/bin/perl root/
330     + # this one is needed to set locale for perl
331     + cp -a --parent /usr/lib/locale root/
332     +
333     + #bin sh for qmail-qstat
334     + cp -a --parents /bin/sh root/
335     + cp -a --parents /bin/bash root/
336     + cp -a --parents /$LIBDIR/libtinfo.so.5 root/
337     + cp -a --parents /$LIBDIR/libtinfo.so.5.7 root/
338     +
339     + cp -a --parents /usr/bin/wc root/
340     + cp -a --parents /bin/find root/
341     + cp -a --parents /usr/bin/expr root/
342     + cp -a --parents /$LIBDIR/libselinux.so.1 root/
343     + cp -a --parents /$LIBDIR/librt.so.1 root/
344     + cp -a --parents /$LIBDIR/librt-2.12.so root/
345     + cp -a --parents /usr/$LIBDIR/libgmp.so.3 root/
346     + cp -a --parents /usr/$LIBDIR/libgmp.so.3.5.0 root/
347     +
348     +
349     fi
350    
351     chown qmails:qmail root/var/qmail/queue/lock/trigger

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed