Re: auto-generated virtual users table(s) ...

Brock Rozen <[email protected]> Wed, 24 Sep 2003 23:18:09 +0300 (IDT)
Newsgroups gmane.mail.majordomo.majordomo2.devel,gmane.mail.majordomo.devel
Message-ID <[email protected]>
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to [email protected] for more info.

---801174884-648174834-1064434689=:12393
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi,

We use the following crude script to take all of the Majordomo alias and
vut files, and compile them into one file that sendmail uses. That way, we
don't have to update the sendmail configuration when we add a new domain
to Majordomo.

We run this once an hour. Obviously, it can be made to do other things as
well.

In addition, the attached program apparently does what you need it to do
-- so work that in with this, and you have your solution.

---
#!/usr/bin/perl

use File::Listing;

&init;
&delete_files;
&parse_domains; # This routine will create the vut + alias files as well
&copy_files;
&alivut;

sub init {
$mj2domains_dir = "/usr/local/mj2/lists"; # Where Mj2 stores the lists/domains
$tmp_dir = "/etc/mail/mj2";
$sendmail_dir = "/etc/mail"; 	    # Where sendmail stores its files
$newaliases_exec = "/usr/sbin/newaliases"; # The location of the newaliases program
$makemap_exec = "/usr/sbin/makemap";# The location of makemap
$makemap_type = "btree";
$sendmail_vut = "virtusertable.mj"; # The location of the central vut file.
				    # It will be created under $sendmail_dir
$sendmail_aliases = "aliases.mj";   # The location of the central aliases file.
				    # It will be created under $sendmail_dir

### you shouldn't need to change anything below this line
$mj2files_dir = "$mj2domains_dir/ALIASES";
$alias_tmp = "$tmp_dir/mj-alias.new";
$vut_tmp = "$tmp_dir/mj-vut.new";
}

sub parse_domains {
for (parse_dir(`ls -l $mj2domains_dir`)) {
($domain, $type, $size, $mtime, $mode) = @$_;
&sendmail_append unless ($domain eq "ALIASES" ||
			$domain eq "LIB" ||
			$domain eq "QUEUE" ||
			$domain eq "SITE" ||
			$type ne "d");
next;
}
}


sub sendmail_append {
$alias_exec = "cat $mj2files_dir/mj-alias-$domain >> $alias_tmp";
$vut_exec = "cat $mj2files_dir/mj-vut-$domain >> $vut_tmp";
system $alias_exec;
system $vut_exec;
}

sub delete_files {
unlink "$alias_tmp";
unlink "$vut_tmp";
}

sub copy_files {
$alias_cp = "cp $alias_tmp $sendmail_dir/$sendmail_aliases";
$vut_cp = "cp $vut_tmp $sendmail_dir/$sendmail_vut";
system $alias_cp;
system $vut_cp;
}

sub alivut {
$aliases_exec = "$newaliases_exec > /dev/null";
system $aliases_exec;
$vut_exec = "$makemap_exec $makemap_type $sendmail_dir/$sendmail_vut.db < $sendmail_dir/$sendmail_vut";
system $vut_exec;
}

----

Best,

BR

On Wed, 24 Sep 2003 at 11:03, Marc G. Fournier wrote about "auto-generated...":

>
> I've been using the feature in Mj2 that auto-generates the alias and
> virtual tables for postfix when you create a new list, but due to how I
> have postfix setup, I need to append @localhost to all of the entries in
> virtual for it to work before I can 'postmap' the file ...
>
> Is there some way that I can tell majordomo2 to do this when it adds the
> entries?  The major headache is when I upgrade from CVS, and it
> regenerates the whole file ...
>
> Basically, I need to write out:
>
> # VUT entries for pgsql-announce at postgresql.org
> [email protected]              pgsql-announce-postgresql.org
> [email protected]      pgsql-announce-postgresql.org-request
> [email protected]        pgsql-announce-postgresql.org-owner
> [email protected]        owner-pgsql-announce-postgresql.org
> # End VUT entries for pgsql-announce at postgresql.org
>
> As:
>
> # VUT entries for pgsql-announce at postgresql.org
> [email protected]              [email protected]
> [email protected]      [email protected]
> [email protected]        [email protected]
> [email protected]        [email protected]
> # End VUT entries for pgsql-announce at postgresql.org
>

-- 
Brock Rozen                                        [email protected]
---801174884-648174834-1064434689=:12393
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=buildvirtuser
Content-Transfer-Encoding: BASE64
Content-ID: <[email protected]>
Content-Description: 
Content-Disposition: attachment; filename=buildvirtuser

IyEvdXNyL2Jpbi9wZXJsIC13DQoNCiMgQ29weXJpZ2h0IChjKSAxOTk5LTIw
MDIgR3JlZ29yeSBOZWlsIFNoYXBpcm8uICBBbGwgUmlnaHRzIFJlc2VydmVk
Lg0KIyANCiMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQojIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucw0KIyBhcmUgbWV0Og0KIw0KIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodA0KIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQojIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0DQojICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCiMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCiMgMy4gTmVpdGhlciB0aGUgbmFt
ZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1
dG9ycw0KIyAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUNCiMgICAgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQojDQoj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQNCiMgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFDQojIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQoj
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhP
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFDQojIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMDQojIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
DQojIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KIyBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVA0KIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZDQojIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCiMgU1VDSCBEQU1B
R0UuDQoNCiMgJElkOiBidWlsZHZpcnR1c2VyLHYgMS41IDIwMDIvMDIvMDgg
MDg6MTA6NTkgZ3NoYXBpcm8gRXhwICQNCg0KPWhlYWQxIE5BTUUNCg0KYnVp
bGR2aXJ0dXNlciAtIEJ1aWxkIHZpcnR1c2VydGFibGUgc3VwcG9ydCBmcm9t
IGEgZGlyZWN0b3J5IG9mIGZpbGVzDQoNCj1oZWFkMSBTWU5PUFNJUw0KDQog
ICAgYnVpbGR2aXJ0dXNlciBbLWZdDQoNCj1oZWFkMSBERVNDUklQVElPTg0K
DQpidWlsZHZpcnR1c2VyIHdpbGwgYnVpbGQgL2V0Yy9tYWlsL3ZpcnR1c2Vy
dGFibGUuZGIgYW5kIC9ldGMvbWFpbC92aXJ0aG9zdHMNCmJhc2VkIG9uIHRo
ZSBjb250ZW50cyBvZiB0aGUgZGlyZWN0b3J5IC9ldGMvbWFpbC92aXJ0dXNl
cnMvLiAgVGhhdA0KZGlyZWN0b3J5IHNob3VsZCBjb250YWluIG9uZSBmaWxl
IHBlciB2aXJ0dWFsIGRvbWFpbiB3aXRoIHRoZSBmaWxlbmFtZQ0KbWF0Y2hp
bmcgdGhlIHZpcnR1YWwgZG9tYWluIG5hbWUgYW5kIHRoZSBjb250ZW50cyBj
b250YWluaW5nIGEgbGlzdCBvZg0KdXNlcm5hbWVzIG9uIHRoZSBsZWZ0IGFu
ZCB0aGUgYWN0dWFsIGFkZHJlc3MgZm9yIHRoYXQgdXNlcm5hbWUgb24gdGhl
DQpyaWdodC4gIEFuIGVtcHR5IGxlZnQgY29sdW1uIHRyYW5zbGF0ZXMgdG8g
dGhlIGRlZmF1bHQgZm9yIHRoYXQgZG9tYWluLg0KQmxhbmsgbGluZXMgYW5k
IGxpbmVzIGJlZ2lubmluZyB3aXRoICcjJyBhcmUgaWdub3JlZC4gIE9jY3Vy
cmVuY2VzIG9mDQokRE9NQUlOIGluIHRoZSBmaWxlIGFyZSByZXBsYWNlZCBi
eSB0aGUgY3VycmVudCBkb21haW4gYmVpbmcgcHJvY2Vzc2VkLg0KT2NjdXJy
ZW5jZXMgb2YgJExIUyBpbiB0aGUgcmlnaHQgaGFuZCBzaWRlIGFyZSByZXBs
YWNlZCBieSB0aGUgYWRkcmVzcyBvbg0KdGhlIGxlZnQgaGFuZCBzaWRlLg0K
DQpUaGUgLWYgb3B0aW9uIGZvcmNlcyB0aGUgZGF0YWJhc2UgdG8gYmUgcmVi
dWlsdCByZWdhcmRsZXNzIG9mIHdoZXRoZXINCmFueSBmaWxlIGNoYW5nZXMg
d2VyZSBkZXRlY3RlZC4NCg0KPWhlYWQxIENPTkZJR1VSQVRJT04NCg0KSW4g
b3JkZXIgdG8gZnVuY3Rpb24gcHJvcGVybHksIHNlbmRtYWlsIG11c3QgYmUg
Y29uZmlndXJlZCB0byB1c2UgdGhlc2UNCmZpbGVzIHdpdGg6DQoNCglGRUFU
VVJFKGB2aXJ0dXNlcnRhYmxlJylkbmwNCglWSVJUVVNFUl9ET01BSU5fRklM
RShgL2V0Yy9tYWlsL3ZpcnRob3N0cycpZG5sDQoNCklmIGEgbmV3IGRvbWFp
biBpcyBhZGRlZCAoaS5lLiwgYnkgYWRkaW5nIGEgbmV3IGZpbGUgdG8NCi9l
dGMvbWFpbC92aXJ0dXNlcnMvKSwgdGhlIHNlbmRtYWlsIGRhZW1vbiBtdXN0
IGJlIHJlc3RhcnRlZCBmb3IgdGhlIGNoYW5nZQ0KdG8gdGFrZSBhZmZlY3Qu
DQoNCj1oZWFkMSBFWEFNUExFUw0KDQpIZXJlIGFyZSBzb21lIGV4YW1wbGUg
ZmlsZXMgZnJvbSB0aGUgL2V0Yy9tYWlsL3ZpcnR1c2Vycy8gZGlyZWN0b3J5
Og0KDQo9aGVhZDIgL2V0Yy9tYWlsL3ZpcnR1c2Vycy9ic2R1bml4Lm9yZzoN
Cg0KICMgU2VydmljZXMNCiBNQUlMRVItREFFTU9OCWdzaGFwaXJvK2JvdW5j
ZS4kRE9NQUlOQGdzaGFwaXJvLm5ldA0KIHBvc3RtYXN0ZXIJZ3NoYXBpcm8r
JExIUy4kRE9NQUlOQGdzaGFwaXJvLm5ldA0KIHdlYm1hc3Rlcglnc2hhcGly
byskTEhTLiRET01BSU5AZ3NoYXBpcm8ubmV0DQogDQogIyBEZWZhdWx0cw0K
IAkJZXJyb3I6bm91c2VyIE5vIHN1Y2ggdXNlcg0KIA0KICMgVXNlcnMNCiBn
c2hhcGlybwlnc2hhcGlybyskRE9NQUlOQGdzaGFwaXJvLm5ldA0KIGJvYgkJ
cm9iZXJ0QHNtdHAub3JnDQoNCj1oZWFkMiAvZXRjL21haWwvdmlydHVzZXJz
L3NtdHAub3JnOg0KDQogIyBEZWZhdWx0cw0KIAkJZ3NoYXBpcm8rJERPTUFJ
TkBnc2hhcGlyby5uZXQNCiANCiAjIFVzZXJzDQogam9obgkJam9obkB3b29r
aWUub3JnDQogbmFuY3kJCW5AbWlsdGVyLmNvbQ0KDQo9aGVhZDEgQVVUSE9S
DQoNCkdyZWdvcnkgTmVpbCBTaGFwaXJvIEU8bHQ+Rjxnc2hhcGlyb0Bnc2hh
cGlyby5uZXQ+RTxndD4NCg0KPWN1dA0KDQp1c2Ugc3RyaWN0Ow0KdXNlIEdl
dG9wdDo6U3RkOw0KDQpteSAkbWFrZW1hcCA9ICIvdXNyL3NiaW4vbWFrZW1h
cCI7DQpteSAkZGJ0eXBlID0gImhhc2giOw0KbXkgJG1haWxkaXIgPSAiL2V0
Yy9tYWlsIjsNCm15ICR2aXJ0aG9zdHMgPSAiJG1haWxkaXIvdmlydGhvc3Rz
IjsNCm15ICRuZXd2aXJ0aG9zdHMgPSAiJG1haWxkaXIvdmlydGhvc3RzLm5l
dyI7DQpteSAkdmlydHMgPSAiJG1haWxkaXIvdmlydHVzZXJzIjsNCm15ICRu
ZXd2aXJ0ID0gIiRtYWlsZGlyL3ZpcnR1c2VydGFibGUubmV3LmRiIjsNCm15
ICR2aXJ0ID0gIiRtYWlsZGlyL3ZpcnR1c2VydGFibGUuZGIiOw0KbXkgJXZp
cnQgPSAoKTsNCm15ICRuZXdlc3QgPSAwOw0KbXkgKCRsaHMsICRkb21haW4s
ICRrZXksICR2YWx1ZSk7DQpteSAkb3B0cyA9IHt9Ow0KDQpnZXRvcHRzKCdm
JywgJG9wdHMpIHx8IGRpZSAiVXNhZ2U6ICQwIFstZl1cbiI7DQoNCm9wZW5k
aXIoVklSVFMsICR2aXJ0cykgfHwgZGllICJDb3VsZCBub3Qgb3BlbiBkaXJl
Y3RvcnkgJHZpcnRzOiAkIVxuIjsNCm15IEB2aXJ0cyA9IGdyZXAgeyAtZiAi
JHZpcnRzLyRfIiB9IHJlYWRkaXIoVklSVFMpOw0KY2xvc2VkaXIoVklSVFMp
IHx8IGRpZSAiQ291bGQgbm90IGNsb3NlIGRpcmVjdG9yeSAkdmlydHM6ICQh
XG4iOw0KDQpmb3JlYWNoICRkb21haW4gKEB2aXJ0cykNCnsNCglvcGVuKERP
TUFJTiwgIiR2aXJ0cy8kZG9tYWluIikgfHwgZGllICJDb3VsZCBub3Qgb3Bl
biBmaWxlICR2aXJ0cy8kZG9tYWluOiAkIVxuIjsNCglteSAkbGluZSA9IDA7
DQoJbXkgJG10aW1lID0gKHN0YXQoRE9NQUlOKSlbOV0gfHwgMDsNCglpZiAo
JG10aW1lID4gJG5ld2VzdCkNCgl7DQoJCSRuZXdlc3QgPSAkbXRpbWU7DQoJ
fQ0KTElORToJd2hpbGUgKDxET01BSU4+KQ0KCXsNCgkJY2hvbXA7DQoJCSRs
aW5lKys7DQoJCW5leHQgTElORSBpZiAvXiMvOw0KCQluZXh0IExJTkUgaWYg
L14kLzsNCgkJaWYgKG0vXihbXlx0IF0qKVtcdCBdKyguKikkLykNCgkJew0K
CQkJaWYgKGRlZmluZWQoJDEpKQ0KCQkJew0KCQkJCSRsaHMgPSAiJDEiOw0K
CQkJCSRrZXkgPSAiJDFcQCRkb21haW4iOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJ
ew0KCQkJCSRsaHMgPSAiIjsNCgkJCQkka2V5ID0gIlxAJGRvbWFpbiI7DQoJ
CQl9DQoJCQkkdmFsdWUgPSAkMjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCWRp
ZSAiQm9ndXMgbGluZSAkbGluZSBpbiAkdmlydHMvJGRvbWFpblxuIjsNCgkJ
fQ0KDQoJCSMgVmFyaWFibGUgc3Vic2l0dXRpb24NCgkJJGtleSA9fiBzL1wk
RE9NQUlOLyRkb21haW4vZzsNCgkJJHZhbHVlID1+IHMvXCRET01BSU4vJGRv
bWFpbi9nOw0KCQkkdmFsdWUgPX4gcy9cJExIUy8kbGhzL2c7DQoJCSR2aXJ0
eyRrZXl9ID0gJHZhbHVlOw0KCX0NCgljbG9zZShET01BSU4pIHx8IGRpZSAi
Q291bGQgbm90IGNsb3NlICR2aXJ0cy8kZG9tYWluOiAkIVxuIjsNCn0NCg0K
bXkgJHZpcnRtdGltZSA9IChzdGF0KCR2aXJ0KSlbOV0gfHwgMDsNCmlmICgk
b3B0cy0+e2Z9IHx8ICR2aXJ0bXRpbWUgPCAkbmV3ZXN0KQ0Kew0KCXByaW50
IFNURE9VVCAiUmVidWlsZGluZyAkdmlydFxuIjsNCiMgbG9nZ2VyIC1zIC10
ICR7cHJvZ30gLXAgbWFpbC5pbmZvICJSZWJ1aWxkaW5nICR7YmFzZWRpcn0v
dmlydHVzZXJ0YWJsZSINCglvcGVuKE1BS0VNQVAsICJ8JG1ha2VtYXAgJGRi
dHlwZSAkbmV3dmlydCIpIHx8IGRpZSAiQ291bGQgbm90IHN0YXJ0IG1ha2Vt
YXA6ICQhXG4iOw0KCWZvcmVhY2ggJGtleSAoa2V5cyAldmlydCkNCgl7DQoJ
CXByaW50IE1BS0VNQVAgIiRrZXlcdFx0JHZpcnR7JGtleX1cbiI7DQoJfQ0K
CWNsb3NlKE1BS0VNQVApIHx8IGRpZSAiQ291bGQgbm90IGNsb3NlIG1ha2Vt
YXAgKCQ/KTogJCFcbiI7DQoJcmVuYW1lKCRuZXd2aXJ0LCAkdmlydCkgfHwg
ZGllICJDb3VsZCBub3QgcmVuYW1lICRuZXd2aXJ0IHRvICR2aXJ0OiAkIVxu
IjsNCg0KCW9wZW4oVklSVEhPU1QsICI+JG5ld3ZpcnRob3N0cyIpIHx8IGRp
ZSAiQ291bGQgbm90IG9wZW4gZmlsZSAkbmV3dmlydGhvc3RzOiAkIVxuIjsN
Cglmb3JlYWNoICRkb21haW4gKHNvcnQgQHZpcnRzKQ0KCXsNCgkJcHJpbnQg
VklSVEhPU1QgIiRkb21haW5cbiI7DQoJfQ0KCWNsb3NlKFZJUlRIT1NUKSB8
fCBkaWUgIkNvdWxkIG5vdCBjbG9zZSAkbmV3dmlydGhvc3RzOiAkIVxuIjsN
CglyZW5hbWUoJG5ld3ZpcnRob3N0cywgJHZpcnRob3N0cykgfHwgZGllICJD
b3VsZCBub3QgcmVuYW1lICRuZXd2aXJ0aG9zdHMgdG8gJHZpcnRob3N0czog
JCFcbiI7DQp9DQpleGl0IDA7DQo=

---801174884-648174834-1064434689=:12393--