【APサーバ】Tomcat停止時にエラー

  • Tomcat停止時エラー
    Apache2とTomcat連携をしてからか、
    MyDNSの設定を変更してからか不明ですが、
    Tomcat停止時に下記エラーが発生しました。

    重大: Catalina.stop:
    java.net.NoRouteToHostException: ホストへの経路がありません
    
    重大: Catalina.stop:
    java.net.ConnectException: 接続を拒否されました
    
  • ファイアウォールの設定見直し
    ルーティング系のエラーはファイアウォールが一番怪しいので、調べてみると
    Tomcat停止時は8005番ポートを利用しているようなので、iptablesの設定を変更します。
    内部の話なのでルーターの設定は変更していません。

    iptables -L --line-numbers
    iptables -I INPUT 9 -p tcp -m tcp --dport 8005 -j ACCEPT
    service iptables save
    

【メールサーバ】PostfixとDovecotの設定値まとめ

  • Postfix設定値一覧

    postconf
    

    Postfixに関わる全ての設定値が出力されます。

  • Postfixデフォルト値一覧

    postconf -d
    

    Postfixに関わる全てのデフォルト値が出力されます。

  • Postfixデフォルトと異なる値一覧

    postconf -n
    

    Postfixに関わる全てのデフォルト値と異なる値が出力されます。
    設定した覚えないのないキーと値も出ますが、そういうものだと思い込みました。

  • Dovecotデフォルトと異なる値一覧

    dovecot -n
    

    Dovecotに関わる全てのデフォルト値と異なる値が出力されます。

【メールサーバ】PostfixとDovecotのSSL導入

  • サーバー証明書作成

    cd /etc/pki/tls/certs/
    make mail.pem
    
    下記内容を入力
    ~略~
    Country Name (2 letter code) [XX]:JP
    State or Province Name (full name) []:Tokyo
    Locality Name (eg, city) [Default City]:Akihabara
    Organization Name (eg, company) [Default Company Ltd]:OreOreCA
    Organizational Unit Name (eg, section) []:
    Common Name (eg, your name or your server's hostname) []:mail.z-area.net
    Email Address []:ユーザ名@mail.z-area.net
    
  • Postfix設定(SSL)

    vi /etc/postfix/main.cf
    
    下記内容を最終行に追加
    smtpd_use_tls = yes
    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:/var/lib/postfix/smtpd_scache
    
    cp -pi /etc/postfix/master.cf /etc/postfix/master.cf.org
    vi /etc/postfix/master.cf
    
    下記内容を変更(コメントアウトを外す)
    #smtps     inet  n       -       n       -       -       smtpd
    #  -o smtpd_tls_wrappermode=yes
    #  -o smtpd_sasl_auth_enable=yes
    #  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    ↓
    smtps     inet  n       -       n       -       -       smtpd
      -o smtpd_tls_wrappermode=yes
      -o smtpd_sasl_auth_enable=yes
      -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    
    下記内容がコメントアウトされていないことを確認
    tlsmgr    unix  -       -       n       1000?   1       tlsmgr
    
    /etc/rc.d/init.d/postfix restart
    
  • Dovecot設定(SSL)

    cp -pi /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.org
    vi /etc/dovecot/conf.d/10-ssl.conf
    
    下記内容を変更(<が必要な点に注意)
    #ssl = yes
    ↓
    ssl = yes
    
    ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
    ssl_key = </etc/pki/dovecot/private/dovecot.pem
    ↓
    ssl_cert = </etc/pki/tls/certs/mail.pem
    ssl_key = </etc/pki/tls/certs/mail.pem
    
    /etc/rc.d/init.d/dovecot restart
    
  • ポート開放と閉鎖

    SMTP(SSL)では465番ポートを利用し、
    POP(SSL)では995番ポート、IMAP(SSL)では993番ポートを利用するため、
    利用状況に合わせてポートを開放します。

    POPで利用していた110番ポートは閉じました。
    SMTPで利用していた25番ポートは閉じた場合、
    メール受信の制限確認等で利用しているようで、
    閉じると外部からメールが届かなくなったため、開放したままにしています。
    内部から内部へは閉じてても届くので、その辺は調査しないと不明です。

    iptables -I INPUT 8 -p tcp -m tcp --dport 465 -j ACCEPT
    iptables -I INPUT 9 -p tcp -m tcp --dport 995 -j ACCEPT
    iptables -D INPUT -p tcp -m tcp --dport 110 -j ACCEPT
    service iptables save
    
    iptables -L --line-numbers
    
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source    destination
    1    ACCEPT     all  --  anywhere  anywhere     state RELATED,ESTABLISHED
    2    ACCEPT     icmp --  anywhere  anywhere
    3    ACCEPT     tcp  --  anywhere  anywhere     state NEW tcp dpt:ssh
    4    ACCEPT     tcp  --  anywhere  anywhere     tcp dpt:http
    5    ACCEPT     tcp  --  anywhere  anywhere     tcp dpt:https
    6    ACCEPT     tcp  --  anywhere  anywhere     tcp dpt:urd
    7    ACCEPT     tcp  --  anywhere  anywhere     tcp dpt:pop3s
    8    REJECT     all  --  anywhere  anywhere     reject-with icmp-host-prohibited
    
  • メーラーの設定

    • 詳細設定タブ

【メールサーバ】PostfixとDovecot起動

  • Postfix起動

    /etc/rc.d/init.d/postfix restart
    chkconfig postfix on
    
  • Dovecot起動

    /etc/rc.d/init.d/dovecot start
    chkconfig dovecot on
    
  • PostfixとDovecotの動作確認
    動作確認にはWindowsLiveメールを利用しました。
    初回起動するとアカウントの追加が立ち上がりますが、ここでは一旦適当に入力します。
    次に追加されたアカウントを右クリックからプロパティを選択。
    下記の通りに入力します。
    特に記載のない項目はデフォルト設定としています。

    • 全般タブ
    • サーバータブ

      注意点として受信メールサーバーのパスワードは
      ユーザー名に合致するLinuxのパスワードを入力します。
      (SMTP-Authは送信用のため)
    • サーバータブの送信メールサーバーの設定ボタン

      注意点として送信メールサーバーのパスワードは
      SMTP-Authの設定で設定したパスワードを入力します。

    設定が完了したら下記内容を確認します。

    ローカルLANで同一ユーザ同士でメールの送受信
    ローカルLANで他ユーザ間でメールの送受信
    ローカルLANで外部(プロバイダやgmail)との送受信
    ローカルLANで携帯との送受信
    外部LAN(会社や公衆LAN)で同一ユーザ同士でメールの送受信
    外部LAN(会社や公衆LAN)で他ユーザ間でメールの送受信
    外部LAN(会社や公衆LAN)で外部(プロバイダやgmail)との送受信
    外部LAN(会社や公衆LAN)で携帯との送受信
    

    外部LANでの確認は後述するOpenSSLの適用を行ってから実施します。

  • 踏み台確認
    自宅メールサーバーが第三者中継に利用されない設定になっているかを確認します。
    下記サイト説明を読んだ上で利用します。
    http://www.rbl.jp/svcheck.php

    19個前後のテストが実施され、下記内容が出力されれば問題ありません。

    第三者中継テストの結果
    全てのテストが行われました, no relays accepted.
    

【メールサーバ】メール利用のポート開放

  • ポート開放
    ルーターの設定で25番ポート(SMTP用)と
    110番ポート(POP用)または143番ポート(IMAP用)を開放し、
    iptablesでも上記ポートを開放します。

    iptables -L --line-numbers
    
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source    destination
    1    ACCEPT     all  --  anywhere  anywhere     state RELATED,ESTABLISHED
    2    ACCEPT     icmp --  anywhere  anywhere
    3    ACCEPT     tcp  --  anywhere  anywhere     state NEW tcp dpt:ssh
    4    ACCEPT     tcp  --  anywhere  anywhere     tcp dpt:http
    5    ACCEPT     tcp  --  anywhere  anywhere     tcp dpt:https
    6    REJECT     all  --  anywhere  anywhere     reject-with icmp-host-prohibited
    

    5番目と6番目の間にメール用のポートを設定します。

    iptables -I INPUT 6 -p tcp -m tcp --dport 25 -j ACCEPT
    iptables -I INPUT 7 -p tcp -m tcp --dport 110 -j ACCEPT
    service iptables save
    
    iptables -L --line-numbers
    
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source    destination
    1    ACCEPT     all  --  anywhere  anywhere     state RELATED,ESTABLISHED
    2    ACCEPT     icmp --  anywhere  anywhere
    3    ACCEPT     tcp  --  anywhere  anywhere     state NEW tcp dpt:ssh
    4    ACCEPT     tcp  --  anywhere  anywhere     tcp dpt:http
    5    ACCEPT     tcp  --  anywhere  anywhere     tcp dpt:https
    6    ACCEPT     tcp  --  anywhere  anywhere     tcp dpt:smtp
    7    ACCEPT     tcp  --  anywhere  anywhere     tcp dpt:pop3
    8    REJECT     all  --  anywhere  anywhere     reject-with icmp-host-prohibited
    

    下記サイトでポートの開放を確認します。
    http://www.cman.jp/network/support/port.html

【メールサーバ】メール用のFQDN追加

  • FQDN設定
    メール用のFQDNとして「mail.z-area.net」を追加するため、
    MyDNSに設定を行います。
    MyDNSにログイン後、左メニューの「DOMAIN INFO」をクリックし、
    下記に従い入力します。

    Domain* : (FQDN)
    z-area.net
    
    MX : (Hostname, Priority. FQDN)
    空欄
    
    Hostname*, Type*, Content, Delegateid or your id. (Hostname is not FQDN)
    mail, A, 空欄, mydnsXXXXXX
    www, A, 空欄, mydnsXXXXXX
    

    CHECKボタンを押下します。

  • MXの設定について追記
    MyDNSのMXの設定について他の構築サイトを確認すると
    「mail」を設定している人が多かったですが、私の場合は「mail」を設定すると、
    メールが「ユーザ名@mail.z-area.net」であれば外部とも送受信可能ですが、
    「ユーザ名@z-area.net」では外部から受信出来ませんでした。

    そこでMXを空欄で設定したところ、
    メールが「ユーザ名@z-area.net」でも外部から送受信することができました。
    要勉強です。

    MXを空欄で設定した後に再度、設定画面を開くと下記の通りになっていました。

    Domain* : (FQDN)
    z-area.net
    
    MX : (Hostname, Priority. FQDN)
    z-area.net
    
    Hostname*, Type*, Content, Delegateid or your id. (Hostname is not FQDN)
    mail, A, 空欄, mydnsXXXXXX
    www, A, 空欄, mydnsXXXXXX
    

【メールサーバ】メール利用のユーザ追加

メールを利用するユーザを追加します。

  • 既存ユーザにメール利用させる場合
    「【CentOS】Postfix設定その2(SMTP-Auth)」の下記どちらかの対応を行う。
    Linuxのパスワードと同じパスワード利用する場合
    Linuxのパスワードと異なるパスワード利用する場合
  • 新規ユーザにメール利用させる場合(SSHも利用可)

    useradd ユーザ名
    passwd ユーザー名
    

    「【CentOS】Postfix設定その2(SMTP-Auth)」の下記どちらかの対応を行う。
    Linuxのパスワードと同じパスワード利用する場合
    Linuxのパスワードと異なるパスワード利用する場合

  • 新規ユーザにメール利用させる場合(SSHも利用不可)

    useradd -s /sbin/nologin ユーザ名
    passwd ユーザ名
    

    「【CentOS】Postfix設定その2(SMTP-Auth)」の下記どちらかの対応を行う。
    Linuxのパスワードと同じパスワード利用する場合
    Linuxのパスワードと異なるパスワード利用する場合

  • Maildirディレクトリ作成
    Maildirディレクトリを作成します。

    mkdir /home/ユーザ名/Maildir
    chmod 700 /home/ユーザ名/Maildir
    chown ユーザ名:ユーザ名 /home/ユーザ名/Maildir
    

    新規ユーザ追加時に自動的にMaildirディレクトリを作成できる手順もあるようですが、
    自身で作成したいので設定は行いませんでした。

【メールサーバ】Dovecot設定

  • Dovecot設定

    vi /etc/dovecot/dovecot.conf
    
    下記内容を変更
    #protocols = imap pop3 lmtp
    ↓
    protocols = imap pop3
    
    cp -pi /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.org
    vi /etc/dovecot/conf.d/10-mail.conf
    
    下記内容を追加
    # メールボックス形式
    # Postfixの設定でメールボックスの形式をMaildir形式にしているため、
    # Dovecotの設定でもMaildir形式に変更します。
    mail_location = maildir:~/Maildir
    
    # chroot設定
    # 通常ユーザであれば「/home/ユーザ名」以下のディレクトリはアクセスできますが、
    # 上位ディレクトリである「/home」ディレクトリはroot所有者であるため、
    # アクセスが禁止されています。
    # しかし、メールボックスは「/home/ユーザ名/Maildir」に配置しているため、
    # この設定で一時的にアクセスを許可します。
    valid_chroot_dirs = /home
    
    cp -pi /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.org
    vi /etc/dovecot/conf.d/10-auth.conf
    
    下記内容を変更
    # テキスト認証を許可
    # この設定を利用する場合、後述するOpenSSLでのメールサーバー間の通信内容暗号化を行う。
    disable_plaintext_auth = yes
    ↓
    disable_plaintext_auth = no
    
    auth_mechanisms = plain
    ↓
    auth_mechanisms = plain login
    

【メールサーバ】Dovecot導入

受信ではPOPまたはIMAPを利用するので、Dovecotを導入します。

  • Dovecotの導入確認

    yum list installed | grep dovecot
    
    dovecot.x86_64       1:2.0.9-8.el6_6.1  @updates
    
  • Dovecotの導入
    インストール済ではない場合は下記コマンドでインストールします。

    yum -y install dovecot
    

【メールサーバ】Postfix設定その4(OP25B対策MyDNS利用)

  • Postfix設定(OP25B対策MyDNS利用)

    BIGLOBEのメール中継が利用できないため、MyDNSのメール中継を利用します。
    利用の前提条件はグローバルIPアドレスとドメインの紐付をMyDNSで実施していることです。

    vi /etc/postfix/main.cf
    
    下記内容を追加
    ####################################################################
    # OP25B対策(MyDNS用設定)
    # smtp :他のSMTPメールサーバに接続しに行くときのクライアントとしての設定
    ####################################################################
    
    # ISPのSMTPメールサーバー名を指定
    # プロバイダのメールサーバーから送信するメールはOP25Bの影響は受けないため、
    # 全ての送信メールをプロバイダのメールサーバーを経由するようにする。
    relayhost = [auth.gate-on.net]:587
    

    BIGLOBE用設定では設定していた「smtp_sasl_auth_enable」や
    「smtp_sasl_password_maps」の設定は不要になります。
    理由はグローバルIPとドメインの変換を行う上でユーザ情報を通知済だからのようです。

    メール中継用設定も不要となるため、
    パスワードを記載したファイルを作成している場合、削除しておきます。

    rm /etc/postfix/sasl_passwd