まずは、dovecotのインストールから
まずは、dovecotのインストールから行います。
インストールは、いつものように yum を使います。
| $ yum -y install dovecot ...
 | 
とすればOKです。
既にインスール済みの場合は、その旨表示されますので、確認も含めて実施しておきましょう。
dovecotの設定
dovecotの設定は、色々と細かい設定を行うことができるようになっていますが、ここでは、最低限メールの受信ができるような設定についてのみ 解説します。
設定すべき項目は、以下のとおりです。
これだけです。
CentOS5 では、いずれも、/etc/dovecot.confを編集します。
また、CentOS6,ScientificLinux6 では、/etc/dovecot/dovecot.conf、/etc/dovecot/conf.d/10-mail.conf をそれぞれ編集します。
CentOS5
[/etc/dovecot.conf]
| ...
protocols = imap imaps pop3 pop3s
...
# dovecot のバージョンによってパラメータ名が異なります。
# dovecot Ver 1.0以上では、mail_location を使います。
mail_location = mbox:~/mail:INBOX=/var/mail/%u
# dovecot Ver 1.0未満では、default_mail_env を使います。
default_mail_env = mbox:~/mail:INBOX=/var/mail/%u
...
 | 
CentOS6,ScientificLinux6
[/etc/dovecot/dovecot.conf]
| ...
protocols = imap imaps pop3 pop3s
...
 | 
[/etc/dovecot/conf.d/10-mail.conf]
| ...
mail_location = mbox:~/mail:INBOX=/var/mail/%u
...
 | 
とすればOKです。
簡単ですね。
メールボックスのよくある設定例は、
| default_mail_env = maildir:~/Maildir
#       or
mail_location = maildir:~/Maildir
 | 
です。
この設定は、sendmail or Postfixのデフォルトの設定になります。
ここでは、sendmail or Postfixのデフォルトの設定にあわせ、上記のように /var/mail/user としておきます。
sendmail or Postfixの設定によって、メールボックスへの配信の仕方は異なりますので、そこに合わせて設定する必要がありますので注意しましょう。
ちゃんとメールボックスを指定すればOK。
ただし、1通もメールが無い状態では、ユーザのメールボックスとなるファイルさえないので、以下のエラーが
/var/log/maillogに出力されます。
| Nov 26 15:40:38 host dovecot: POP3(hoge): open(/var/mail/hoge, O_CREAT) failed: Permission denied
Nov 26 15:40:38 host dovecot: POP3(hoge): access() failed with mbox file /var/mail/hoge: No such file or directory
Nov 26 15:40:38 host dovecot: POP3(hoge): stat() failed with mbox file /var/mail/hoge: No such file or directory
Nov 26 15:40:38 host dovecot: POP3(hoge): Couldn't init INBOX: Can't sync mailbox: Messages keep getting expunged
Nov 26 15:40:38 host dovecot: POP3(hoge): Mailbox init failed top=0/0, retr=0/0, del=0/0, size=0
 | 
ユーザを追加した場合やdovecotの設定を変更した時は、必ず、テストメールを送信しておきましょう。そうすることで、確認もできますし、この問題も回避できます。
mailコマンドでも良いので、ちゃんと受信できるかテストメールを送っておきましょうね。
| $ mail hoge Subject: TEST MAIL.  TEST MAIL.  .  CC:  $
 | 
こんな感じでコマンドラインから送信できます。(

:改行)
Dovecotでは、デフォルトでIPv6に対応しています。そのため、Listen状態を確認したときに
| $ netstat -an --tcp Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:587                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:465                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN
tcp        0      0 :::993                      :::*                        LISTEN
tcp        0      0 :::995                      :::*                        LISTEN
tcp        0      0 :::110                      :::*                        LISTEN
tcp        0      0 :::143                      :::*                        LISTEN
 | 
このように
httpのポート80が、
0.0.0.0:80 のようにIPv4 にのみ対応してポートをオープンしているのに対して
pop3のポート110が、
:::110 のようにIPv6 に対応してポートをオープンしています。(IPv4にも対応しています)
これを
httpのポート80と同じよにIPv4 にのみ対応する場合は、
/etc/dovecot.confを以下のように編集します。
| ...
#listen = [::]
listen = *
...
 | 
の設定でIPv4への対応のみということになります。
あえて、IPv6も対応させるための記述は、
[::]ということになります。(単純に
listenパラメータを削除するだけでもOKです)
さて、IPv4への対応のみに設定して同じようにListen状態を確認してみましょう。
| $ netstat -an --tcp Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:993                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:995                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:587                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:465                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN
 | 
これでOKですね。
あえて
IPv4への対応のみとしたい方だけですね。IPv6対応でもIPv4にも対応していますから、無理にこの設定をする必要もないと思います。
dovecotを起動する
最後にdovecotの起動です。これは、いつもパターンです。
| $ /etc/init.d/dovecot start 
 | 
これでOK。
システム起動時にdovecotを起動するように設定しておきます。
| $ chkconfig dovecot on 
 | 
設定した内容を確認しておきましょう。
| $ chkconfig --list dovecot dovecot         0:オフ  1:オフ  2:オン  3:オン  4:オン  5:オン  6:オフ
 | 
これでメールクライアントからメールを受信してみてください。
どうですか?ちゃんと受信できましたか?
もし、受信できない場合は、まず、ポートの確認をしてみましょう。
telnetでpop3のポートを確認してみる。
| C:\> telnet 111.111.111.111 110 +OK Dovecot ready.
quit
+OK Logging out
 | 
上記の例は、dovecotのIPアドレスが
111.111.111.111だったとして記述しています。
これがOKの場合は、mail_locationの設定に誤りがあるか、メールクライアントの設定に誤りがあるかも知れません。
これがNGの場合は、ポートがオープンされていないか、dovecotが起動していないでしょう。
ポートが開いているか確認するには、iptablesを使うと良いでしょう。
| $ iptables -L Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:pop3
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
Chain FORWARD (policy DROP)
target     prot opt source               destination
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
 | 
の状態を確認します。ここでは、
ACCEPTになっていますから、ポートはオープンされていることになります。
もし、開いていないようなら、pop3のポート(デフォルト110)を開くようにしましょう。
| $ iptables -A INPUT -p tcp --dport 110 -j ACCEPT 
 | 
こんな感じですかね。
 
コメントを投稿 :