-
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
【メールサーバ】Postfix設定その3(OP25B対策BIGLOBE利用)
-
Postfix設定(OP25B対策BIGLOBE利用)
自宅ネットワークに設置したSMTPサーバーが外部へメール送信する際、
25番ポートを利用しますが、ISPがOP25B(Outbound Port 25 Blocking)対策を行っている場合、メール送信ができません。
そこで外部のSMTPサーバーのうち、587番ポートで送信してくれるサーバーを中継してメールを送信を行います。下記内容はBIGLOBE用ですが、gmailを中継する場合、「relayhost」の値は
「smtp-relay.gmail.com:25」に変更します。
後はgmail側の設定として下記サポートサイトに従ってください。
https://support.google.com/a/answer/2956491?hl=javi /etc/postfix/main.cf
下記内容を追加 #################################################################### # OP25B対策(BIGLOBE用設定) # smtp :他のSMTPメールサーバに接続しに行くときのクライアントとしての設定 #################################################################### # ISPのSMTPメールサーバー名を指定 # プロバイダのメールサーバーから送信するメールはOP25Bの影響は受けないため、 # 全ての送信メールをプロバイダのメールサーバーを経由するようにする。 relayhost = [msagw.biglobe.ne.jp]:25 # プロバイダのメールサーバーにSMTPで接続 smtp_sasl_auth_enable = yes # SMTP認証情報設定ファイルパス smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd # プロバイダのSMTPメールサーバーが対応している認証方式(例:LOGIN, CRAM-MD5, PLAIN) smtp_sasl_mechanism_filter = cram-md5, login, plain # 匿名ログイン不許可(クライアントとしての設定) smtp_sasl_tls_security_options = noanonymous
-
メール中継用設定
vi /etc/postfix/sasl_passwd
下記内容を追加([]も必要です) [SMTPメールサーバー名]:587 ユーザー名:パスワード SMTPメールサーバー名:中継先のSMTPメールサーバー名 ユーザー名:中継先のメールアカウント名 パスワード:中継先のメールパスワード
chmod 640 /etc/postfix/sasl_passwd postmap /etc/postfix/sasl_passwd
-
残念なお知らせ
BIGLOBEは2014年3月にメール中継のサポートを切ったようです。
そのため上記設定を行っても送信できません。
ログを確認してみると下記内容が出力されています。cat /var/log/maillog
status=deferred (SASL authentication failed; cannot authenticate to server msagw.biglobe.ne.jp[xxx.xxx.xxx.xxx]: no mechanism available) warning: database /etc/postfix/sasl_passwd.db is older than source file /etc/postfix/sasl_passwd warning: SASL authentication failure: No worthy mechs found
中継メールサーバーとしてgmailを利用しようかと思いましたが、
一番簡単そうなMyDNSを利用します。
【メールサーバ】Postfix設定その2(SMTP-Auth)
-
Postfix設定(SMTP-Auth)(自宅サーバ設定)
メール送信時にユーザ名とパスワードで認証を行えるよう設定します。vi /etc/postfix/main.cf
下記内容を追加 ######################################################### # SMTP-Auth設定(自宅サーバ設定) # smtpd:SMTPメールサーバとして他からの接続を受ける時の設定 ######################################################### # SMPTPメールサーバとして他から接続 smtpd_sasl_auth_enable = yes # 匿名ログイン不許可 smtpd_sasl_security_options = noanonymous # ローカル認証 realm の名前を設定 # myoriginの設定と同一にする。 smtpd_sasl_local_domain = $myhostname # メールの中継機能設定 # permit_mynetworks:自サイトのネットワークからの接続を無条件で許可 # 下記パラメータに設定されているアドレス宛ての場合は許可 # mydestination # inet_interfaces # virtual_alias_domains # virtual_mailbox_domains # relay_domains # permit_sasl_authenticated:SMTP認証された接続を無条件で許可 # reject_unauth_destination:上記以外は拒否 smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
-
Linuxのパスワードと同じパスワード利用する場合
-
設定ファイルの設定内容確認
cp -pi /etc/sasl2/smtpd.conf /etc/sasl2/smtpd.conf.org vi /etc/sasl2/smtpd.conf
下記内容が設定されていることを確認 pwcheck_method: saslauthd mech_list: plain login
cat /etc/sysconfig/saslauthd
下記内容が設定されていることを確認 MECH=pam
-
saslauthd起動設定
saslauthdを起動し、自動起動設定にしておきます。/etc/rc.d/init.d/saslauthd start chkconfig saslauthd on
-
設定ファイルの設定内容確認
-
Linuxのパスワードと異なるパスワード利用する場合
-
設定ファイルの設定内容変更
cp -pi /etc/sasl2/smtpd.conf /etc/sasl2/smtpd.conf.org vi /etc/sasl2/smtpd.conf
下記内容を変更 pwcheck_method: saslauthd ↓ pwcheck_method: auxprop mech_list: plain login ↓ # mech_list: plain login
-
SMTP-Auth(送信承認)用のパスワード設定
saslpasswd2 -u mail.z-area.net -c ユーザー名 Password:パスワード Again (for verification):パスワード
mail.z-area.netはz-area.netではNGです。
「/etc/postfix/main.cf」の「myhostname」と同値を設定します。設定した内容を確認します。
sasldblistusers2 ユーザ名@mail.z-area.net: userPassword
Postfixが上記で作成したユーザー名とパスワードの紐付ファイルに
アクセスできるようにパーミッションを変更します。chmod 640 /etc/sasldb2 chgrp postfix /etc/sasldb2
-
SMTP-Auth(送信承認)用の設定内容削除
ユーザを削除する場合は下記コマンドを実行します。saslpasswd2 -d ユーザー名 -u mail.z-area.net
-
saslauthd起動設定
saslauthdが起動していたら停止し、
自動起動設定になっていたら削除しておきます。/etc/rc.d/init.d/saslauthd stop chkconfig --del saslauthd
-
設定ファイルの設定内容変更
【メールサーバ】Postfix設定その1(基本)
-
Postfix設定(基本)
cp -pi /etc/postfix/main.cf /etc/postfix/main.cf.org vi /etc/postfix/main.cf
下記内容を追加 # 自FQDN名を指定 # hostnameコマンドの戻り値を設定する。 # 私の環境では「z-area.net」になるが、1つのサーバで # 複数の機能(ウェブサーバ、メールサーバ)を持っている場合、 # OSのホスト名は利用できないため、先頭にmailをつけました。 myhostname = mail.z-area.net # 自ドメイン名を指定 # 上記のmyhostnameの先頭mailを削除した値を設定する。 mydomain = z-area.net # メール送信時の送信元メールアドレス@以降にドメイン名を付加 # Postfixの機能でOSユーザ名のみを宛先に指定した場合、@以降を自動で補完する。 myorigin = $mydomain # メールボックス形式をMaildir形式 home_mailbox = Maildir/ # メールサーバーソフト名の隠蔽化 smtpd_banner = $myhostname ESMTP unknown # 受信メールサイズ制限 message_size_limit = 10485760 # SMTPのVRFYコマンドを使用禁止 # VRFYはアカウントが実在するか確認するコマンドで、 # でたらめなユーザ問い合わせを行う悪質なプログラムによりアカウント流出を防ぐ。 disable_vrfy_command = yes # sasl認証に対応していないメーラーを拒否 broken_sasl_auth_clients = yes
下記内容を変更 # 外部からのメール受信を許可 # 127.0.0.1を指定するとローカルから外部への配送のみ許可 inet_interfaces = localhost ↓ inet_interfaces = all # 自ドメイン宛メールを受信許可 mydestination = $myhostname, localhost.$mydomain, localhost ↓ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
【メールサーバ】Postfix導入
メールサーバを構築します。
メールのプロトコルは主に3種類。
SMTP:Simple Mail Transfer Protocol メールサーバが電子メールを他のサーバへ送信したり、受信するためのプロトコル POP:Post Office Protocol メールサーバ内のメールスプールに含まれているメッセージを受信したり削除するためのプロトコル IMAP:Internet Message Access Protocol メールスプールのメッセージに対して、移動や検索等を行うプロトコル
送信ではSMTPを利用するので、Postfixを導入します。
-
Postfixの導入確認
yum list installed | grep postfix
postfix.x86_64 2:2.6.6-6.el6_5 @updates
postconf mail_version
mail_version = 2.6.6
-
Postfixの導入
インストール済ではない場合は下記コマンドでインストールします。yum -y install postfix
sendmailがインストールされている場合、起動を止めておきます。
/etc/rc.d/init.d/sendmail stop chkconfig --del sendmail
-
Postfixの導入確認(SMTP-Auth)
SMTP-Authとはメール送信時にユーザ名とパスワードで認証を行う機能です。yum list installed | grep cyrus-sasl
cyrus-sasl.x86_64 2.1.23-15.el6_6.1 @updates cyrus-sasl-lib.x86_64 cyrus-sasl-plain.x86_64
-
Postfixの導入(SMTP-Auth)
インストール済ではない場合は下記コマンドでインストールします。yum -y install cyrus-sasl
【VPNサーバ】OpenVPN導入その5
ASUSのタブレットを購入したので、こちらにもOpenVPNを導入します。
-
OpenVPN設定(クライアント用の証明書と鍵作成(追加))
RaspberryPiでタブレット用の証明書と鍵を作成します。cd /etc/openvpn/easy-rsa source ./vars ./build-key クライアント名(タブレット)
作成した証明書や鍵のうち、
クライアントで利用する下記ファイルをWindowsにUSB等で持ってきて、設定を行います。ca.crt クライアント名(タブレット).crt クライアント(タブレット).key ta.key(iPhone優先のため、利用していませんが、一応)
-
クライアント設定ファイル(タブレット用)
クライアント設定ファイルとして「クライアント名(タブレット).ovpn」ファイルを作成します。
設定内容は「OpenVPN導入その3」の設定値と全く一緒です。
-
はまったこと
タブレットにOpenVPNをインストールするとデスクトップに「OpenVPN GUI」の
ショートカットが作成されるので、ダブルクリックして実行し、接続します。
単純に実行するとOpenVPNには接続し、IPが割り振られますが、
OpenVPN内の他のクライアントに接続できませんでした。
pingももちろん飛びません。ipv6が悪さをしているのかと色々勘ぐりましたが、
ちゃんとクライアント側のログを見てみると下記エラーが出力されていました。ROUTE: route addition failed using CreateIpForwardEntry: アクセスが拒否されました。[status=5 if_index=12] Route addition via IPAPI failed [adaptive] Route addition fallback to route.exe env_block: add PATH=C:\Windows\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem ERROR: Windows route add command failed [adaptive]: returned error code 1
Cドライブ内のexeファイルを実行できていないようです。
これを解決するには「OpenVPN GUI」のショートカットを
常に管理者権限で実行する必要があります。「OpenVPN GUI」のショートカットを右クリックからプロパティを開き、
「互換性」タブの「管理者としてこのプログラムを実行する」のチェックボックスをチェックします。
これで無事、OpenVPN内のクライアントにも接続できました。
【APサーバ】warファイル配置
-
Tomcat設定ファイルの内容確認
/usr/local/tomcat/conf/server.xml
# 下記内容が設定されていることを確認 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
warファイルは「/usr/local/tomcat/webapps」に配置します。
上記設定内容がtrueになっていると、
配置した瞬間にTomcatの起動中にもかかわらず、同階層に自動で展開されます。
-
Apache2とTomcatの連携設定追加
WebアプリのURLが「http://z-area.net/コンテキスト名/」である場合、
ポート番号を指定せずに接続するための設定を追加します。vi /etc/httpd/conf/httpd.conf
下記を最終行に追加 <Location /コンテキスト名/> ProxyPass ajp://localhost:8009/コンテキスト名/ allow from all </Location>
【APサーバ】Apache2とTomcat連携
ポート番号を指定せずにTomcatにアクセスします。
-
Tomcat側の設定
vi /usr/local/tomcat/conf/server.xml
下記をコメントアウト <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 下記がコメントアウトされていないことを確認 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-
Apache2側の設定
vi /etc/httpd/conf/httpd.conf
下記がコメントアウトされていないことを確認 LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 下記を最終行に追加 <Location /examples/servlets/> ProxyPass ajp://localhost:8009/examples/servlets/ allow from all </Location>
-
Apache2とTomcatの連携動作確認
/etc/rc.d/init.d/httpd stop sudo -u tomcat /usr/local/tomcat/bin/shutdown.sh sudo -u tomcat /usr/local/tomcat/bin/startup.sh /etc/rc.d/init.d/httpd start /etc/rc.d/init.d/iptables start
http://z-area.net/examples/servlets/
ポート指定なしで繋がるようになるため、iptablesは有効のままにしておきます。
【APサーバ】Tomcat導入
-
Tomcat専用ユーザ作成
useradd -s /sbin/nologin tomcat
/sbin/nologinシェルを指定し、通常利用不可とする。
-
Tomcat導入
バージョンは「apache-tomcat-7.0.50.tar.gz」にしました。
サーバーに配置しておきます。tar xvzf apache-tomcat-7.0.50.tar.gz mv apache-tomcat-7.0.50 /usr/local cd /usr/local chown -R tomcat.tomcat apache-tomcat-7.0.50 ln -s apache-tomcat-7.0.50 tomcat
-
環境変数の設定
下記3つのうちのどれかに記載します。
【共通設定】 /etc/profile 「JAVA_HOME」や「CATALINA_HOME」の値を設定する。 【環境変数設定】 $CATALINA_HOME/bin/setenv.sh 「JAVA_OPTS」や「CATALINA_OPTS」の値を設定する。 【クラスパス設定】 $CATALINA_HOME/bin/setclasspath.sh 追加のjarファイル等を設定する。
vi /etc/profile
今回は共通設定に追加します。
下記を最終行に追加 export JAVA_HOME=/usr/lib/jvm/java export CATALINA_HOME=/usr/local/tomcat
環境変数を適用しておきます。
source /etc/profile
-
Tomcat起動確認
/etc/rc.d/init.d/iptables stop sudo -u tomcat /usr/local/tomcat/bin/startup.sh
http://z-area.net:8080/examples/servlets/
「Servlet Examples with Code」の画面が出れば成功です。
併せてrootユーザではなくtomcatユーザで動作していることを確認します。ps -ef | grep tomcat
tomcat プロセスID 親プロセスID プロセッサ使用率 プロセスの起動時刻 制御端末 累積時間 略
startup.shはrootユーザで実行しないこと。
初回でrootユーザで実行するとログファイルがrootユーザで作成されてしまい、
tomcat専用ユーザでstartup.shを実行しても権限がないと言われてしまうので、
そうなった場合、1度ログを削除すれば問題なし。起動確認ができたのでTomcat停止し、iptablesを有効にしておきます。
sudo -u tomcat /usr/local/tomcat/bin/shutdown.sh /etc/rc.d/init.d/iptables start
【APサーバ】Java導入
-
Java導入
yum search openjdk
読み込んだプラグイン:downloadonly, fastestmirror, security 略 ============================= N/S Matched: openjdk ============================= java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment java-1.8.0-openjdk-headless.x86_64 : OpenJDK Runtime Environment java-1.8.0-openjdk-javadoc.noarch : OpenJDK API Documentation java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle 略
今回はJDK1.7を導入します。
yum install java-1.7.0-openjdk-devel
依存性関連をインストールしました: flac.x86_64 0:1.2.1-6.1.el6 giflib.x86_64 0:4.1.6-3.1.el6 略 xorg-x11-fonts-Type1.noarch 0:7.2-9.1.el6 完了しました!
-
Java導入確認
java -version
java version "1.7.0_71" OpenJDK Runtime Environment (rhel-2.5.3.1.el6-x86_64 u71-b14) OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
-
JavaHOMEの設定
JAVA_HOMEを設定する場合は下記パスを設定する。
Tomcat導入のエントリーで一緒に設定するので、ここでは省略。/usr/lib/jvm/java
上記はシンボリックリンクになっており、
実体は下記パスを参照している。/etc/alternatives/java_sdk
さらに「java_sdk」もシンボリックリンクになっており、
実体は下記パスを参照している。/usr/lib/jvm/java-1.7.0-openjdk.x86_64
さらにさらに「java-1.7.0-openjdk.x86_64」もシンボリックリンクになっており、
実体は下記パスを参照している。/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64
こんな回りくどいことになっているのは
Javaは1つのOSに複数バージョン混在できる可能性があるため。「alternatives」コマンドで利用したいJavaバージョンを変更できるようになっており、
いちいちJAVA_HOMEの変更、アンインストール、インストールをせずに
シンボリックリンクの参照だけを変更してくれているようです。