OpenSMTPDとは
OpenSMTPDはOpenBSDプロジェクトのうちの一部として開発されているSMTPデー モンで、OpenBSDの標準システムに含まれており、またLinux等への移植性も確 保されている。
今回は、Arch Linux上のOpenSMTPDを用いて自宅ローカルネットワークからの メールをGmailのSMTPサーバを経由して送信できるようにする。
OpenSMTPDのインストール
ArchLinuxのOpenSMTPDパッケージはAURにあるので、yaourtを用いてビルドし インストールする。特にPKGBUILDの編集などは必要ないようだ。
$ yaourt -S opensmtpd
インストールされる全ファイルの一覧は以下の通りである。軽量・安全・簡単を 売りにしているだけあって、ファイル数は少なく抑えられている。
[miku@test mail]$ yaourt -Ql opensmtpd opensmtpd /etc/ opensmtpd /etc/mail/ opensmtpd /etc/mail/smtpd.conf opensmtpd /etc/rc.d/ opensmtpd /etc/rc.d/smtpd opensmtpd /usr/ opensmtpd /usr/bin/ opensmtpd /usr/bin/mailq opensmtpd /usr/bin/newaliases opensmtpd /usr/lib/ opensmtpd /usr/lib/systemd/ opensmtpd /usr/lib/systemd/system/ opensmtpd /usr/lib/systemd/system/smtpd.service opensmtpd /usr/libexec/ opensmtpd /usr/libexec/mail.local opensmtpd /usr/libexec/opensmtpd-portable/ opensmtpd /usr/libexec/opensmtpd-portable/makemap opensmtpd /usr/sbin/ opensmtpd /usr/sbin/makemap opensmtpd /usr/sbin/smtpctl opensmtpd /usr/sbin/smtpd opensmtpd /usr/share/ opensmtpd /usr/share/man/ opensmtpd /usr/share/man/man5/ opensmtpd /usr/share/man/man5/smtpd.conf.5.gz opensmtpd /usr/share/man/man8/ opensmtpd /usr/share/man/man8/makemap.8.gz opensmtpd /usr/share/man/man8/newaliases.8.gz opensmtpd /usr/share/man/man8/smtpctl.8.gz opensmtpd /usr/share/man/man8/smtpd.8.gz
smtpd.confの編集
デフォルトのsmtpd.confは以下のようになっている。設定ファイルの形式は、 pf.conf等に似ている。127.0.0.1でlistenしているため、内部へのmbox形式の メール配送と外部へのメール送信のリレーのみを行うようになっている。
listenするインターフェース又はネットワークを10.0.0.0/8等に変更すれば、 LAN内のホストからの要求も受け付けるようになる。この際、accept from 〜等で ネットワーク毎にルールを設定することもできる。
# $OpenBSD: smtpd.conf,v 1.2 2009/11/03 22:32:10 gilles Exp $ # This is the smtpd server system-wide configuration file. # See smtpd.conf(5) for more information. # XXX try to find a portable way to get the IP interface #listen on lo0 listen on 127.0.0.1 map "aliases" { source db "/etc/mail/aliases.db" } accept for local alias aliases deliver to mbox accept for all relay
しかし、このままでは内部への配送は正しく行われるが、外部へのリレーは利 用しているプロバイダや回線の契約によってはOP25Bにより正しく行われない可 能性がある。そこで、GmailのSMTPサーバを経由し外部へのメール送信を行う ように設定を変更する。
Gmailでは、STARTTLSを用いた認証を行うことでSMTPサーバを利用できる。 サーバホスト名はsmtp.gmail.com、ポート番号は587、アカウント名は"gmail アカウント@gmail.com"、パスワードはGmailのものを用いる。
以上の変更点を適用したsmtpd.confは以下のようになった。
listen on lo map "aliases" { source db "/etc/mail/aliases.db" } map "secrets" { source db "/etc/mail/secrets.db" } accept for local alias "aliases" deliver to mbox accept from all for all relay via tls+auth://smtp.gmail.com:587 auth "secrets"
この他にも、Gmailのユーザ名とパスワードを保持刷るためのファイル /etc/mail/secrets.dbが必要になる。このファイルはプレーンテキストで以下 のように書かれた/etc/mail/secretsを、makemapコマンドを用いて変換したも のである。
smtp.gmail.com Gmailのアカウント名@gmail.com:Gmailのパスワード
このsecretsとsecrets.dbのパーミッションは640、オーナーはroot:_smtpdに 設定する。
smtpdの起動
smtpdの動作を確認するため、まずはコマンドラインから-d(Do not daemonize)と-v(verbose output)オプションを付けて起動する。
試しにメールを送信してみる。
[miku@test ~]$ telnet localhost 25 Trying ::1... Connected to localhost. Escape character is '^]'. 220 test.k.hachune.net ESMTP OpenSMTPD EHLO hachune.net 250-test.k.hachune.net Hello hachune.net [IPv6:::1], pleased to meet you 250-8BITMIME 250-ENHANCEDSTATUSCODES 250-SIZE 18446744073709551615 250 HELP MAIL FROM:250 2.1.0 Sender ok RCPT TO: 250 2.0.0 Recipient ok DATA 354 Enter mail, end with "." on a line by itself Subject: SMTPD Test From: Miku Hachune To: Phenomer Date: Thu, 13 Sep 2012 17:29:26 +0900 mikumiku . QUIT
メールが正しく届いていればOK、もし届いていないようであればmailqや端末 上のログを確認する。 このままOpenSMTPDを使い続ける場合は、/etc/rc.confのDAEMONSにsmtpdを追 加しておく。
参考
OpenSMTPD
http://www.opensmtpd.org/
その他のメール クライアントの設定 - Gmail ヘルプ
https://support.google.com/mail/bin/answer.py?hl=ja&answer=78799
0 件のコメント:
コメントを投稿