Postfixのメール転送を任意のタイミングで中止したい。

何か良いお知恵を拝借できればと存じます。実際に稼働出来た回答に、全ポイントをお支払いします。回答の早さでは無く正確性を重視させて頂きます。

社員が退職した日の翌0時に自動的に転送処理を無効にし、担当者に処理完了メールを送りたいと考えています。退職予定の事実と退職予定日はあらかじめ分かっています。

時間になったらvirtualに記載されている特定アカウントの行を見つけ出し、その行をコメントアウトするシェルスクリプトを組んでおきcronで予定日に実行するという方法を考えたのですが、他に良い方法があればこだわりません。最後の段にvirtualの例を記載してあります。bar_usersさんが退職される場合、3行目のみコメントアウトしたいです。1行目にもbar_usersさんが転送先として指定されていますが、この行はヒットさせたくありません。

OSバージョン:CentOS Linux release 7.2.1511 (Core)
使用シェル:/bin/bash
使用SMTPサービス:Redirecting to /bin/systemctl status postfix.service

/etc/postfix/virtual
alluser@hoge.com foo_users@hoge.com, bar_users@hoge.com
#foo_users@hoge.com foo_users@domino.hoge.com
bar_users@hoge.com bar_users@domino.hoge.com

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2018/12/21 19:00:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:ISONOnamihei

例は挙げましたが、恥ずかしながら実装の仕方が分かりません。他の方法でも構いませんがその場合は実装方法もご教示下さい。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

質問で書かれている範囲をシェルスクリプトにしてみました。

#! /bin/sh

ID=bar_users
TARGET=/etc/postfix/virtual

cat $TARGET | awk '
$1 ~ /^'$ID'@/ {
    print "#" $0
    continue
}
{
    print $0
}
' > $TARGET.new

mv $TARGET $TARGET.bak
mv $TARGET.new $TARGET

先頭の方に書いてある、変数 ID に定義された利用者を、変数 TARGET に定義されたファイルから探して、該当行をコメントアウトします。
コメントアウトする対象かどうかは、空白またはタブで区切られたひとつ目を対象にして、ID の内容で始まって、それに続いて @ が記載されているかどうかで判定しています。
一回分だけ、ファイルの末尾を .bak にしたファイルで元のファイルを残すようにしています。

id:ISONOnamihei

ありがとうございます。
自動でシェルを走らせることと、担当者にメール通知するという部分についても実装いただけるでしょうか。
お恥ずかしい話ですがその部分についてもわからないのです。ポイントが足らないようなら、追加で簡単な質問をしてそちらで追加ポイントのお支払いも可能です。

2018/12/17 18:02:12

その他の回答1件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154ここでベストアンサー

質問で書かれている範囲をシェルスクリプトにしてみました。

#! /bin/sh

ID=bar_users
TARGET=/etc/postfix/virtual

cat $TARGET | awk '
$1 ~ /^'$ID'@/ {
    print "#" $0
    continue
}
{
    print $0
}
' > $TARGET.new

mv $TARGET $TARGET.bak
mv $TARGET.new $TARGET

先頭の方に書いてある、変数 ID に定義された利用者を、変数 TARGET に定義されたファイルから探して、該当行をコメントアウトします。
コメントアウトする対象かどうかは、空白またはタブで区切られたひとつ目を対象にして、ID の内容で始まって、それに続いて @ が記載されているかどうかで判定しています。
一回分だけ、ファイルの末尾を .bak にしたファイルで元のファイルを残すようにしています。

id:ISONOnamihei

ありがとうございます。
自動でシェルを走らせることと、担当者にメール通知するという部分についても実装いただけるでしょうか。
お恥ずかしい話ですがその部分についてもわからないのです。ポイントが足らないようなら、追加で簡単な質問をしてそちらで追加ポイントのお支払いも可能です。

2018/12/17 18:02:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません