まずは、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
|
tcp dpt:pop3の状態を確認します。ここでは、
ACCEPTになっていますから、ポートはオープンされていることになります。
もし、開いていないようなら、pop3のポート(デフォルト110)を開くようにしましょう。
$ iptables -A INPUT -p tcp --dport 110 -j ACCEPT
|
こんな感じですかね。
コメントを投稿 :