■目次
PostfixDovecot(メール受信サーバ)メーラー設定動作確認まとめ
■Postfix
※メール配信サーバを構築する ■インストール ※全体的に整理中 ※複数サーバからなる場合、MXレコードの編集も必要 ※システムのユーザとメールのユーザは共通とする ※メール関連はセキュリティに注意 メールサーバ構築に必要な基礎知識とセキュリティについての解説 http://oxynotes.com/?p=4266 メールサーバー構築(Postfix+Dovecot) http://centossrv.com/postfix.shtml Postfixの設定 http://www.sakura-vps.net/postfix-settings-for-sakura-vps/ VPS設定のつぼ さくらインターネット Mailサーバ(Postfix・Dovecot) http://vps-tora.com/tsubo/sakura/postfix/ さくらのVPS導入手順 10.postfixの利用準備 http://hosting.talisnet.info/sakura-vps-10/ さくらのVPS導入手順 11.dovecotの利用準備 http://hosting.talisnet.info/sakura-vps-11/ Postfixおよび外部リレーの設定 https://sites.google.com/site/sakuravpsguide/postfix さくらのVPSの設定 - メールサーバーの構築 http://tipszone.jp/20120521_mail_server/ $ vi /etc/sysconfig/network … ホスト名の設定を確認
#HOSTNAME=localhost.localdomain HOSTNAME=refirio.net
※後で設定する virtual_mailbox_domains と mydestination の重複を防ぐため、ここには独自ドメインを指定しない。 と上のページに書かれているけど、メール専用サーバを立てず、かつ一つのサーバに複数のドメインを割り当てるのでなければ問題なさそう $ hostname -f … ホスト名(FQDN)を確認 www2310uo.sakura.ne.jp ※さくらVPSでは「localhost」と表示されたけど「refirio.net」で進めて動作した $ yum -y install postfix … Postfixをインストール(さくらVPSでは、はじめからインストールされている) $ vi /etc/postfix/main.cf … Postfixの設定ファイルを編集
#myhostname = host.domain.tld #myhostname = virtual.domain.tld myhostname = refirio.net … ホスト名(FQDN)を設定(1サーバのみで1ドメインでの運用ならドメインでも問題なさそう) #mydomain = domain.tld mydomain = refirio.net … ドメインを設定 #myorigin = $myhostname #myorigin = $mydomain myorigin = $mydomain … ローカルからのメール送信時、送信元メールアドレスの@以降にドメイン名を付加 #inet_interfaces = localhost inet_interfaces = all … SMTP接続を待ち受けるネットワークインターフェース(localhostだと他SMTPサーバからの接続を受け付けない) #inet_protocols = all inet_protocols = ipv4 … プロトコルをipv4に限定するように変更 #mydestination = $myhostname, localhost.$mydomain, localhost mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain … ローカル配送を行うドメイン(自ドメイン宛メールを受信できるように) 「ユーザ@ホスト」「ユーザ@localhost.ドメイン」 「ユーザ@localhost」「ユーザ@ドメイン」 であればメールを受け取って処理する #mynetworks = 168.100.189.0/28, 127.0.0.0/8 #mynetworks = $config_directory/mynetworks #mynetworks = hash:/etc/postfix/network_table #mynetworks = 192.168.0.0/16, 127.0.0.1 … 中継を許可するSMTPクライアントのアドレス ここに指定したアドレスからのメールは無条件で中継される(不要?) #relay_domains = $mydestination … リレーを許可するドメインを指定(不要?) #home_mailbox = Mailbox #home_mailbox = Maildir/ home_mailbox = Maildir/ … メールボックス形式をMaildir形式に #smtpd_banner = $myhostname ESMTP $mail_name #smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) smtpd_banner = $myhostname ESMTP unknown … メールサーバーソフト名の隠蔽化 disable_vrfy_command = yes … アカウントの有無を調べるVRFYコマンドを禁止(未検証) smtpd_helo_required = yes … SMTP開始時のHELO/EHLOコマンドを必須とする(スパムメール対策 / 未検証) smtpd_sasl_auth_enable = yes … SMTP認証を有効にする smtpd_sasl_type = dovecot … DovecotでSMTP認証を行う smtpd_sasl_path = private/auth … SASL認証デーモンのソケットファイル(/var/spool/postfix からの相対パスを指定) #smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd … リレーメールに関する設定なので不要? #smtp_sasl_mechanism_filter = plain … リレーメールに関する設定なので不要? smtpd_sasl_local_domain = $myhostname broken_sasl_auth_clients = yes … 旧バージョンの認証(Outlookなど)にも対応する smtpd_recipient_restrictions = permit_mynetworks, … SMTP認証を使用する場合はこの設定にする permit_sasl_authenticated, reject_unauth_destination #smtpd_recipient_restrictions = permit_mynetworks, … この設定は古い?Postfix2.0以降はreject_unauth_destinationを使う? # check_relay_domains, http://www.aconus.com/~oyaji/mail2/smtp-auth.htm # reject smtpd_sender_restrictions = reject_non_fqdn_sender, … FQDNが使われていないアカウントは受信を拒否 reject_unknown_sender_domain … DNSに登録されていないドメインは受信を拒否 smtpd_sasl_security_options = noanonymous … anonymousでの認証を許可しない message_size_limit = 10485760 … 受信メールサイズを10MB(10*1024*1024)に制限
※relayhostの設定は不要っぽい? ※mynetworksの設定は不要っぽい?何もいじらなければ推奨設定になる? http://www.obenri.com/_postfix/relay_settings.html ※smtp_sasl_password_mapsなどの設定は不要っぽい? ※smtp_use_tlsを有効にするほうがいいらしいが、SSL証明書が必要? ■SMTP-Auth設定 # yum -y install cyrus-sasl # service saslauthd start # chkconfig saslauthd on ※ISPのSMTP認証ファイル作成は行っていないけど動作した > ▽設定しなくても動作した▽ > > ※以下を行う場合、http://centossrv.com/postfix.shtml の「(2)SMTP-Auth設定」を参考に > SMTP-Auth用ユーザ名、パスワードにシステムのユーザ名、パスワードを使用する? > (pwcheck_methodをauxpropにすると、メールの送信ができなかったため) > ただし「ISPのSMTP認証ファイル作成」は無くてもよさそう? > > $ vi /etc/sasl2/smtpd.conf … SMTP-Authの設定ファイルを編集 > - - - - - - - - - - - - - - - - - - - - - - - - - > #pwcheck_method: saslauthd > #pwcheck_method: auxprop … saslauthdのままにした > つまり、SMTP-Auth用ユーザ名、パスワードにシステムのユーザ名、パスワードを使用する状態になっている? > - - - - - - - - - - - - - - - - - - - - - - - - - > > △設定しなくても動作した△ ■Maildir形式メールボックス作成 $ mkdir -p /etc/skel/Maildir/{new,cur,tmp} … 新規ユーザ追加時、自動でMaildir形式メールボックスを作成 $ chmod -R 700 /etc/skel/Maildir/ … メールボックスパーミッション設定 ■Submissionポート設定 ※OP25B対応に設定する $ vi /etc/postfix/master.cf … submissionポートを設定
smtp inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes … 追加 / smtpで、sasl認証を実施 -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination … 追加 / smtpで、認証に通過した場合以外は全てreject submission inet n - n - - smtpd … コメント解除 # -o smtpd_tls_security_level=encrypt … このコメントも解除していいかと思ったけど送信できなくなった -o smtpd_sasl_auth_enable=yes … コメント解除 / submissionで、sasl認証を実施 -o smtpd_client_restrictions=permit_sasl_authenticated,reject … コメント解除 / submissionで、sasl認証に通過した場合以外は全てreject # -o milter_macro_daemon_name=ORIGINATING … このコメントも解除していいかと思ったけど送信できなくなった
$ service postfix restart … Postfixを再起動(起動していなければ start で起動する) $ chkconfig postfix on … Postfixの自動起動を設定 ■起動 # service iptables restart … ファイヤーウォールを再起動 ■ファイヤーウォール設定(iptablesを使用している場合の設定) # vi /etc/sysconfig/iptables … ファイヤーウォールを設定(25番ポートと587番ポートを開ける)
#Postfixを許可 -A MY-FIREWALL -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT -A MY-FIREWALL -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT
※何故かiptablesから改行が取り除かれたりしていた
■Dovecot(メール受信サーバ)
※メール受信サーバを構築する ■インストール $ yum -y install dovecot … Dovecotをインストール $ vi /etc/dovecot/conf.d/10-mail.conf … メール配送関連の設定ファイルを編集
#mail_location = mail_location = maildir:~/Maildir … メールボックス形式をMaildir形式に
$ vi /etc/dovecot/conf.d/10-auth.conf … ユーザ認証関連の設定ファイルを編集
#disable_plaintext_auth = yes disable_plaintext_auth = no … プレーンテキスト認証を許可(OpenSSLが必要?) auth_mechanisms = plain login … 認証時のパスフレーズ送信方式を指定
# vi /etc/dovecot/conf.d/10-master.conf … 基本動作の設定ファイルを編集
# Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { … コメントを解除 mode = 0666 }
$ vi /etc/dovecot/conf.d/10-ssl.conf … SSL/TLS関連の設定ファイルを編集
#ssl = yes ssl = no … SSL接続無効
※disable_plaintext_authやsslをnoに設定するには、OpenSSLが必要?refirio.netではnoで大丈夫(証明書なしのSSLを使っているから?) http://centossrv.com/postfix-tls.shtml ■起動 $ service dovecot start … Dovecotを起動 $ chkconfig dovecot on … Dovecotの自動起動を設定 ■ファイヤーウォール設定(iptablesを使用している場合の設定) # vi /etc/sysconfig/iptables … ファイヤーウォールを設定(POP3なら110番ポートを、IMAPなら143番ポートを開ける)
#Dovecotを許可 -A MY-FIREWALL -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT #-A MY-FIREWALL -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT
# service iptables restart … ファイヤーウォールを再起動 ■メールユーザを追加 # adduser --shell /sbin/nologin username1 … ユーザを作成 # adduser --shell /sbin/nologin username2 # passwd username1 … ユーザにパスワードを設定 # passwd username2 > ▽設定しなくても動作した▽ > ※pwcheck_methodをsaslauthdのままにしているので、以下の手順は不要? > > # echo "パスワード" | saslpasswd2 -p -u refirio.net -c username1 … SMTP-Auth用ユーザ・パスワード登録 > # echo "パスワード" | saslpasswd2 -p -u refirio.net -c username2 > > ※ホスト名の設定は合っている?ドメイン名ではなくホスト名にするべき?refirio.netではドメイン名で動いている > > # sasldblistusers2 … SMTP-Auth用ユーザ名、パスワード確認 > username1@refirio.net: userPassword > メールを送受信できる状態でも > listusers failed > と帰ってきた。 > > # chgrp postfix /etc/sasldb2 … sasldb2所有グループをpostfixに変更(最初の1回のみ) > > # saslpasswd2 -d username1 -u refirio.net … 「username1」を削除する場合 > > △設定しなくても動作した△
■メーラー設定
※メーラーで送受信する場合の設定例 [POP3設定] 受信プロトコル:POP3 POP3ポート:110 pop3サーバ:サーバのドメイン ユーザ名:設定したユーザ名 パスワード:設定したパスワード [SMTP設定] smtpサーバ:サーバのドメイン SMTPポート:25 (OP25B対策の場合は、587) SMTP認証:行う。CRAM-MD5(なくてもOK), LOGIN ユーザ名:設定したユーザ名 パスワード:設定したパスワード
■動作確認まとめ
※動作確認手順やエラーがあったときに調べた内容メモ ■Postfix コマンドラインから動作確認。 testsaslauthd -u username1 -p U8BfPa2ZrY ※UNIXアカウントのユーザ名とパスワードで確認。 問題がなければ、 0: OK "Success" と返ってくる。 …らしいけど、メールを送受信できる状態でも 0: NO "authentication failed" と帰ってきた。 postfixでSMTP認証が正常に機能しているかチェック。 telnet localhost 25 接続完了後、 AUTH LOGIN と入力してエラーが出なければOK。 ※334 VXNlcm5hbWU6 ←大体このように返ってくる。 ■Dovecot telnet localhost 110 接続後、以下のコマンドでチェック。 user xxxx pass ******** list ← 着信メールリスト確認 ■メール送受信 ・内部で同一ユーザ同士でメールの送受信 ・内部で他ユーザ間でメールの送受信 ・内部で外部(プロバイダのメールアドレス等)との送受信 ・内部で携帯との送受信※ ・外部(会社等)で同一ユーザ同士でメールの送受信 ・外部(会社等)で他ユーザ間でメールの送受信 ・外部(会社等)で外部(プロバイダのメールアドレス等)との送受信 ・外部(会社等)で携帯との送受信※ ※携帯はドメイン指定受信等でメールサーバーからのメールが拒否されないようにしておくこと ■メール送信時にエラー Telnet rcpt to:refirio@gmail.com 554 5.7.1 <st1992.nas811.p-osaka.nttpc.ne.jp[202.229.34.200]>: Client host rejected: Access denied $ vi /var/log/maillog
Jun 13 17:20:27 www2310uo postfix/smtpd[2763]: connect from st1992.nas811.p-osaka.nttpc.ne.jp[202.229.34.200] Jun 13 17:20:27 www2310uo postfix/smtpd[2763]: warning: SASL authentication failure: Password verification failed Jun 13 17:20:27 www2310uo postfix/smtpd[2763]: warning: st1992.nas811.p-osaka.nttpc.ne.jp[202.229.34.200]: SASL PLAIN authentication failed: authentication failure Jun 13 17:20:28 www2310uo postfix/smtpd[2763]: warning: st1992.nas811.p-osaka.nttpc.ne.jp[202.229.34.200]: SASL LOGIN authentication failed: authentication failure Jun 13 17:20:34 www2310uo postfix/smtpd[2763]: disconnect from st1992.nas811.p-osaka.nttpc.ne.jp[202.229.34.200] Jun 13 17:20:37 www2310uo postfix/smtpd[2766]: connect from localhost[127.0.0.1] Jun 13 17:20:37 www2310uo postfix/smtpd[2766]: disconnect from localhost[127.0.0.1]
vi /etc/postfix/main.cf
mynetworks = 192.168.0.0/16, 127.0.0.1 … 必要? relay_domains = $mydestination … 必要?リレーを許可するドメインを指定 smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd … 不要? smtp_sasl_mechanism_filter = plain … 不要? #smtpd_sasl_security_options = noanonymous … セキュリティ向上になる? #broken_sasl_auth_clients = yes … セキュリティ向上になる?
SASL LOGIN authentication failed http://www.aconus.com/~oyaji/suse/smtp-suse.htm yum -y install cyrus-sasl service saslauthd start myhostname = refirio.net ←変化ないので戻した Jun 13 20:55:28 www2310uo postfix/smtpd[9245]: connect from st1992.nas811.p-osaka.nttpc.ne.jp[202.229.34.200] Jun 13 20:55:28 www2310uo postfix/smtpd[9245]: warning: SASL authentication failure: Password verification failed Jun 13 20:55:28 www2310uo postfix/smtpd[9245]: warning: st1992.nas811.p-osaka.nttpc.ne.jp[202.229.34.200]: SASL PLAIN authentication failed: authentication failure Jun 13 20:55:28 www2310uo postfix/smtpd[9245]: warning: st1992.nas811.p-osaka.nttpc.ne.jp[202.229.34.200]: SASL LOGIN authentication failed: authentication failure Jun 13 20:55:32 www2310uo postfix/smtpd[9245]: disconnect from st1992.nas811.p-osaka.nttpc.ne.jp[202.229.34.200] $ yum -y install cyrus-sasl-md5 $ sendmail root From: root To: root Subject: test test . ↑届く http://d.hatena.ne.jp/jitsu102/20110420/1303254299 $ vi /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 refirio@gmail.com:パスワード
$ chmod 600 /etc/postfix/sasl_passwd $ postmap /etc/postfix/sasl_passwd $ service postfix restart $ sendmail refirio@gmail.com From: username1@refirio.net To: refirio@gmail.com Subject: test2 test2 . ↑届く メーラーからはやはり送信できない vi /etc/postfix/main.cf
smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth
↑追加したら、接続すらできなくなったのでコメントアウトした vi /etc/postfix/main.cf
smtpd_sasl_type = cyrus smtpd_sasl_path = smtpd
↑変化ないのでコメントアウトした #vi /usr/lib64/sasl2/smtpd.conf vi /etc/sasl2/smtpd.conf
pwcheck_method: auxprop mech_list: cram-md5 digest-md5 plain login
vi /etc/postfix/main.cf
smtpd_sasl_local_domain = $mydomain
/etc/init.d/postfix restart /etc/init.d/saslauthd restart ↑変化なし http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13133150913 vi /etc/sasl2/smtpd.conf
pwcheck_method: saslauthd #pwcheck_method: auxprop
↑送受信できるようになった!