PostfixとDovecotとOpenLADP(その4/4)

セキュアなメールサーバーをLDAPを絡めて構築する。

PostfixとDovecotの稼働環境:

CentOS release 6.5 (Final)
Linux version 2.6.32-279.14.1.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Tue Nov 6 23:43:09 UTC 2012
Dovecot Version 2.0.9
Postfix mail_version = 2.6.6

PostfixとDovecotのセットアップは前回までで既に完了しているので、その動作確認を行う。

引き続きPostfix+Dovecot+OpenLDAPでメールサーバ | UNIXLifeのページに従って行う。

メールの配送確認

DovecotとPostfixを起動する。

[root]# /etc/init.d/postfix start
postfix を起動中:                                          [  OK  ]
[root]# /etc/init.d/dovecot start                                                                                                
Dovecot Imap を起動中:                                     [  OK  ]

Telnetによりメール配送テストを行う。ちなみに配送失敗時には、mail fromで指定したアドレスに送信されますので、ちゃんとした実在のアドレスを入力した方がいいと思います。

[root]# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 www.ramuda.co.jp ESMTP Postfix
helo www.ramuda.co.jp
250 www.ramuda.co.jp
mail from: kitada@ramuda.co.jp  <== 送信元。失敗した時の返送先
250 2.1.0 Ok
rcpt to: contact@www.ramuda.co.jp  <== 配送先
250 2.1.5 Ok
data
354 End data with .
Subject: test
This is test mail.
.
250 2.0.0 Ok: queued as E9B0F262C57
quit
221 2.0.0 Bye
Connection closed by foreign host.

正しく配送できた時の/var/logs/maillog

Apr 24 00:03:33 www postfix/smtpd[19300]: connect from localhost[::1]
Apr 24 00:04:15 www postfix/smtpd[19300]: D89D42601C5: client=localhost[::1]
Apr 24 00:04:34 www postfix/cleanup[19307]: D89D42601C5: message-id=
Apr 24 00:04:34 www postfix/qmgr[13455]: D89D42601C5: from=, size=379, nrcpt=1 (queue active)
Apr 24 00:04:35 www dovecot: lda(contact@ramuda.co.jp): msgid=: saved mail to INBOX
Apr 24 00:04:35 www postfix/pipe[19308]: D89D42601C5: to=, relay=dovecot, delay=39, delays=38/0.29/0/0.56, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 24 00:04:35 www postfix/qmgr[13455]: D89D42601C5: removed

SMTP認証機構の確認

またまたTelnetで確認

[root]# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 www.ramuda.co.jp ESMTP Postfix
ehlo www.ramuda.co.jp
250-www.ramuda.co.jp
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth plain
334

250-AUTH LOGIN PLAINが出力されれば、SMPT-AUTHは動作しているらしい。
・・・、ぉ?? 「250-AUTH PLAIN」、、LOGINが無い。・・・・

googleで調べてみる。
PostfixでSMTP-AUTHを実装する方法(PAM編) – No:465 – Linuxで自宅サーバ構築(新森からの雑記)によると、”「250-AUTH・・・」の行が出力されていれば成功です。”と記述してあったので大丈夫そうだ。
不安なので実際に確認してみる。

PLAINの場合には、Base64のエンコードで認証まで確認できるらしい。認証に使用するユーザを「kitada」、パスワードを「password」とすると認証に必要な情報は、以下のコマンドで変換できます。

[root postfix]# perl -MMIME::Base64 -e 'print encode_base64("kitada\0kitada\0password");'
a2l********************==

これを利用してログインしてみる。

[oss@www1346ui ~]$ telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 www.ramuda.co.jp ESMTP Postfix
ehlo www.ramuda.co.jp
250-www.ramuda.co.jp
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth plain a2l********************==
235 2.7.0 Authentication successful
quit
221 2.0.0 Bye
Connection closed by foreign host.

大丈夫なようだ

SMTP認証確認の動作確認

ページの手順

実際にSMTP認証を有効にしてSMTPサーバに接続できるか試してください。
また、SMTP認証を利用しない場合、SMTPサーバを利用出来ない事を確認してください。
これには、適当なメールクライアントを利用するのが最もお手軽です。

OP25Bで確認できない。・・・・こまった

不正中継の確認

第三者中継チェック RBL.JPでやってみる。ちょっと怪しそうだけどいいだろう。しっかり閉めればいいだけだ。
000
フォームに「www.ramuda.co.jp」と入力し[check]ボタンをクリックする。
001
002
この時の/var/log/maillogは

Apr 24 01:05:08 www postfix/smtpd[26420]: connect from www.rbl.jp[115.125.246.68]
Apr 24 01:05:09 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest@rbl.jp>: Relay access denied; from=<rlychk@h.rbl.jp> to=<rlytest@rbl.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:10 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest@h.rbl.jp>: Relay access denied; from=<rlychk> to=<rlytest@h.rbl.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:10 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest@h.rbl.jp>: Relay access denied; from=<> to=<rlytest@h.rbl.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:10 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest@h.rbl.jp>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<rlytest@h.rbl.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:10 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest@h.rbl.jp>: Relay access denied; from=<rlychk@[133.242.129.120]> to=<rlytest@h.rbl.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:11 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest%h.rbl.jp@www.ramuda.co.jp>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<rlytest%h.rbl.jp@www.ramuda.co.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:11 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest%h.rbl.jp@[133.242.129.120]>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<rlytest%h.rbl.jp@[133.242.129.120]> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:11 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest@h.rbl.jp>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<rlytest@h.rbl.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:12 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest%h.rbl.jp>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<rlytest%h.rbl.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:12 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest@h.rbl.jp@www.ramuda.co.jp>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<rlytest@h.rbl.jp@www.ramuda.co.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:14 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest@h.rbl.jp@www.ramuda.co.jp>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<rlytest@h.rbl.jp@www.ramuda.co.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:17 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest@h.rbl.jp@[133.242.129.120]>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<rlytest@h.rbl.jp@[133.242.129.120]> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:20 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest@h.rbl.jp>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<rlytest@h.rbl.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:23 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest@h.rbl.jp>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<rlytest@h.rbl.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:27 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <h.rbl.jp!rlytest>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<h.rbl.jp!rlytest> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:30 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <h.rbl.jp!rlytest@www.ramuda.co.jp>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<h.rbl.jp!rlytest@www.ramuda.co.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:33 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <h.rbl.jp!rlytest@[133.242.129.120]>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<h.rbl.jp!rlytest@[133.242.129.120]> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:37 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest%h.rbl.jp@ramuda.co.jp>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<rlytest%h.rbl.jp@ramuda.co.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:40 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest@h.rbl.jp@ramuda.co.jp>: Relay access denied; from=<rlychk@www.ramuda.co.jp> to=<rlytest@h.rbl.jp@ramuda.co.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:43 www postfix/smtpd[26420]: NOQUEUE: reject: RCPT from www.rbl.jp[115.125.246.68]: 554 5.7.1 <rlytest@h.rbl.jp>: Relay access denied; from=<rlychk@localhost> to=<rlytest@h.rbl.jp> proto=SMTP helo=<h.rbl.jp>
Apr 24 01:05:45 www postfix/smtpd[26420]: too many errors after RCPT from www.rbl.jp[115.125.246.68]
Apr 24 01:05:45 www postfix/smtpd[26420]: disconnect from www.rbl.jp[115.125.246.68]

ちゃんとチェックしているようだ。
全部PASSしたので、OKでしょう。

POP,IMAPの動作確認

またまたTelnetです。

[root]# telnet localhost 110
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user kitada
+OK
pass *******
+OK Logged in.
LIST
+OK 0 messages:
.
quit
+OK Logging out.
Connection closed by foreign host.

このときの/var/logs/maillog

Apr 22 23:43:17 www dovecot: pop3-login: Login: user=, method=PLAIN, rip=::1, lip=::1, mpid=9242, secured
Apr 22 23:43:23 www dovecot: pop3(kitada): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0

SSL設定

オレオレ証明書の作成

[root]# cd /etc/pki/tls/certs/
[root]# make mail.pem
[root]# make mail.pem
umask 77 ; \
        PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
        PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
        /usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ; \
        cat $PEM1 >  mail.pem ; \
        echo ""    >> mail.pem ; \
        cat $PEM2 >> mail.pem ; \
        rm -f $PEM1 $PEM2
Generating a 2048 bit RSA private key
..........+++
......................................................+++
writing new private key to '/tmp/openssl.nHiS26'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Chiyoda-Ku
Organization Name (eg, company) [Default Company Ltd]:Ramuda.Co.,Ltd.
Organizational Unit Name (eg, section) []:Network Security Team
Common Name (eg, your name or your server's hostname) []:www.ramuda.co.jp
Email Address []:info@ramuda.co.jp

証明書を参照するグループやパーミッションなど

証明書を参照出来るグループを作成し、postfixとdovecotユーザをこのグループに所属させます。そして証明書が参照出来るように、オーナーとパーミッションを変更します。

[root certs]# groupadd mailcerts                                          
[root certs]# usermod -G mailcerts postfix
[root certs]# usermod -G mailcerts dovecot
[root certs]# chown root.mailcerts mail.pem 
[root certs]# chmod 640 mail.pem

PostfixのSSL対応

/etc/postfix/main.cfを編集。
赤い部分を追加。

[root]# vi /etc/postfix/main.cf
   (省略)

message_size_limit = 10240000
mailbox_size_limit = 512000000
dovecot_destination_recipient_limit = 1
transport_maps = ldap:/etc/postfix/transport.cf
virtual_alias_maps = ldap:/etc/postfix/account.cf,ldap:/etc/postfix/group.cf

# SASL Enable
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
# TLS Enable add by kitada                                                                                     
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache                                             
smtpd_use_tls = yes                                                                                            

/etc/postfix/master.cfで以下の行のコメントを外す。
赤字の部分

[root]# vi /etc/postfix/master.cf 
(省略)
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
#submission inet n       -       n       -       -       smtpd
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       n       -       -       smtpd                                                  
  -o smtpd_tls_wrappermode=yes                                                                                 
  -o smtpd_sasl_auth_enable=yes                                                                                
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject                                                
  -o milter_macro_daemon_name=ORIGINATING                                                                      
#628      inet  n       -       n       -       -       qmqpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
(省略)

これでPostfixの分は終了なので、再起動する。

[root]# /etc/init.d/postfix restart
postfix を停止中:                                          [  OK  ]
postfix を起動中:                                          [  OK  ]

DovecotのSSL対応

/etc/dovecot/conf.d/10-ssl.confに以下の行を追加、変更します。

[root]# vi /etc/dovecot/conf.d/10-ssl.conf
##
## SSL settings
##

# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = yes                                                                                                      

# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
ssl_cert =

Dovecotを再起動すれば、POPS、IMAPSも利用出来るようになっています。

[root]# /etc/init.d/dovecot restart                                                                
Dovecot Imap を停止中:                                     [  OK  ]
Dovecot Imap を起動中:                                     [  OK  ]

これで、Postfix+Dovecot+OpenLDAPによるメールサーバの構築は終了です。
やっと終わった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>