制作の度に必要なものを入れたり、いろいろと調整を加えてきた環境のため何が既に入っているかなどが分かりませんが、現状の私の環境で以下の作業をしたところ Gmail でメールが送信できるようになったので作業ログとして残しておきます。無駄なものが入っている可能性もありますので、もし無駄な作業がありましたらご指摘頂けると幸いです。
今回は以下のページを参考にしました。
- icoro : Ubuntu 9.04 Server – Postfixの設定 (一番参考になった)
- Ubuntu日本語フォーラム / mailコマンドの動作がちょっとへんです。
- @鯖味噌缶 – ubuntu mailコマンドを使えるようにするには
- telnetでメール送信
インストールする
mail コマンドを使えるようにする
1 | sudo aptitude install mailutils |
Postfix をインストールする
1 | sudo apt-get install postfix |
Postfix を設定する
以下のファイルを新規作成します。
1 | sudo vi /usr/share/postfix/main.cf |
/usr/share/postfix/main.cf.dist にサンプルがありますが、必要な部分だけをまとめると以下のような感じのようです。それぞれ適宜変更を加えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | mail_owner = postfix myhostname = mail.ubuntu mydomain = ubuntu myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost mynetworks = 192.168.0.0/24, 127.0.0.0/8 home_mailbox = Maildir/ #sendmail_path = #newaliases_path = #mailq_path = #setgid_group = #html_directory = #manpage_directory = #sample_directory = #readme_directory = |
Gmail で送信できるように設定する
/etc/postfix/main.cf を設定する
/etc/postfix/main.cf を編集します。
1 | sudo vi /etc/postfix/main.cf |
relayhost に Gmail のサーバーを設定します。
34 | relayhost = [smtp.gmail.com]:587 |
末尾に以下の記述をします。
1 2 3 4 5 6 7 8 9 | #sasl setting smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = noanonymous smtp_sasl_mechanism_filter = plain #tls setting smtp_use_tls = yes |
Gmail アカウントの情報を入れる
/etc/postfix/sasl_passwd を作成します。
1 | sudo vi /etc/postfix/sasl_passwd |
以下のように Gmail のアカウント情報を入れます。
1 | [smtp.gmail.com]:587 example@gmail.com:password |
メールアドレスとパスワードを自分のものを入れます。Google Apps のメールアドレスにも対応しているようです。また、平文でメールアドレスとパスワードが保存されているので所有者と権限を適切なものに変更します。
1 2 | sudo chown root:root /etc/postfix/sasl_passwd sudo chmod 600 /etc/postfix/sasl_passwd |
その後 postmap を実行します。
1 | sudo postmap /etc/postfix/sasl_passwd |
すると以下のようなエラーが私の環境では出ました。これは 50 行目の属性名の後に謎の文字が入っているとのことで、それも??だそうで何事かと思いましたが、コピー&ペーストの時に入った謎のスペースでした。削除したら postmap を問題なく実行することができました。
1 | postmap: fatal: /etc/postfix/main.cf, line 50: missing '=' after attribute name: "??" |
postmap を実行したら postfix を再起動します。
1 | sudo /etc/init.d/postfix restart |
メールを送信してみる
テストの方法はいくつかありますが、手っ取り早いのが以下の方法になります。
1 | mail demo@example.com |
もしくは以下となります。
1 | echo test|mail demo@example.com |
メールが送信できない
telnet でメールサーバーをチェック
そもそもメールサーバーに接続できているかを確認します。特に仮想で開発環境を構築している場合はネットワーク関連が怪しいこともありあすので以下のように telnet を使って接続を確認します。
1 | telnet mail.gmail.com |
私の場合は物理的な要因
メールが送信できないと思ってたら LAN ケーブル抜けたたんですが、一応無線 LAN で接続していた。しかし、なんとなく無線 LAN を切りにして LAN ケーブルで接続したりして、ネットワークの再設定をして仮想 Ubuntu Server を再起動していたら40通くらいメール送信されてました。つまり以上の設定で問題なかったということですね。
コメント