空メール用にメールサーバ(postfix)をさくらVPSに立てる

2011/09/15

携帯からの空メールや、添付写真送信等の用途でのメールサーバを立てていきます。
主にこちらを参考にしています。(メールサーバー構築(Postfix+Dovecot)
いつもお世話になっております!

postfixのインストール

仮にmail.server.com というhost名で立てる想定で進めます。

# yum -y install postfix

設定ファイルを修正

# vi /etc/postfix/main.cf

追加(自FQDN名を指定)します

myhostname = mail.server.com

追加(自ドメイン名を指定)

mydomain = server.com

追加(ローカルからのメール送信時の送信元メールアドレス@以降にドメイン名を付加)

myorigin = $mydomain

変更(外部からのメール受信を許可)

inet_interfaces = all

変更(自ドメイン宛メールを受信できるようにする)

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

追加(メールサーバーソフト名の隠蔽化)

smtpd_banner = $myhostname ESMTP unknown

以下を最終行へ追加(受信メールサイズを10MBに制限)

message_size_limit = 10485760

参考にしているリンク先にあるような、SMTP-authやメールボックスは不要と考え、省いています。

Postfix起動

sendmail停止し、

# /etc/rc.d/init.d/sendmail stop

自動起動も停止しておきます。

# chkconfig sendmail off

システムで使用するメールサーバー機能をsendmailからPostfixに切替えます。
2をいれてEnterします。

# alternatives –config mta
There are 2 programs which provide ‘mta’.
Selection Command
———————————————–
*+ 1 /usr/sbin/sendmail.sendmail
2 /usr/sbin/sendmail.postfix
Enter to keep the current selection[+], or type selection number: 2

postfix起動します。

# /etc/rc.d/init.d/postfix start

自動起動も設定します。

# chkconfig postfix on

ポートの確認

まず、ポート25番の確認してみます。手元のmacからtelnetしてみます。

$ telnet mail.server.com 25
Trying xxx.xxx.xxx.xxx…
telnet: connect to address xxx.xxx.xxx.xxx: Operation timed out
telnet: Unable to connect to remote host

しばらく反応がなかったのですが、結局接続できませんでした。
理由は、ポートが空いてなかったためです。そこで、25番ポートをあけます。

# vi /etc/sysconfig/iptables

許可一覧に25番ポートを加えます。

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 25 -j ACCEPT

変更を反映させます。

# /etc/init.d/iptables restart

再び確認します。

$ telnet mail.server.com 25
Trying xxx.xxx.xxx.xxx…
Connected to mail.server.com.
Escape character is ‘^]’.
220 mail.server.com ESMTP unknown

お、反応ありました。無事ポートの解放ができました。

メールエイリアス変更

test_acというアカウントを想定します。(メールアドレスは test_ac@mail.server.com となる。「@」は半角に読み替えてください。)
まずはユーザ作成。ログイン不要オプションを指定します。

# useradd -s /sbin/nologin -M test_ac

つづいて、設定変更します。

# vi /etc/aliases

まずはエイリアスの設定ですが、動作確認からしてみます。

test_ac:”|date >> /tmp/a.txt”

変更内容を反映

# postalias /etc/aliases

メール送信確認。(「@」は全角にしてます)

# echo 123 | mail -s test_subject test_ac@mail.server.com

動作確認

# cat /tmp/a.txt

空メール返信スクリプト設定

ここまできたら、目的の返信スクリプト(例えばphp)で動作確認してみます。
さきほどと同じ要領で、エイリアスを設定します。

test_ac:”|/usr/bin/php /path/to/kara_mail_script.php 1>/path/to/1.log 2>/path/to/2.log”

ログも書き出しておくと、エラー時等の調査に役立ちます。
これで完了です。test_ac@mail.server.com(「@」は半角に読み替えてください) にメールを送って確認してみましょう。

動作しない場合

/var/log/maillog にログが書き出されますので確認します。例えば以下のようなエラーを確認した場合、

Command output: Could not open input file

権限でのエラーの可能性がありますので、実行するphpや書き出すログファイル、またはそのディレクトリの権限を確認しましょう。

参考

こちらがすごくシンプルで参考になりました。
linux+postfixによる空メール設定手順

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です