【メールサーバ】root宛メール

  • root宛メール削除
    「/var/mail/root」と「/var/spool/mail/root」のファイルサイズが増えていたので、
    mailコマンドで確認してみたところ

    sudo -u root mail
    
    No mail for root
    

    メールがないと記載されたが、ファイルサイズがあって気持ち悪いので、
    内容を待避し、削除することにしました。

    cat /var/mail/root > /home/ユーザ名/mail.txt
    cat /dev/null > /var/mail/root
    

    これで「/var/mail/root」と「/var/spool/mail/root」のファイルサイズが0になりました。

  • root宛メール転送
    root宛のメールをPostfixを利用して
    プロバイダのメールアドレスに転送します。

    Postfixのエイリアスの設定場所を確認し、設定値を追加します。

    view /etc/postfix/main.cf
    
    下記内容が設定されていることを確認する。
    alias_maps = hash:/etc/aliases
    
    vi /etc/aliases
    
    下記内容を最終行に追加
    root: プロバイダのメールアドレス
    

    設定内容を反映します。

    postalias /etc/aliases
    /etc/rc.d/init.d/postfix restart
    
  • root宛メール転送確認

    echo test | mail root
    

    「/var/mail/root」と「/var/spool/mail/root」のファイルサイズが0KBのままで
    プロバイダのメールアドレスにテストメールが届きます。

【Java】セッションとクッキーについて

セッションとクッキーについてメモ。

  • クッキーについて

    • 保存場所

      C:\Users\ユーザ名\AppData\Local\Microsoft\Windows\Temporary Internet Files
      
    • ファイル名

      Cookie:ユーザ名@サイト名/
      
    • ブラウザメモリに保存されているクッキーの値が最優先
      ファイルに保存されたクッキーの値を変更しても
      ブラウザを閉じない限り、異なるIEで繋いでもブラウザで取得済の
      ブラウザメモリのクッキーの値を使用する。
      ブラウザを閉じて繋ぎなおすと、ファイルに保存されたクッキーの値を使用する。

      ただしクッキーの値の変更はツールを使用しないと有効にならない。
      手書きで変更しても読み取れずに2番目の動作時にクッキーの値がNULLとなる。

  • セッションについて

    • 保存場所
      ブラウザメモリまたはクッキーのファイルに保存。
      キー名はJSESSIONIDであり、クッキーの値が優先される。
    • セッションハイジャック
      セッションIDはサーバーとやり取りしている中でブラウザが自動でサーバーへ送信しているが、
      下記の記述で明示的に直接指定することも可能。

      変更前
      セッションIDはブラウザメモリまたはクッキーの値を自動でサーバーへ送信

      http://z-area.net/コンテキスト名?request1=test1&request2=test2
      

      変更後
      セッションIDはURLの値をサーバーへ送信

      http://z-area.net/コンテキスト名;jsessionid=12345?request1=test1&request2=test2
      

      12345のセッションIDが正規のユーザのものである場合、
      変更後のリクエストは正常に処理される。

      ログイン画面を表示した時点でセッションIDが採番されるので、
      セッションハイジャックを防ぐにはログイン成功後にセッションIDを採番し直す。

  • ツール
    クッキー書き換え:IECookiesView(日本語化可能)
    HTTP情報参照:ieHTTPHeaders

【APサーバ】Tomcat削除

Tomcatが停止できない原因はファイアウォールだったわけですが、
原因特定前にTomcatを再インストールしたので、
Tomcatの削除手順を記載しておきます。

  • Tomcat停止

    ps -ef | grep java
    

    Tomcatが起動していないことを確認。
    Tomcatが起動している場合、停止する。

    sudo -u tomcat /usr/local/tomcat/bin/shutdown.sh
    
  • Tomcat自動起動の停止

    chkconfig --list | grep tomcat
    

    Tomcatが自動起動になっている場合、停止および削除する。

    sudo chkconfig tomcat off
    chkconfig --del tomcat
    
  • Tomcat削除

    • yumでインストールしている場合

      yum list installed | grep tomcat
      

      yumでインストールしたアプリ名を確認し、removeで削除していく。

      sudo yum remove -y 上記で出力されたアプリ名
      
    • 手動でインストールしている場合(私の場合はこちら)

      rm -f /usr/local/tomcat
      rm -fr /usr/local/apache-tomcat-7.0.50
      

【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ディレクトリを作成できる手順もあるようですが、
    自身で作成したいので設定は行いませんでした。