Postfix Alias
Postfixのaliasを設定するには通常/etc/aliasesに書けばいいんですが、宛先に設定するアドレスはサーバ上の別ファイルで管理されており、どうしたもんかと悩んでました。
- 宛先ファイルが更新されたら、/etc/aliasesを手動で編集 → 忘れそう&面倒
- 宛先ファイルが更新されたら、sedか何かで/etc/aliasesを置換 → ミスるとファイル壊しそう
- メールが飛んで来たら、パイプからperl起動し、perlから宛先ファイル読む → 送信処理書くのやだ
どれもイマイチな案だと思って調べたところ、aliasは複数ファイル設定できるじゃないか!
alias_maps = hash:/etc/aliases, hash:/etc/aliases.warnings alias_database = hash:/etc/aliases, hash:/etc/aliases.warnings
ということで、新たに/etc/aliases.warningsというファイルをalias_mapsとalias_databaseに設定し、ファイル更新したら以下のスクリプト叩くことにした。
my $target = 'warnings'; my @mails = @CONF::MAILS; my $val = join q{,}, @mails; my $path = "/etc/aliases.$target"; open my $out, '>', $path or die $!; print {$out} "$target: $val"; close $out; my $cmd = "/usr/sbin/postalias $path"; print "$cmd\n"; system($cmd) == 0 or die;
スクリプト叩かなきゃいけないけど、それくらいはやむなし。