Carpe Diem

備忘録。https://github.com/jun06t

メールサーバの設定【旧情報】

メールサーバの設定です。 こちらもネット上では色んな情報が混在していて導入に時間がかかりました。 メールサーバは大きく分けて次の3つの機能を使うのが主流です。 1. 実際のメールの送受信を担当するSMTP(ここではpostfixを使います) 2. postfixが受け取ったメールをメールソフトに提供するメールサーバ(ここではdovecotを使います) 3. メールを送ろうとしている人が信頼できるかどうかの認証を行う認証デーモン(ここではsaslauthdを使います) ですがとりあえずメールサーバとして動かすのであれば、1、2だけで大丈夫です(多分)。 3はいまいち理解していないので、後半はソース元からのコピペばかりです。そのうちちゃんと勉強して自分で設定出来るようにしないと。 $ sudo apt-get install postfix dovecot-common dovecot-pop3d dovecot-imapd sasl2-bin postfixの設定では今回は「設定なし」を選びます。もしすでにインストールしている場合は $ sudo dpkg-reconfigure postfix で再設定できます。もしくはSynapticから完全削除を実行しましょう。 それでも設定ファイルが下記のように例がない場合 /usr/share/postfix/main.cf.dist をコピーすればいいです。 ◆dovecatの設定 /etc/dovecot/dovecot.conf を以下のように編集します。 protocols = none ↓ protocols = imap imaps pop3 pop3s #disable_plaintext_auth = yes ↓ disable_plaintext_auth = no 編集が終わったら再起動。 $ sudo /etc/init.d/dovecot restart postfixの設定 /etc/postfix/main.cf を編集します。 # 59行目:コメント解除 mail_owner = postfix # 76行目:コメント解除しホスト名指定。一般にmail.ドメイン名の形で書きます。 myhostname = mail.server.world # 83行目:コメント解除しドメイン名指定 mydomain = server.world # 104行目:コメント解除 myorigin = $mydomain # 118行目:コメント解除 inet_interfaces = all # 166行目:コメント解除。外部からメールを受け付ける場合、ここにドメインを追加します。下の場合gmail.comを受け付けます。 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, gmail.com # 209行目:コメント解除 local_recipient_maps = unix:passwd.byname $alias_maps # 268行目:自ネットワーク追記 mynetworks = 127.0.0.0/8, 192.168.1.0/24 # 388行目:コメント解除 alias_maps = hash:/etc/aliases # 399行目:コメント解除 alias_database = hash:/etc/aliases # 421行目:コメント解除 ( Maildir形式へ移行。これでメールを送るとそのユーザのhomeにMaildirが出来ます ) home_mailbox = Maildir/ # 552行目:コメントにしてその下に追記 #smtpd_banner = $myhostname ESMTP $mail_name (@@DISTRO@@) smtpd_banner = $myhostname ESMTP # 626行目:追記 sendmail_path = /usr/sbin/postfix # 631行目:追記 newaliases_path = /usr/bin/newaliases # 636行目:追記 mailq_path = /usr/bin/mailq # 642行目:追記 setgid_group = postdrop # 646行目:コメント化 #html_directory = # 650行目:コメント化 #manpage_directory = # 655行目:コメント化 #sample_directory = # 659行目:コメント化 #readme_directory = # 最終行へ追記:送受信メールサイズを10Mに制限 message_size_limit = 10485760 # メールボックスサイズを1Gに制限 mailbox_size_limit = 1073741824 # 以下SMTP-Auth用 smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth-client smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname smtpd_client_restrictions = permit_mynetworks,reject_unknown_client,permit smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject また、最近はプロバイダがOP25Bのブロックをしているので、自宅以外の場所から自宅メールサーバを使って送信を行いたい場合には、587番のSubmissionポートを使った送受信にも対応しておかないと、そもそも自宅サーバへのアクセス(25番ポート)ができない可能性がある。この対応は簡単で、/etc/postfix/master.cf #submission 〜 ↓ submission 〜 とする。編集が済んだらaliasの有効化(これいまいちよく分かってない)と再起動。 $ sudo newaliases $ sudo /etc/init.d/postfix restart ◆saslauthの設定 /etc/default/saslauthd を編集します。 start = no ↓ start = yes 次に、 /etc/postfix/sasl の下に smtpd.conf というファイルを作り、 pwcheck_method: auxprop と記述。あとは、このサーバからメールを送信するユーザーひとりひとりに対して、ユーザー名とパスワードを設定する必要があります。これには、 $ sudo saslpasswd2 -c -u ドメイン名 ユーザ名 パスワードを聞かれるので2回入力すればOKです。ユーザーが複数いる場合はこの作業を繰り返します。これで作られたパスワードは、/etc/sasldb2に保存されます。 最後に、Ubuntuの場合(Debianの場合?)ならではのおまじないが必要になります。Ubuntuでは、セキュリティホールなどを使ってpostfixに悪さをされないように、postfixを/var/spool/postfixchroot(これより上に行かせない)するんだそうです。ところが、saslauthdのパスワードファイルは/etc/sasldb2 に置かれるので、postfixはこれを読みにいけない。しかも、このファイルはrootユーザーかrootグループでないと読めない。postfixは、postfixというユーザーとしてアクセスをするので、仮にsasldb2にアクセスできても中身が読めない、ということのようだ。 この回避策として、多くのサイトに、rm -r /var/run/saslauthd ……など5行で構成される手法が掲載されている。正直、私にはどういう意味なのかあまりよくわからない。そもそも、rm -rなんてことは、できればしたくない。その点、上で紹介したサイトには、そういうヤバい「削除」を伴わず、趣旨がよくわかり、3行ですむ処理方法が記載されている。以下のとおりだ。 $ sudo chgrp postfix /etc/sasldb2 ←ファイル /etc/sasldb2 の所有者グループを(rootから)postfixに変更 $ sudo chmod 640 /etc/sasldb2 ←640なので、rootはこのファイルを読み書きでき、グループユーザー(postfix)は読み出しのみができ、それ以外の人は読み書き禁止にする。 $ sudo ln /etc/sasldb2 /var/spool/postfix/etc postfixがアクセス可能な/var/spool/postfix/etc内に、sasldb2のリンクを張る これで問題なく動いているので、私はこちらをおすすめしておきます。 あとは、 $ sudo /etc/init.d/saslauthd restart で再起動すればOK。 確認はまた次の記事で行います。 ソース: メールサーバの設定(postfix, dovecot, sasl2=saslauthd) Postfix インストール/設定 Postfix のインストールと設定