さっき、SpamAssassin用のMakefileの話を書いたので、こっちも書いておく。(書いたかもしれないが覚えていない)
当然、Geminiさんを頼りっきりにして作られたものである。(^_^;;
要はpostfix配下の設定ファイルを更新後、sudo makeでdbを作ったり、postfixを再起動させたり自動化しようってもの。
できるだけ手を抜きたいがために頑張っているのだ。
|
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 |
BASE_PATH = /opt/local/var/spool/postfix FILES = maildrop/.turd_postfix all: main.cf.bak master.cf.bak access.db aliases.db header_checks.sample transport.db virtual.db virtual_account.db reject_cidr @for f in $(FILES); do \ rm -f $(BASE_PATH)/$$f; \ done postfix reload # Note 1: commands are specified after a TAB character. # Note 2: use postalias(1) for local aliases, postmap(1) for the rest. main.cf.bak: main.cf postfix check cp main.cf main.cf.bak master.cf.bak: master.cf postfix check cp master.cf master.cf.bak access.db: access postmap access aliases.db: aliases postalias aliases transport.db: transport postmap transport virtual.db: virtual postmap virtual virtual_account.db: virtual_account postmap virtual_account header_checks.sample: header_checks touch header_checks.sample reject_cidr: blocked_ips.txt /opt/local/bin/perl mk_reject_cidr.pl < blocked_ips.txt > reject_cidr cat htaccess.header > /Volumes/Works/Library/www/html/.htaccess /opt/local/bin/perl mk_htaccess.pl < blocked_ips.txt >> /Volumes/Works/Library/www/html/.htaccess chown _www:_www /Volumes/Works/Library/www/html/.htaccess |
main.cfとmaaster.cfはミスるとpostfixがコケるのでチェックを入れているが、後のは大したことはしていない。
reject_cidirだけはapacheにも有効だろうと.htaccessにも反映させることにしている。
ここで使っているscriptも単純なものだ。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/opt/local/bin/perl use strict; use warnings; use utf8; print "# reject_cidr\n#\n\n"; while (my $line = <STDIN>) { chomp ($line); if ( $line =~ /^[0-9]+/ ) { print "$line\tREJECT\n"; } |
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/opt/local/bin/perl use strict; use warnings; use utf8; print "<RequireAll>\n"; print "Require all granted\n"; while (my $line = <STDIN>) { chomp ($line); if ( $line =~ /^[0-9]+/ ) { print "Require not ip $line\n"; } } print "</RequireAll>\n"; |
二つともたったコレだけである。

