Postfixのキューから特定メールを一括削除

ここを参考に、自分用にまとめました。

# キュー中のメール情報を確認
$ mailq | tail -n '+2'  | grep -v '^ *(' | awk 'BEGIN { RS = "" } { print $1 }' # 全メールのキューID、$7:送信元アドレス、$8:送信先アドレス
$ mailq | tail -n '+2'  | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ( $7 == "送信元アドレス" ) print $1 }' #特定の送信元アドレスのメール
$ mailq | tail -n '+2'  | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ( $8 == "送信先アドレス" ) print $1 }' #特定の送信先アドレスのメール

# キュー中の特定アドレスのメールを一括削除
$ mailq | tail -n '+2'  | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ( $7 == "送信元アドレス" ) print $1 }'| tr -d '*!' | sudo postsuper -d - # 特定の送信元アドレスのメールを一括削除
$ mailq | tail -n '+2'  | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ( $8 == "送信先アドレス" ) print $1 }'| tr -d '*!' | sudo postsuper -d - # 特定の送信先アドレスのメールを一括削除
$ mailq | tail -n '+2'  | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ( $7 == "送信元アドレス" && $8 == "送信先アドレス" && $9 == "" ) print $1 }'| tr -d '*!' | sudo postsuper -d - # 特定の送信元/送信先アドレスのメールを一括削除

PowerShellのロガーのテンプレートを作った

$LOG_DIR = [Regex]::Replace($MyInvocation.MyCommand.Path,"(^.+)(\\.*$)","`$1") + "\log"
if (-not (Test-Path($LOG_DIR))) { New-Item -ItemType Directory -Path $LOG_DIR }
$LOG = $LOG_DIR + "\" + (Get-Date).ToString("yyyyMMdd") + ".log"
function logger ($msg) {
    $date = Get-Date -Format "[yyyy/MM/dd HH:mm:ss]"
    "${date} ${msg}" >> $LOG
}

$hostname = hostname
logger ("My name is {0}" -f $hostname)

PowerShell上で実行した最後に実行したDOSコマンドの実行結果を$LASTEXITCODEで取得

$SERVER = "\\192.168.0.100\nas"
$PSSS = "password"
$USER = "user_name"
net use $SERVER $PASS /user:$USER
if ($LASTEXITCODE -ne 0) {
    echo "Failed : net use '${SERVER}' '${PASS}' /user:'${USER}'"
}

注意

ただし気をつけなきゃいけんのは、$LASTEXITCODEに格納されるのはDOSコマンドの実行結果であって、PowerShellコマンドの結果は格納されない。

また”$LASTEXITCODE”ではなく”$?”なら”True/Flase”で返してくれる。

参考

machine.configとweb.configでプロバイダーが競合

現象

  • あるとき”C:\Windows\Microsoft.NET\Framework\バージョン\CONFIG\machin.config”に元々定義されていた以下プロバイダーの定義と、web.configの定義の競合を確認
    <!-- C:\Windows\Microsoft.NET\Framework\バージョン\CONFIG\machin.config -->
    <siteMap ...">
        <providers>
            <add name="Sample1Provider" .../>
        </providers>
    </siteMap>
    
    <!-- ~\web.config -->
    <siteMap ...">
        <providers>
            <add name="Sample2Provider" .../>
        </providers>
    </siteMap>
    

対策

  • web.configにてMySqlSiteMapProviderをremoveしてから、XmlSiteMapProviderをaddすることで構成エラーが解消することを確認
    <!-- ~\web.config -->
    <siteMap ...">
        <providers>
            <remove name="Sample1Provider"/>
            <add name="Sample2Provider" .../>
        </providers>
    </siteMap>
    

WordPressの手動アップデート

参考

  • ここを参考にしました。自分用に整理。

手順

  1. 管理画面にてプラグインを全て停止

  2. WordPressがインストールされているディレクトリをバックアップ

  3. 公式から最新のZIPをダウンロードし適当な場所に展開

  4. 以下ファイル/ディレクトリを残して、インストール先から削除

    • “wp-content”
    • “wp-config.php”
    • “.htaccess” ※あれば
    • “wp-images”※あれば
  5. 以下をダウロードしたファイルから、インストール先に設置
    • “wp-admin”
    • “wp-includes”
    • “wp-config-sample.php”以外の全ファイル
  6. 以下をインストール先から削除
    • “wp-content\languages”
    • “wp-content\cache” ※あれば
  7. 以下をダウロードしたファイルから、インストール先に設置
    • “wp-content\languages”
  8. ブラウザから顧客サイトのWoredPressのダッシュボードにアクセスし、ページの案内に従ってデータベースを更新