Landscape トップページ | < 前の日 2003-12-14 2003-12-15 次の日 2003-12-16 >

Landscape - エンジニアのメモ 2003-12-15

procmail が sendmail にメールを渡すときにエラー


* procmail が sendmail にメールを渡すときにエラー

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Linux]

procmail が sendmail にメールを渡すときに、
procmail: Error while writing to "/usr/sbin/sendmail"
というエラーが出ることがある。
エラーになるメールを調べてみると、以下の共通点があることがわかった。To: には数百人の名前が指定されており、サイズも 50KB を超える。また、E-Mail アドレスにマルチバイト文字列を使っているユーザがいる。どちらが原因になっているかはわからないので、まずはマルチバイト文字を削除してから sendmail に渡すようフィルタを書いてみることにする。

- 対象となる文字列

<Unknown_Internet_Mail_Address@10.3.50.200>,
"=?ISO-2022-JP?B?GyRCQX4kJCQiJHMkQSQvJDckZyQmGyhC?="
<マルチバイトの文字列>,
これを以下のように置換する。
<Unknown_Internet_Mail_Address@10.3.50.200>,
"=?ISO-2022-JP?B?GyRCQX4kJCQiJHMkQSQvJDckZyQmGyhC?="
<NGSTRING_nn_NGSTRING>,

- スクリプトを書いて試してみる

久々の one liner だ。ちょっとマッチする範囲が大きすぎるかもしれない。
|perl -pe 's/<(\W+)>/"<NGSTRING_" . unpack("H2", $1) . "_NGSTRING>"/eg;'
上記フィルタを .procmailrc に入れて試してみたが効果がない。やはり To: の数が多すぎるのか。では、ヘッダが大きすぎるとき To: を削除するフィルタを書くとしよう。
|perl -0777 -pe 's/(To: .*?),.*?(?=^\w)/$1\n/sm;'
procmail は一通ごとにフィルタを起動するので、正規表現の g オプションは付けない。

上記フィルタを組み込んだところ、正常動作するようになった。フィルタ発動の閾値は、ヘッダが 8192 バイトを超えた場合とした。
PATH=/usr/bin:/usr/sbin:/usr/ucb:/usr/local/bin:/pub/bin:.
LOGFILE=$HOME/log/procmail.log

# ヘッダだけを対象にしたフィルタ
:0 fhH
* > 8192
|perl -0777 -pe 's/^(To: .*?),.*?(?=^\w)/$1\n/sm;'
# |perl -pe 's/<(\W+)>/"<NGSTRING_" . unpack("H2", $1) . "_NGSTRING>"/eg;'

:0
! saitou-hiroaki@example.co.jp


すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。