- PR -

postfixとPerlのsendmail

1
投稿者投稿内容
numao
常連さん
会議室デビュー日: 2007/01/28
投稿数: 28
お住まい・勤務地: 東京
投稿日時: 2007-01-28 16:14
 はじめまして。おさむと申します。

 先日よりPostfixでメールサーバーを作りました。シェルのmailコマンドなどは通常通り使えまして、届いたメールはrootになっております。
 PerlでもってCGIを使う際にsendmailを使うわけですが、ここでちょっと僕には解決できない問題が生じています。
 Postfixでのドメインは(例)example.com、メールアドレスは(例)example@example.comという風になっていて設定しています。使っているのは、このメールアドレスのみです。つまりexampleユーザのみでメールサーバーを使っています。(バーチャルなメールアドレスは設定していません。)
 sendmailを使ってPerlスクリプトを書いた際に、

$sendmail ="/usr/sbin/sendmail"; # sendmailパス
$message = <<END_OF_MAIL;
To: you@you.com
Cc: we@we.com

お名前
おさむおさむ

届いてますか
END_OF_MAIL

open (SENDMAIL, "| $sendmail -t -oi");
print SENDMAIL $message;
close (SENDMAIL);

と書いて実行してもメールが送信されません。
しばらくしてから、Undelivered Mail Returned to Senderというタイトルで
以下のようなメールが来ます。

This is the Postfix program at host example.example.com.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to <postmaster>

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

The Postfix program

<you.you.com@example.com> (expanded from <you.you.com>):
unknown user: "you.you.com"

<we.we.com@example.com> (expanded from <we.we.com>): unknown
user: "we.we.com"


you@you.comに送信しようとしたメールが、you.you.com@example.comになってしまっているようです。postfixの設定で、どこかに自動的に@マーク以下を補填するように設定しているのかもしれません。もしわかる方がいらしたら、おしえてください。
また、sendmailを使う際に指定したメールアドレスに送信する方法(例えば、'シングルウォートで囲めば'@マーク以下が補填されない…とか、それに特化したオプションの指定など…そのようなことがわかれば幸いです。


[ メッセージ編集済み 編集者: numao 編集日時 2007-04-16 15:17 ]
numao
常連さん
会議室デビュー日: 2007/01/28
投稿数: 28
お住まい・勤務地: 東京
投稿日時: 2007-01-28 16:22
[追伸]
GNOME端末からのコマンドでもって、sendmailを使うと上記のような現象は生じません。

# sendmail you@you.com
From: example@example.com
To: you@you.com
Cc: we@we.com

届いてますか

.
# (元に戻る)

という単純なsendmailです。勿論オプションなどの設定をしてもきちんと送信されています。
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2007-01-28 19:15
こんばんは。

直接 Postfix の仕様の話ではありませんが。
perl でヒアドキュメントを扱う際って、アットマークは配列として認識されませんでしたっけ?
エスケープシーケンス挟んでみてはどうでしょうか?
#実際は前もってメールアドレスを変数に格納していて、ヒアドキュメント中では、
 変数記載していたら的はずれです。ごめんなさい。

あと、試せるのであれば、ヘッダ記載オンリー(-t オプション)は一旦止めて、
普通にコマンド引数に、まずは送信者だけ指定して送信できるかの確認ですかね。
numao
常連さん
会議室デビュー日: 2007/01/28
投稿数: 28
お住まい・勤務地: 東京
投稿日時: 2007-01-28 21:03
 あるかなさん、早速の返信ありがとうございます。
全くその通りでした。もの凄い単純なミスをしてしまいました。
 おっしゃる通り、@が配列として認識されていました。エスケープしたところ正常に起動しました。また、すべての無駄な要素を省いて、sendmail xxxx@xxxxx.comのように最もシンプルに送信もできました。
 今日一日このことで悶々としておりましたので、とても爽快です。ありがとうございました!!
1

スキルアップ/キャリアアップ(JOB@IT)