﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux  |  Web Creators Hub</title>
	<atom:link href="https://web-creators-hub.com/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>https://web-creators-hub.com</link>
	<description>WEB技術などの情報をわかりやすく配信するメディア</description>
	<lastBuildDate>Wed, 08 Feb 2023 01:56:31 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.8.2</generator>
	<item>
		<title>Postfix + dovecot バーチャルメールボックスの設定を深堀する</title>
		<link>https://web-creators-hub.com/linux/postfix3/</link>
		<pubDate>Sat, 01 Feb 2020 14:27:09 +0000</pubDate>
		<dc:creator><![CDATA[taizo]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Postfix]]></category>

		<guid isPermaLink="false">https://web-creators-hub.com/?p=607</guid>
		<description><![CDATA[メールサーバは、配送先を1つのドメインのみ設定できるのではなく、複数のドメインを配送先として設定できます。指定された配送先のドメインをどのよ...]]></description>
				<content:encoded><![CDATA[<p>メールサーバは、配送先を1つのドメインのみ設定できるのではなく、複数のドメインを配送先として設定できます。指定された配送先のドメインをどのように仕分けを行うかはいろいろな方法が用意されています。</p>
<p>&nbsp;</p>
<h2>前提</h2>
<p>前提としてメール保管形式は、Maildir形式にします。Postfixとdovecotの設定は、以下に設定してください。</p>
<p><a href="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix4.png"><img src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix4.png" alt="" width="920" height="426" class="alignnone size-full wp-image-352" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix4.png 920w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix4-300x139.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix4-768x356.png 768w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix4-320x148.png 320w" sizes="(max-width: 920px) 100vw, 920px" /></a></p>
<p>&nbsp;</p>
<h3>Postfix　Maildir形式の設定</h3>
<pre class="brush: bash; title: ; notranslate">
vi /etc/postfix/main.cf
</pre>
<pre class="brush: bash; title: ; notranslate">
#MailDir形式に設定
home_mailbox = Maildir/
</pre>
<p>設定の反映は、Postfixを再起動してください。</p>
<p>&nbsp;</p>
<h3>dovecot　Maildir形式の設定</h3>
<p>まずdovecotのインストールします。すでにインストールされている場合は、飛ばしてください。</p>
<pre class="brush: bash; title: ; notranslate">
yum install dovecot
</pre>
<p>以下Maildir形式の設定です。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/dovecot/conf.d/10-mail.conf
</pre>
<pre class="brush: bash; title: ; notranslate">
mail_location = maildir:~/Maildir
</pre>
<p>設定の反映は、dovecotを再起動してください。</p>
<p>&nbsp;</p>
<h2>バーチャルメールボックスを設定する方法</h2>
<p>バーチャルメールボックスを実現する方法は、3つあります。それは、<span class="marker-under">mydestinationを利用する方法、バーチャルエイリアスを利用する方法、バーチャルメールボックスを利用する方法</span>です。</p>
<p>&nbsp;</p>
<h2>mydestinationを利用した場合</h2>
<p>mydestinationは、宛先、行先を意味しここにドメインを設定するとメールの宛先を見て、設定されているドメインの場合、自サーバに配送されます。ここからどのユーザーに配送するか仕分けします。仕分けは、ドメインを完全に無視しユーザー名のみで仕分けされます。ユーザーは、Linuxで設定されているユーザーのメールボックスに配送されます。</p>
<p><a href="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix3.png"><img class="alignnone size-full wp-image-351" src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix3.png" alt="" width="775" height="367" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix3.png 775w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix3-300x142.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix3-768x364.png 768w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix3-320x152.png 320w" sizes="(max-width: 775px) 100vw, 775px" /></a></p>
<p><a href="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix5.png"><img class="alignnone size-full wp-image-353" src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix5.png" alt="" width="734" height="357" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix5.png 734w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix5-300x146.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix5-320x156.png 320w" sizes="(max-width: 734px) 100vw, 734px" /></a></p>
<p>例としてgmail.comと設定した場合、設定されたサーバから送信すると実際のgmail.com宛には配送されず自サーバに配送されます。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/postfix/main.cf
</pre>
<pre class="brush: bash; title: ; notranslate">
mydestination = $myhostname, localhost.$mydomain, localhost,gmail.com
</pre>
<p>また、後に説明するバーチャルエイリアス、バーチャルメールボックスを設定してもmydestinationで設定したほうが優先され、仕分けもvirtual_alias_maps、virtual_mailbox_mapsで設定していても完全に無視され、Linuxのユーザーに仕分けされるので設定には注意が必要です。</p>
<p>&nbsp;</p>
<h2>バーチャルエイリアスを設定した場合</h2>
<p>バーチャルエイリアスは、宛先のドメインがvirtual_alias_domainsで設定されているものと一致した場合、自サーバに配送されます。そしてvirtual_alias_mapsの記載されている内容を基に仕分けされます。virtual_alias_mapsは、宛先のメールアドレスを基に既存のどのLinuxユーザーに配送するかを記載します。</p>
<p><a href="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix6.png"><img class="alignnone size-full wp-image-354" src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix6.png" alt="" width="734" height="384" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix6.png 734w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix6-300x157.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix6-320x167.png 320w" sizes="(max-width: 734px) 100vw, 734px" /></a></p>
<p>&nbsp;</p>
<h3>Postfixの設定</h3>
<pre class="brush: bash; title: ; notranslate">
vi /etc/postfix/main.cf
</pre>
<pre class="brush: bash; title: ; notranslate">
virtual_alias_domains = hogehoge.com
virtual_alias_maps = hash:/etc/postfix/virtual
</pre>
<p>&nbsp;</p>
<h3>どのユーザーに配送するか設定する</h3>
<pre class="brush: bash; title: ; notranslate">
vi /etc/postfix/virtual
</pre>
<pre class="brush: bash; title: ; notranslate">
#以下のように[ドメイン] anythingを記述したあとメールアドレスとユーザーを関連付ける
hogehoge.com              anything
newname@hogehoge.com      newname
</pre>
<p>hash化されたDBを作成します。以下のコマンドで設定が反映します。</p>
<pre class="brush: bash; title: ; notranslate">
postmap /etc/postfix/virtual
</pre>
<p>宛先のアカウントはadduserで作成しておきます。</p>
<p>&nbsp;</p>
<h2>バーチャルメールボックスを設定した場合</h2>
<p>バーチャルメールボックスは、Linuxのユーザーを使わず独自にユーザーを作成しメールアドレスと関連付けます。Linuxのユーザーと切り分けができるため独立性が高まり、管理もしやすくなります。ユーザーとメールボックスは、Linuxのユーザーを使わないため独自に用意する必要があります。</p>
<p>バーチャルメールボックスは、宛先のドメインがvirtual_mailbox_domainsで設定されているものと一致した場合、自サーバに配送されvirtual_mailbox_mapsの記載されている内容を基に仕分けします。virtual_mailbox_mapsは、宛先のメールアドレス(ユーザー名)を基にどのメールボックスに配送するかを記載します。メールボックスのディレクトリは、virtual_mailbox_baseで設定します。メールボックスのディレクトの権限を持つユーザー、グループは、virtual_uid_maps、virtual_gid_mapsで定義します。</p>
<p><a href="https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/postfix12.png"><img src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/postfix12.png" alt="" width="768" class="alignnone size-full wp-image-661" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/postfix12.png 817w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/postfix12-300x149.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/postfix12-768x383.png 768w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/postfix12-320x159.png 320w" sizes="(max-width: 817px) 100vw, 817px" /></a></p>
<p>&nbsp;</p>
<h3>Postfixの設定</h3>
<pre class="brush: bash; title: ; notranslate">
vi /etc/postfix/main.cf
</pre>
<pre class="brush: bash; title: ; notranslate">
#自サーバに配送するドメイン。複数記述する場合カンマで追加
virtual_mailbox_domains = hogehoge.com
#仕分け時に利用する関連付けファイル
virtual_mailbox_maps = hash:/etc/postfix/vmail
#メールボックスのディレクトの権限を持つユーザーID、グループID
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000
#メールボックスのディレクトリ
virtual_mailbox_base = /var/www/vmailbox
</pre>
<p>&nbsp;</p>
<h3>メールボックスの作成</h3>
<pre class="brush: bash; title: ; notranslate">
#メールボックスのディレクトの権限を持つユーザー、グループを作成
groupadd -g 10000 vmailg
useradd -u 10000 -g vmailg vmail
#バーチャルメールボックスのディレクトリを作成。このディレクトリにユーザーのメールボックスが作成される。
mkdir /var/www/vmailbox
#権限変更
chown -R 10000.10000 /var/www/vmailbox
</pre>
<p>&nbsp;</p>
<h3>どのユーザーに、どこのメールボックスへ配送するか記載する</h3>
<p>ユーザー名と配送先のメールボックスのpathを記入します。ユーザー名はメールアドレスと同一にします。pathは/ドメイン名/@の前のユーザー名/Maildir/にします。これは後に設定するdovecotの設定と合わすためです。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/postfix/vmail
</pre>
<pre class="brush: bash; title: ; notranslate">
test@hogehoge.com      hogehoge.com/test/Maildir/
</pre>
<p>hash化されたDBを作成します。以下のコマンドで設定が反映します。</p>
<pre class="brush: bash; title: ; notranslate">
postmap /etc/postfix/vmail
</pre>
<p>&nbsp;</p>
<h2>バーチャルメールボックスに対応したdovecotの設定</h2>
<p>Postfixの設定で送信されてきたメールは、無事メールボックスに配送されます。しかしユーザーがメーラーでメールを受信するためには、バーチャルメールボックスに対応したdovecotの設定が必要です。</p>
<p>&nbsp;</p>
<h3>バーチャルメールボックスの設定</h3>
<p>dovecotの認証関連の設定を変更します。デフォルトの認証方法は、Linuxのユーザーのみになっているので、dovecotで独自のユーザー情報を利用した認証方法に変更します。このユーザーを利用して先ほど設定したPostfixの設定に対応させます。</p>
<p>dovecotのアカウント情報は、ユーザーDBとパスワードDBで構成されています。DBは、外部のアカウントシステムやファイルを参照することで情報を管理します。今回は、ユーザーDBにstatic(静的にメールボックスのpathを定義)とpasswdfile(認証用ユーザー)、パスワードDBにpasswdfile(認証用ユーザーに対応したパスワード)を使用します。</p>
<p><a href="https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/dovecot_db.png"><img src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/dovecot_db.png" alt="" width="840" height="400" class="alignnone size-full wp-image-662" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/dovecot_db.png 840w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/dovecot_db-300x143.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/dovecot_db-768x366.png 768w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/dovecot_db-320x152.png 320w" sizes="(max-width: 840px) 100vw, 840px" /></a></p>
<p>以下の設定で認証方法を変更します。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/dovecot/conf.d/10-auth.conf
</pre>
<pre class="brush: bash; title: ; notranslate">
#!include auth-deny.conf.ext
#!include auth-master.conf.ext
#認証時のパスフレーズの送信方法を指定。デフォルトは plain。
auth_mechanisms = cram-md5 plain login
#Linuxのアカウントを使って認証を使用する。使わない場合はコメントアウトする。
!include auth-system.conf.ext
#!include auth-sql.conf.ext
#!include auth-ldap.conf.ext
#Dovecotの認証データベースを使用する。#を外す
!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#静的なPathを設定するデータベースを使用する。#を外す。この設定でPostfixのメールボックスに対応させる。
!include auth-static.conf.ext
</pre>
<p>&nbsp;</p>
<h3>dovecot独自のユーザーを設定する</h3>
<p>以下の設定で独自のユーザー情報が記載されたファイルを定義します。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/dovecot/conf.d/auth-passwdfile.conf.ext
</pre>
<pre class="brush: bash; title: ; notranslate">
passdb {
  driver = passwd-file
  #args = scheme=CRYPT username_format=%u /etc/dovecot/users
  args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/passwd
}

userdb {
  driver = passwd-file
  #args = username_format=%u /etc/dovecot/users
  args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/passwd
}
</pre>
<p>次は、ユーザーに設定するパスワードを先に作成します。</p>
<pre class="brush: bash; title: ; notranslate">
#パスワード生成コマンド
doveadm pw
Enter new password:←パスワードを入力
Retype new password:←再度パスワードを入力
#生成されたパスワードは後に貼り付けるのでコピーする
{CRAM-MD5}fe8522268d91e485ccac8f36800e4fa6b10363e2a371....
</pre>
<p>最後にユーザーを作成します。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/dovecot/passwd
</pre>
<p>ユーザー名は、必ずメールアドレスと同一にします。これは、userdbで「username_format=%u」と設定したからです。%uは、メールアドレス全体を表します。これを「username_format=%n」とすると@の前のユーザー名で定義する必要があります。パスワードは、先ほどコピーしたパスワードを貼り付けます。</p>
<pre class="brush: bash; title: ; notranslate">
#ユーザー名:パスワード　で設定
#userdbでusername_format=%uにした場合
test@hogehoge.com:{CRAM-MD5}fe8522268d91e485ccac8f36800e4fa6b10363e2a371....

#userdbでusername_format=%nにした場合は@以降を削除する
#test:{CRAM-MD5}fe8522268d91e485ccac8f36800e4fa6b10363e2a371....
</pre>
<h3>バーチャルメールボックスのPathを設定する</h3>
<p>Postfixで設定したバーチャルメールボックスからメーラーで受信できるように設定します。<br />
以下の設定でPostfixで設定したバーチャルメールボックス、ユーザーID、グループIDを設定します。<br />
argsのhomeでメールボックスのpathを定義します。ユーザー名をメールアドレスにすることで変数%dと%nを使うことができます。%dは、ユーザー名の@以後のドメイン名を参照し%nは@の前のユーザー名を参照します。これでメールボックスのpathを動的に定義することができます。</p>
<p><a href="https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/user_format.png"><img src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/user_format.png" alt="" width="601" height="337" class="alignnone size-full wp-image-671" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/user_format.png 601w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/user_format-300x168.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/user_format-320x179.png 320w" sizes="(max-width: 601px) 100vw, 601px" /></a></p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/dovecot/conf.d/auth-static.conf.ext
</pre>
<pre class="brush: bash; title: ; notranslate">
userdb {
  driver = static
  #args = uid=vmail gid=vmail home=/home/%u
  #Postfixで設定したバーチャルメールボックス、ユーザーID、グループIDを記載する
  #%dはユーザー名の@以後のドメイン名、%nは@の前のユーザー名
  args = uid=10000 gid=10000 home=/var/www/vmailbox/%d/%n
}
</pre>
<p>特殊変数の詳しい説明はこちら<br />
<a href="https://doc.dovecot.org/configuration_manual/config_file/config_variables/#config-variables" rel="noopener" target="_blank">https://doc.dovecot.org/configuration_manual/config_file/config_variables/#config-variables</a></p>
<p>dovecotを再起動すると設定が反映され、メーラーからメールを受信することができます。</p>
]]></content:encoded>
			</item>
		<item>
		<title>SMTP-AUTH(認証機能)を使ったメール送信 Postfix + dovecot の設定</title>
		<link>https://web-creators-hub.com/linux/postfix2/</link>
		<pubDate>Wed, 29 Jan 2020 16:08:25 +0000</pubDate>
		<dc:creator><![CDATA[taizo]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Postfix]]></category>

		<guid isPermaLink="false">https://web-creators-hub.com/?p=597</guid>
		<description><![CDATA[前回のつづき 前回までは「mynetworks」で設定したネットワーク内でしか外部送信できませんでしたが、今回は、「mynetworks」以...]]></description>
				<content:encoded><![CDATA[<p>前回のつづき<br />
<div class="linkcard"><table border="1" cellspacing="0" cellpadding="4"><tbody></tr><tr><td><br><a class="lkc-link no_icon" href="https://web-creators-hub.com/linux/postfix-basic/">【基本】理解しながらPostfixの設定を行う</a> - Web Creators Hub</td></tr></tbody></table></div></p>
<p>前回までは「mynetworks」で設定したネットワーク内でしか外部送信できませんでしたが、今回は、「mynetworks」以外から送信をできるようにします。それを実現するためにSMTPに認証機能(SMTP-AUTH)を実装します。まずはSMTP-AUTHとはなにか理解する必要があります。</p>
<p>&nbsp;</p>
<h2>SMTP-AUTHとは</h2>
<p>スパムメールがなかった時代、メール送信サーバは、認証などなくだれでも送信できる状態でした。しかしスパムメールが流行りだすと誰でも送信できないようにメール送信にも認証が必要になりました。当初は、そのような認証機能がなかったため、POP認証の機能を使い代用していました。それが「POP before SMTP」です。そして現在では、送信サーバは、自前の認証機能を持つようになりました。それが「SMTP AUTH」です。「SMTP AUTH」は、「SASL」をいうライブラリ(フレームワーク)を使って認証システムを実現しています。</p>
<p><a href="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix8.png"><img src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix8.png" alt="" width="479" height="447" class="alignnone size-full wp-image-356" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix8.png 479w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix8-300x280.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix8-320x299.png 320w" sizes="(max-width: 479px) 100vw, 479px" /></a></p>
<p>&nbsp;</p>
<h2>SASL</h2>
<p>SASLはSimple Authentication and Security Layerの略で認証システムを実現するライブラリ(フレームワーク)です。Postfixだけでなくさまざまなアプリケーションで使用されています。SASLは主に「Cyrus-SASL」と「Dovecot-SASL」というライブラリを使用しています。</p>
<p>&nbsp;</p>
<h2>Dovecot-SASL</h2>
<p>今回は「Dovecot-SASL」ライブラリを使用して認証システムを実現します。Postfixはdovecotと親和性が高く、アカウントを共有することができます。POP認証用とSMTPの認証を一元管理することができます。ちなみに「Cyrus-SASL」はSMTP用とPOP用の2種類別々に管理する必要があります。</p>
<p><a href="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix9.png"><img src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix9.png" alt="" width="726" height="331" class="alignnone size-full wp-image-357" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix9.png 726w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix9-300x137.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix9-320x146.png 320w" sizes="(max-width: 726px) 100vw, 726px" /></a></p>
<p>&nbsp;</p>
<h2>PostfixのSMTP AUTHの設定</h2>
<p>まずはPostfixの設定から。「smtpd_sasl_type」をdovecotに指定することで「Dovecot-SASL」ライブラリが使用できます。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/postfix/main.cf
</pre>
<pre class="brush: bash; title: ; notranslate">
##smtpauth setting
#SASL認証を有効にする
smtpd_sasl_auth_enable = yes
#RCPT TO コマンドへの対応方法を制御
#mynetworksで定義したものを許可、認証成功している場合許可、認証失敗は拒否
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
#Anonymous認証を拒否
smtpd_sasl_security_options = noanonymous
#outlookでSASL認証を使えるようにする。
broken_sasl_auth_clients = yes
#SASL認証で利用するレルム(ドメイン)を指定
smtpd_sasl_local_domain = $myhostname
#Dovecot-SASLを使用する
smtpd_sasl_type = dovecot
#Dovecot-SASLで使用するソケットファイル
smtpd_sasl_path = private/auth
#VRFYコマンドを無効化
disable_vrfy_command = yes
</pre>
<p>&nbsp;</p>
<h2>dovecotのインストール</h2>
<p>まずは、POPサーバのアプリケーション、dovecotをインストールします。SMTPの認証に「Dovecot-SASL」を使用するとアカウント情報をdovecotに合わすため、dovecotをインストールする必要があります。</p>
<pre class="brush: bash; title: ; notranslate">
yum install dovecot
</pre>
<p>&nbsp;</p>
<h2>dovecot側のSMTP AUTHの設定</h2>
<p>Postfix側が指定のソケットを通じてdovecotのアカウント情報にアクセスできるように設定します。<br />
これでPostfixがdovecotのアカウントを使って認証することができます。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/dovecot/conf.d/10-master.conf
</pre>
<pre class="brush: bash; title: ; notranslate">
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
</pre>
<p>&nbsp;</p>
<h2>dovecotの認証情報の確認</h2>
<p>dovecotの認証に使っているアカウント情報がどこか確認します。デフォルトではLinuxのユーザーを使用しているので念のため確認します。「!include auth-system.conf.ext」がコメントアウトされていなければ問題ありません。ここがコメントアウトされている場合は、Linuxのユーザーを使用しない設定になっています。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/dovecot/conf.d/10-auth.conf
</pre>
<pre class="brush: bash; title: ; notranslate">
#!include auth-deny.conf.ext
#!include auth-master.conf.ext
auth_mechanisms = plain login
#Linuxのアカウントを使って認証
!include auth-system.conf.ext
#!include auth-sql.conf.ext
#!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext
</pre>
<p>次回はバーチャルメールボックス(バーチャルホスト)の設定を説明します。<br />
<div class="linkcard"><table border="1" cellspacing="0" cellpadding="4"><tbody></tr><tr><td><br><a class="lkc-link no_icon" href="https://web-creators-hub.com/linux/postfix3/">Postfix + dovecot バーチャルメールボックスの設定を深堀する</a> - Web Creators Hub</td></tr></tbody></table></div></p>
]]></content:encoded>
			</item>
		<item>
		<title>【基本】理解しながらPostfixの設定を行う</title>
		<link>https://web-creators-hub.com/linux/postfix-basic/</link>
		<pubDate>Wed, 22 Jan 2020 16:01:54 +0000</pubDate>
		<dc:creator><![CDATA[taizo]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Postfix]]></category>

		<guid isPermaLink="false">https://web-creators-hub.com/?p=348</guid>
		<description><![CDATA[メール送受信の全体像 クライアントからメールを送るとメールサーバはそのメールを送信先へ配送します。配送されたメールは最終的に送信先の受信ボッ...]]></description>
				<content:encoded><![CDATA[<h2>メール送受信の全体像</h2>
<p>クライアントからメールを送るとメールサーバはそのメールを送信先へ配送します。配送されたメールは最終的に送信先の受信ボックスに届けられます。送信先のクライアントはメールを受け取るためサーバにアクセスし受け取ります。</p>
<p>この一連の流れではそれぞれ役割が分担されていて、バケツリレーのようにメールを配送していきます。そしてそれぞれの役割を理解することでメールの技術的なことを基本から理解することができます。</p>
<p>その役割は4つに分けられそれぞれ名前がついています。</p>
<p><img class="alignnone size-full wp-image-349" src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix1.png" alt="" width="999" height="532" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix1.png 999w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix1-300x160.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix1-768x409.png 768w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix1-320x170.png 320w" sizes="(max-width: 999px) 100vw, 999px" /></p>
<p>■MUA(Mail User Agent)<br />
メールを送受信するクライアントのこと。Thunderbirdやoutlookなどのメーラーがその役割を担当します。プロトコルはSMTP、POP3など。</p>
<p>■MTA（Mail Transfer Agent）<br />
メールの配送・転送するサーバのこと。Postfixが担当します。プロトコルはSMTP。</p>
<p>■MDA（Mail Delivery Agent）<br />
メールボックスにメールを配送するサーバのこと。Postfixが担当します。プロトコルはSMTP。</p>
<p>■MRA（Mail Retrieval Agent ）<br />
配送されたメールをMUAに渡すサーバのこと。dovecotが担当します。プロトコルはPOP3など。</p>
<p><a href="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix2.png"><img src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix2.png" alt="" width="873" height="289" class="alignnone size-full wp-image-350" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix2.png 873w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix2-300x99.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix2-768x254.png 768w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/10/postfix2-320x106.png 320w" sizes="(max-width: 873px) 100vw, 873px" /></a></p>
<p>今回設定するPostfixはMTA、MDA、dovecotはMRAになります。これらを意識して設定すると理解力が上がります。</p>
<p>&nbsp;</p>
<h2>Postfixの設定</h2>
<p>全体像を理解した上でPostfixの設定を行っていきます。SSHでサーバにログインしPostfixを起動します。</p>
<pre class="brush: bash; title: ; notranslate">
service postfix start
</pre>
<p>&nbsp;</p>
<h2>ローカルからの送信時のFromの値を設定する [mydomain]と[myorigin]</h2>
<p>起動するとメールを送信することができますが、デフォルトではローカルからでしか送信できません。とりあえずサーバからメールを送信してみましょう。mailコマンドで送信します。送信先は任意で設定し送信してください。</p>
<p><code></p>
<pre>#メールコマンド
mail 送信先メールアドレス</pre>
<p></code></p>
<pre class="brush: bash; title: ; notranslate">
mail test@hogehoge.com
Subject: test
test
.
</pre>
<p>メールを受信しメールの内容を確認すると差出人(from)がサーバのドメインになっていると思います。これはPostfixのmyoriginの設定がそのようになっているからです。この値を変えることでローカルからのメールを送信した場合、Fromの値を変えることができます。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/postfix/main.cf
</pre>
<pre class="brush: bash; title: ; notranslate">
mydomain = sample.com
myorigin = $mydomain
</pre>
<p>ログインしているアカウントがrootの場合、fromの値はroot@sample.comになります。myoriginの設定はそれほど重要ではないのでデフォルトのままで結構です。mydomainの値はweb-creators-hub.comなど任意のドメインを設定します。</p>
<p>&nbsp;<br />
&nbsp;</p>
<h2>外部からPostfixに通信できるようにする</h2>
<p>デフォルトではPCからPostfixに通信することができません。これを解決するためには<span class="marker-under">iptables、OP25B対策、postfix</span>の設定を行います。<br />
&nbsp;</p>
<h3>iptableで25番と587番を開放</h3>
<p>iptablesの設定を変更しポートを開放します。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/sysconfig/iptables
</pre>
<pre class="brush: bash; title: ; notranslate">
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT
</pre>
<p>再起動し反映。</p>
<pre class="brush: bash; title: ; notranslate">
service iptables restart
</pre>
<p>ここを開放してもまだ通信できせん。次にpostfixの設定を変更します。<br />
&nbsp;</p>
<h3>inet_interfacesの設定</h3>
<p>この設定を変更しないと外部から送信できません。これはポートがlocalhostからしかバインドできずLISTEN状態になっていないからです。これはnetstatコマンドで確認することができます。</p>
<pre class="brush: bash; title: ; notranslate">
netstat -ant | grep LISTEN
</pre>
<pre class="brush: bash; title: ; notranslate">
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
</pre>
<p>これを外部からバインドできるように設定変更します。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/postfix/main.cf
</pre>
<pre class="brush: bash; title: ; notranslate">
#inet_interfaces = localhost
inet_interfaces = all
</pre>
<p>この設定はiptablesのような効果があります。ここをallにすると25番ポートとバインドでき通信ができるようになります。<br />
設定を反映するため再起動します。</p>
<pre class="brush: bash; title: ; notranslate">
service postfix restart
</pre>
<p>もう一度ポートの状態を確認します。</p>
<pre class="brush: bash; title: ; notranslate">
netstat -ant | grep LISTEN
</pre>
<pre class="brush: bash; title: ; notranslate">
tcp        0      0 0.0.0.0:25                0.0.0.0:*                   LISTEN
</pre>
<p>これで外部からバインドできるようになりました。<br />
&nbsp;</p>
<h3>OP25B対策</h3>
<p>OP25B対策としてPostfixに587番ポートを使って通信できるように設定します。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/postfix/master.cf
#submission inet n - n - - smtpd
#↓
submission inet n - n - - smtpd
</pre>
<p>再起動します。</p>
<pre class="brush: bash; title: ; notranslate">
service postfix restart
</pre>
<p>これで587番ポートがListen状態になり通信できるようになります。<br />
念のためnetstatで状態を確認します。</p>
<pre class="brush: bash; title: ; notranslate">
netstat -ant | grep LISTEN
</pre>
<pre class="brush: bash; title: ; notranslate">
tcp        0      0 0.0.0.0:25                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:587                 0.0.0.0:*                   LISTEN
</pre>
<p>587番ポートがListen状態になっています。<br />
&nbsp;</p>
<h3>通信テスト</h3>
<p>それでは実際に通信できるかクライアントからtelnetを使って通信します。</p>
<pre class="brush: bash; title: ; notranslate">
telnet sample.com 587
220 ～ Postfix

</pre>
<p>応答が返ってきたら通信成功です。</p>
<p>&nbsp;</p>
<h2>PCからメールを送信できるようにする</h2>
<p>Postfixと通信できるようになりましたが、まだPCから送信することができません。これはデフォルトの設定で「ローカルのみ送信可能」という設定になっているためです。この設定を変更し送信できるようにします。以下の「mynetworks」がこれにあたります。</p>
<p>この設定にネットワークIPをを記入すると無条件(パスワードなどの認証なし)で配送する項目になります。そのためこの設定をミスると踏み台に利用されるため注意が必要です。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/postfix/main.cf
</pre>
<pre class="brush: bash; title: ; notranslate">
#mynetworks = 127.0.0.0/8
mynetworks = 192.168.0.0/16
relay_domains = $mydestination
</pre>
<p>デフォルトでは「mynetworks」に127.0.0.0/8が記入されているので自サーバからしか送信することができません。これを「mynetworks = 192.168.0.0/16」に設定すると192.168.～からのIPアドレスに限り無条件で配送する設定になります。</p>
<p><a href="https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/postfix11.png"><img src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/postfix11.png" alt="" width="703" height="533" class="alignnone size-full wp-image-660" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/postfix11.png 703w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/postfix11-300x227.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2020/02/postfix11-320x243.png 320w" sizes="(max-width: 703px) 100vw, 703px" /></a></p>
<p>「relay_domains」は無条件で配送する送信先ドメイン(to)を設定します。例えばここに「gmail.com」と設定するとgmail.comを送信先とするメールは無条件で配送されます。</p>
<p>この二つの設定は、基本的にデフォルト設定で問題ありません。特にVPSなどで設定する場合は、プライベートアドレスを設定する場面が少ないため設定することがありません。「mynetworks」以外からの送信は、次回に紹介する認証機能(SMTP-AUTH)を使用して送信します。<br />
&nbsp;</p>
<h3>「mynetworks」の設定する場面</h3>
<p>プライベートネットワーク内でなにかしらのシステムが管理者にアラートを通知するときなどによく使われます。</p>
<p>つづきはこちら<br />
<div class="linkcard"><table border="1" cellspacing="0" cellpadding="4"><tbody></tr><tr><td><br><a class="lkc-link no_icon" href="https://web-creators-hub.com/linux/postfix2/">【続】dovecotの設定、Postfixの設定(認証機能、バーチャルメールボックス)</a> - Web Creators Hub</td></tr></tbody></table></div></p>
]]></content:encoded>
			</item>
		<item>
		<title>【oom-killer】メモリが原因でサーバが落ちた時にやった対応</title>
		<link>https://web-creators-hub.com/linux/oom-killer/</link>
		<pubDate>Fri, 10 Jan 2020 07:56:25 +0000</pubDate>
		<dc:creator><![CDATA[taizo]]></dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">https://web-creators-hub.com/?p=537</guid>
		<description><![CDATA[カーネルパニック サーバの監視アラートが発報されサーバが落ちていることが発覚し調査した。SSHでの接続は不可能だったので、さくらVPSのコン...]]></description>
				<content:encoded><![CDATA[<h2>カーネルパニック</h2>
<p>サーバの監視アラートが発報されサーバが落ちていることが発覚し調査した。SSHでの接続は不可能だったので、さくらVPSのコントロールパネルから状態を確認。画面には「kernel panic」の文字。操作できなかったのでコンパネ上から再起動しサーバは復帰した。</p>
<h2>原因究明</h2>
<p>messagesログを確認すると「httpd invoked oom-killer: ～」というログを発見。どうやらメモリが枯渇しサーバが落ちた模様。以下が障害の流れ。</p>
<p>メモリ枯渇→oom-killer→カーネルパニック</p>
<h2>oom-killerとは</h2>
<p>物理メモリ、スワップメモリが枯渇したとき、システム全体に最も影響の与えてるプロセス(メモリを一番使っている)を選択しkillするプログラムのこと。init プロセスやカーネルスレッドなどは OOM Killer 発動対象外。</p>
<h2>スワップメモリ追加</h2>
<p>メモリは物理が4G、スワップが2G。スワップメモリがかなり少なかったので応急処置としてスワップメモリを6Gに増やした。</p>
<pre class="brush: bash; title: ; notranslate">
# dd if=/dev/zero of=作成ファイル bs=ブロックサイズ count=ブロック数
dd if=/dev/zero of=/var/swpfile4G bs=1M count=4096
</pre>
<p>ddコマンドで4Gの空ファイルを作成する。</p>
<pre class="brush: bash; title: ; notranslate">
mkswap /var/swpfile4G
</pre>
<p>mkswapでフォーマットしスワップとして使用できるようにする。</p>
<pre class="brush: bash; title: ; notranslate">
chmod 600 /var/swpfile4G
</pre>
<p>このままでは権限のエラーがでるのでパーミッション変更。</p>
<pre class="brush: bash; title: ; notranslate">
swapon /var/swpfile4G
</pre>
<p>スワップ領域を割り当てる</p>
<pre class="brush: bash; title: ; notranslate">
free
</pre>
<p>freeコマンドで確認。</p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/fstab
#最終行に以下を追加
/var/swpfile4G          swap                    swap    defaults        0 0
</pre>
<p>OS再起動時に追加したSwap領域がマウントするようにfstabファイルを編集。</p>
<h2>プロセスチェック</h2>
<p>以下のコマンドを利用してメモリを使っているプロセスを割り出した。調査すると落ちたサーバがWEBサーバとして利用していることもあり「httpd」が一番怪しかった。Apacheの設定を確認すると「MaxClients」の値が256あり、1プロセス当たりのメモリ使用量が50Mの場合、12Gのメモリを使用することになり完全に枯渇することがわかった。</p>
<pre class="brush: bash; title: ; notranslate">
#ランキング
ps -eo comm,rss | sort -rn -k 2 | head -n 50

#指定プロセスの物理メモリ(RSS)合計
ps -eo rss,comm | awk 'BEGIN {SUM=0} {if ($2 == &quot;[プロセス名]&quot;){ SUM+=$1 }} END {printf(&quot;%dMB\n&quot;, SUM/1024)}'

#指定プロセス数
ps -eo rss,comm | awk 'BEGIN {COUNT=0} {if ($2 == &quot;[プロセス名]&quot;){ COUNT+=1 }} END {print COUNT}'

#指定プロセスの物理メモリ(RSS)平均
ps -eo rss,comm | awk 'BEGIN {SUM=0;COUNT=0} {if ($2 == &quot;[プロセス名]d&quot;){ SUM+=$1;COUNT+=1 }} END {printf(&quot;%dKB\n&quot;, SUM/COUNT)}'

#指定プロセスの物理メモリ(RSS)最大
ps -eo rss,comm | awk 'BEGIN {MAX=0} {if ($2 == &quot;[プロセス名]&quot;){ if (MAX &lt; $1) { MAX=$1 }}} END {print MAX}'

#指定プロセスのCPU使用率
ps -eo %cpu,comm | awk 'BEGIN {SUM=0} {if ($2 == &quot;[プロセス名]&quot;){ SUM+=$1 }} END {print SUM}'
</pre>
<p>ちなみに主要プロセスのメモリ使用量は以下になった。<br />
Postfixメモリ使用量:約33MB<br />
PHPメモリ使用量    :0MB<br />
MySQLメモリ使用量  :75.51 MB<br />
httpdメモリ使用量  :443.44 MB<br />
clamメモリ使用量   :806.4 MB</p>
<p>clamがメモリの使用量が大きかったので一旦停止した。</p>
<h2>Apacheのチューニング</h2>
<p>プロセスチェックの結果からApacheの設定に問題があることがわかりチューニングした。<br />
以下チューニングに関係するディレクティブ。</p>
<p><span class="bold">・StartServers</span><br />
Apache起動時の子プロセス数</p>
<p><span class="bold">・MinSpareServers</span><br />
待機時の最小子プロセス数</p>
<p><span class="bold">・StartServers</span><br />
Apache起動時の子プロセス数</p>
<p><span class="bold">・MinSpareServers</span><br />
待機時の最小子プロセス数</p>
<p><span class="bold">・MaxSpareServers</span><br />
待機時の最大子プロセス数</p>
<p><span class="bold">・ServerLimit</span><br />
設定可能なサーバプロセス数の上限</p>
<p><span class="bold">・MaxClients</span><br />
最大の小プロセス数</p>
<p><span class="bold">・MaxRequestsPerChild</span><br />
1子プロセスが処理するリクエスト数(上限を超えると新しいプロセスに入れ替わる)</p>
<p>実際設定したのは以下の設定。</p>
<pre class="brush: bash; title: ; notranslate">
サーバが落ちた時の設定内容(デフォルト値)
&lt;IfModule prefork.c&gt;
StartServers         8
MinSpareServers         5
MaxSpareServers     20
ServerLimit     256
MaxClients     256
MaxRequestsPerChild  4000
&lt;/IfModule&gt;
</pre>
<p>↓</p>
<pre class="brush: bash; title: ; notranslate">
&lt;IfModule prefork.c&gt;
StartServers         25
MinSpareServers         25
MaxSpareServers     40
ServerLimit     105
MaxClients     100
MaxRequestsPerChild  1000
MaxMemFree           2048
&lt;/IfModule&gt;
</pre>
<p>「MaxSpareServers」はメモリが枯渇しないように設定。「MaxClients」は始め50ぐらいに設定していたが、すぐに上限に到達したので(apacheのエラーログでわかる)調整し100ぐらいに落ち着いた。</p>
<h2>Zabbixでプロセスの監視</h2>
<p>Zabbixでプロセスの監視をすることにした。今後これらの値を参考にさらなるチューニングなどに生かしていく。<br />
テンプレートを作成しアイテムを追加する。</p>
<p>以下プロセスのメモリ容量を監視。</p>
<p>・postfixメモリ使用量<br />
・phpメモリ使用量<br />
・mysqldメモリ使用量<br />
・httpdメモリ使用量<br />
・clamメモリ使用量</p>
<p>あとはapacheのプロセス数、1プロセス当たりの平均メモリ使用量を監視。</p>
<h3>プロセス名メモリ使用量</h3>
<p>アイテム追加</p>
<pre class="brush: bash; title: ; notranslate">
名前:プロセス名メモリ使用量
タイプ:エージェント
キー:proc.mem[プロセス名,,sum,,rss]
データ型:数値(整数)
データ形式：10進数
単位：B
</pre>
<p>プロセス名はpostfix、php、mysqld、httpd、clamを入れる。</p>
<h3>httpdの1プロセス当たりの平均メモリ使用量</h3>
<p>アイテム追加</p>
<pre class="brush: bash; title: ; notranslate">
名前:httpdメモリ使用量平均
タイプ:エージェント
キー:proc.mem[httpd,,avg,,rss]
データ型:数値(整数)
データ形式：10進数
単位：B
</pre>
<h3>httpdプロセス数</h3>
<p>アイテム追加</p>
<pre class="brush: bash; title: ; notranslate">
名前:httpdプロセス数
タイプ:エージェント
キー:proc.num[httpd,,,]
データ型:数値(整数)
データ形式：10進数
</pre>
<h2>Zabbixでログ監視</h2>
<p>ログを監視し問題のあるものはアラートを飛ばす設定にした。<br />
テンプレートを作成しアイテム追加、トリガーを追加する。</p>
<h3>messages監視</h3>
<p>以下の設定でmessagesログを監視し「oom-killer」が出たらアラートを飛ばすようにする。</p>
<p>アイテム追加</p>
<pre class="brush: bash; title: ; notranslate">
名前:messagesログ監視
タイプ:アクティブ
キー:log[/var/log/messages,,,,,]
データ型:ログ
</pre>
<p>トリガー</p>
<pre class="brush: bash; title: ; notranslate">
名前:OOM killer が発動されました。
条件式:
{Template linux logs:log[/var/log/messages,,,,,].regexp(oom-killer)}=1 and 
{Template linux logs:log[/var/log/messages,,,,,].nodata(10m)}=0
</pre>
<h3>apacheのエラーログ</h3>
<p>以下の設定でapacheのエラーログを監視し「MaxClients」が出たらアラートを飛ばすようにする。<br />
このアラートは、apacheのプロセス数が「MaxClients」の値に到達したことを意味し再チューニングの参考にできる。</p>
<p>・アイテム</p>
<pre class="brush: bash; title: ; notranslate">
名前:apache error_log
タイプ:アクティブ
キー:log[/var/log/httpd/error_log,,,,,]
データ型:ログ
</pre>
<p>トリガー</p>
<pre class="brush: bash; title: ; notranslate">
名前:apacheのプロセスが上限に達しました。
条件式:
{Template linux logs:log[/var/log/httpd/error_log,,,,,].regexp(MaxClients)}=1 and 
{Template linux logs:log[/var/log/httpd/error_log,,,,,].nodata(10m)}=0
説明:
apacheのプロセスが上限に達しました。
</pre>
<h2>今後</h2>
<p>・MySQLなどの設定もデフォルト値のままなので見直す必要がある。<br />
・サイト数が40サイトぐらいあるサーバなのでapacheのログを集計しどのサイトがアクセス数が多いかを把握し対応(サーバ移行など)する必要がある。</p>
]]></content:encoded>
			</item>
		<item>
		<title>ApacheでSSLv3の無効化に出来ない場合にやること</title>
		<link>https://web-creators-hub.com/linux/ssl3/</link>
		<pubDate>Wed, 04 Dec 2019 01:43:10 +0000</pubDate>
		<dc:creator><![CDATA[taizo]]></dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">https://web-creators-hub.com/?p=516</guid>
		<description><![CDATA[基本的に以下の設定をするとSSL3を無効化できます。 しかしバーチャルホストの設定をしている場合、設定するドメインのみ無効化の設定をしても反...]]></description>
				<content:encoded><![CDATA[<p>基本的に以下の設定をするとSSL3を無効化できます。</p>
<pre class="brush: bash; title: ; notranslate">
SSLProtocol All -SSLv2 -SSLv3 -TLSv1
</pre>
<p>しかしバーチャルホストの設定をしている場合、設定するドメインのみ無効化の設定をしても反映されません。ssl.confなどSSLの設定をしているすべてのドメインに設定する必要があります。</p>
<h2>検索して設定が必要なファイルを探す</h2>
<p>SSLの設定をしているドメインを検索します。</p>
<pre class="brush: bash; title: ; notranslate">
cd /etc/httpd/conf.d/
grep &quot;SSLEngine&quot; *.conf
</pre>
<p>検索に引っかかったファイルにSSL3の無効化設定を行います。</p>
<h2>設定確認</h2>
<p>設定の確認にはコマンドを利用した方法とSSLの安全性をチェックできるサイトを利用する方法があります。</p>
<p><strong>・コマンドの場合</strong></p>
<pre class="brush: bash; title: ; notranslate">
openssl s_client -ssl3 -connect [ドメイン]:443
</pre>
<p>&nbsp;</p>
<p><strong>・サイトを利用する場合</strong><br />
Qualys SSL Labs<br />
<a href="https://www.ssllabs.com/ssltest/" target="_blank" rel="noopener">https://www.ssllabs.com/ssltest/</a></p>
]]></content:encoded>
			</item>
		<item>
		<title>ps awkを使ってプロセス毎のメモリ使用量を確認する方法</title>
		<link>https://web-creators-hub.com/linux/proc_m/</link>
		<pubDate>Fri, 22 Nov 2019 15:05:42 +0000</pubDate>
		<dc:creator><![CDATA[taizo]]></dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">https://web-creators-hub.com/?p=510</guid>
		<description><![CDATA[psコマンドでプロセス毎のメモリ使用量を確認すると物理メモリ(RSS)と仮想メモリ(VSZ)に分かれています。監視やチューニング等で確認する...]]></description>
				<content:encoded><![CDATA[<p>psコマンドでプロセス毎のメモリ使用量を確認すると物理メモリ(RSS)と仮想メモリ(VSZ)に分かれています。監視やチューニング等で確認するときは仮想メモリより物理メモリを参考にしたほうがわかりやすいです。今回はプロセス毎の物理メモリ使用量を確認するコマンドをまとめてみました。</p>
<h2>指定プロセスの物理メモリ(RSS)合計</h2>
<pre class="brush: bash; title: ; notranslate">ps -eo rss,comm | awk 'BEGIN {SUM=0} {if ($2 == &quot;httpd&quot;){ SUM+=$1 }} END {printf(&quot;%dMB\n&quot;, SUM/1024)}'</pre>
<h2>指定プロセス数</h2>
<pre class="brush: bash; title: ; notranslate">ps -eo rss,comm | awk 'BEGIN {COUNT=0} {if ($2 == &quot;httpd&quot;){ COUNT+=1 }} END {print COUNT}'</pre>
<h2>指定プロセスの物理メモリ(RSS)平均</h2>
<pre class="brush: bash; title: ; notranslate">ps -eo rss,comm | awk 'BEGIN {SUM=0;COUNT=0} {if ($2 == &quot;httpd&quot;){ SUM+=$1;COUNT+=1 }} END {printf(&quot;%dKB\n&quot;, SUM/COUNT)}'</pre>
<h2>指定プロセスの物理メモリ(RSS)最大</h2>
<pre class="brush: bash; title: ; notranslate">ps -eo rss,comm | awk 'BEGIN {MAX=0} {if ($2 == &quot;httpd&quot;){ if (MAX &lt; $1) { MAX=$1 }}} END {print MAX}'</pre>
<h2>プロセスメモリ使用率ランキング top50</h2>
<pre class="brush: bash; title: ; notranslate">ps -eo comm,rss | sort -rn -k 2 | head -n 50</pre>
<h2>指定プロセスのCPU使用率</h2>
<pre class="brush: bash; title: ; notranslate">ps -eo %cpu,comm | awk 'BEGIN {SUM=0} {if ($2 == &quot;httpd&quot;){ SUM+=$1 }} END {print SUM}'</pre>
]]></content:encoded>
			</item>
		<item>
		<title>シェルスクリプトで任意の文字入力待ち→入力→確認→完了 を作成</title>
		<link>https://web-creators-hub.com/linux/shell-s/</link>
		<pubDate>Thu, 21 Nov 2019 15:46:13 +0000</pubDate>
		<dc:creator><![CDATA[taizo]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[シェルスクリプト]]></category>

		<guid isPermaLink="false">https://web-creators-hub.com/?p=500</guid>
		<description><![CDATA[ウェブの入力フォームのようにLinuxのシェルスクリプトで再現します。再現するためには入力を受け付ける「READ」と画面遷移のように確認→完...]]></description>
				<content:encoded><![CDATA[<p>ウェブの入力フォームのようにLinuxのシェルスクリプトで再現します。再現するためには入力を受け付ける「READ」と画面遷移のように確認→完了を再現するために繰り返し「while」「case」を使用します。</p>
<p><img src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/11/shell1.gif" alt="" width="464" height="432" class="alignnone size-full wp-image-503" /></p>
<h2>read 入力を受け付ける</h2>
<p>readコマンドでユーザーから入力を受け付ける部分を作成します。オプション「-p」を付けると入力する前に表示するプロンプトの文字を設定できます。</p>
<p><span class="bold">・使用例</span></p>
<pre class="brush: bash; title: ; notranslate">
echo &quot;+-------------------------------------------------------+&quot;
echo &quot;文字を入力してください。&quot;
echo &quot;+-------------------------------------------------------+&quot;
read -p &quot;:&quot; INPUT_STR
echo &quot;入力した文字は[$INPUT_STR]です。&quot;
read -p &quot;ENTERキーを押してください。&quot;
</pre>
<h2>while true do done で無限に繰り返す</h2>
<p>while trueにすれば無限に繰り返します。これを利用して確認から文字入力に戻るところを再現します。繰り返しのループから抜けるにはbreakを使用します。</p>
<p><span class="bold">・使用例</span></p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash
i=0
while true
do
  echo $i
  i=`expr $i + 1`
  if [ $i -eq 10 ]; then
    break
  fi
done
</pre>
<h2>case</h2>
<p>caseを利用して確認画面のYes、noの処理を作成します。</p>
<p><span class="bold">・使用例</span></p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash
read -p &quot; (y/n):&quot; CHECK_YN
case &quot;$CHECK_YN&quot; in
[yY])
    echo &quot;YES&quot;  
;;
[nN])
    echo &quot;NO&quot;
;;
esac
read -p &quot;ENTERキーを押してください。: &quot;
clear
</pre>
<h2>文字入力→確認→完了</h2>
<p>「read」「while」「case」を使って任意の文字入力→確認→完了 を完成させます。<br />
以下がサンプルコードになります。</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash
while true
do
clear
echo &quot;+-------------------------------------------------------+&quot;
echo &quot;文字を入力してください。&quot;
echo &quot;+-------------------------------------------------------+&quot;
read -p &quot;:&quot; INPUT_STR
echo &quot;+-------------------------------------------------------+&quot;
echo &quot;入力した文字は[$INPUT_STR]でよろしいですか？&quot;
echo &quot;+-------------------------------------------------------+&quot;
read -p &quot; (y/n):&quot; CHECK_YN
case &quot;$CHECK_YN&quot; in
  [yY])
echo &quot;+-------------------------------------------------------+&quot;
echo &quot;完了しました。&quot;
echo &quot;+-------------------------------------------------------+&quot;
  ;;
  [nN]) echo &quot;作成はキャンセルされました。&quot; ;;
esac

read -p &quot;処理を終了しますか? (y/N): &quot; yn
case &quot;$yn&quot; in
  [yY]) break
  ;;
esac
done
read -p &quot;ENTERキーを押してください。: &quot;
clear
</pre>
]]></content:encoded>
			</item>
		<item>
		<title>【図解】公開鍵と秘密鍵を使ったSSH接続の設定を分かりやすく解説</title>
		<link>https://web-creators-hub.com/linux/ssh/</link>
		<pubDate>Sat, 31 Aug 2019 15:24:53 +0000</pubDate>
		<dc:creator><![CDATA[taizo]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">https://web-creators-hub.com/?p=307</guid>
		<description><![CDATA[SSHとは SSHとはサーバをリモートで操作するプロトコルです。ポートはデフォルトで22番を利用します。現場ではリモートでLinuxのサーバ...]]></description>
				<content:encoded><![CDATA[<h2>SSHとは</h2>
<p>SSHとはサーバをリモートで操作するプロトコルです。ポートはデフォルトで22番を利用します。現場ではリモートでLinuxのサーバを操作するために利用されます。SSHの略は「Secure SHell」です。Secureと言う単語あるようにSSHでアクセスすると通信はすべて暗号化され盗聴されません。認証方法はパスワード以外にも公開鍵認証が利用されます。これはデータを暗号化する公開鍵とデータを復号（解読）する秘密鍵を使って通信する暗号化方式です。公開鍵と秘密鍵はペアになっています。</p>
<p>公開鍵認証でアクセスする方法を紹介します。</p>
<h2>前提</h2>
<p>クライアントにはWindows10を利用します。サーバはLinux CentOS6または 7での解説になります。</p>
<p>クライアント：Windows10 (GitBashインストール)<br />
サーバ　　　：Linux CentOS6 or 7</p>
<h2>windowsで秘密鍵と公開鍵を作成</h2>
<h3>1.GitBashをインストール</h3>
<p>Windowsで秘密鍵と公開鍵を作成するには「GitBash」を利用します。これはWindowsでBash(linuxのコマンド)が利用できる地味にすごいツールです。これを以下のURLからダウンロードしインストールします。すでにインストールされている人は飛ばしてください。</p>
<p>https://gitforwindows.org/</p>
<p>インストール画面はすべて「next」でOKです。</p>
<h2>Git Bashを起動し秘密鍵・公開鍵を作成</h2>
<p>プログラムメニューから「Git Bash」を起動します。起動後、以下のコードを入力し秘密鍵・公開鍵を作成します。「.ssh」フォルダはデフォルトの鍵の保存場所になります。</p>
<h3>秘密鍵・公開鍵の作成</h3>
<p><code>ssh-keygen<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/c/Users/[username]/.ssh/id_rsa): &lt;-- 鍵を保存するフォルダ（ Enterキー ）<br />
Created directory '/c/Users/[username]/.ssh'.<br />
Enter passphrase (empty for no passphrase): &lt;-- パスフレーズを入力（ Enterキー ）<br />
Enter same passphrase again: &lt;-- もう一度、パスフレーズを入力（ Enterキー ）<br />
Your identification has been saved in id_rsa.<br />
Your public key has been saved in id_rsa.pub.</code></p>
<p>ssh-keygenのコマンドを入力すると秘密鍵・公開鍵のペアを作成することができます。オプションを何も入力しない場合は、暗号化方式はRSA、鍵の長さは3072で作成されます。鍵の強度は鍵の長さが2048以上、暗号化方式はRSAであれば問題ありません。パスワードを入力するのが面倒な場合パスフレーズをなしにします。その場合パスフレーズを何も入力せずにEnterキーを押します。</p>
<p>保存場所や鍵の名前などなにも指示しない場合、秘密鍵と公開鍵は以下のフォルダに作成されます。<br />
c:\Users&#91;username]&#46;ssh\id_rsa　　 （秘密鍵）・・・ クライアントPCに配置<br />
c:\Users&#91;username]&#46;ssh\id_rsa.pub （公開鍵）・・・ 接続対象サーバに登録</p>
<p><img class="alignnone size-full wp-image-323" src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/08/sshimg1.png" alt="" width="541" height="315" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/08/sshimg1.png 541w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/08/sshimg1-300x175.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/08/sshimg1-320x186.png 320w" sizes="(max-width: 541px) 100vw, 541px" /></p>
<p>ちなみに鍵の強度は以下のコマンドで確認することができます。<br />
<code>ssh-keygen -l -f ~/.ssh/id_rsa.pub</code></p>
<p>&nbsp;</p>
<h2>公開鍵をサーバに渡す</h2>
<p>作成した公開鍵をサーバに渡します。渡し方は公開鍵のファイルを開いて中身をコピーし<br />
貼り付けてもいいですが、今回はscpコマンドを使ってサーバに渡します。scpコマンドはリモートにデータをコピーするコマンドです。コピーするコマンドcpにsshのsがついています。これで盗聴されずに安全にサーバにコピーができます。</p>
<p>それでは「Git Bash」でscpコマンドを使って公開鍵をサーバにコピーします。前提としてサーバー側に.sshディレクトリを作成しておきます。その後以下のコマンドを入力します。</p>
<p><code>scp ./id_rsa.pub user@host:~/.ssh/authorized_keys</code></p>
<p>サーバにログインし「.sshフォルダ」と「authorized_keys」のパーミッションを変更します。</p>
<p><code>cd ~<br />
chmod 700 .ssh<br />
cd .ssh<br />
chmod 600 authorized_keys</code></p>
<p><img class="alignnone size-full wp-image-324" src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/08/sshimg2.png" alt="" width="541" height="315" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/08/sshimg2.png 541w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/08/sshimg2-300x175.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/08/sshimg2-320x186.png 320w" sizes="(max-width: 541px) 100vw, 541px" /></p>
<p>&nbsp;</p>
<h2>SSHの設定を変更</h2>
<p>公開鍵認証できるようにサーバ側のsshの設定を変更します。</p>
<p><code>vi /etc/ssh/sshd_config</code><br />
以下の行のコメントをはずして有効化する。</p>
<p>#RSAAuthentication yes<br />
#PubkeyAuthentication yes<br />
#AuthorizedKeysFile .ssh/authorized_keys<br />
↓<br />
RSAAuthentication yes<br />
PubkeyAuthentication yes<br />
AuthorizedKeysFile .ssh/authorized_keys</p>
<p>変更後sshを再起動します。<br />
<code>service sshd restart</code></p>
<h2>SSHで認証する</h2>
<p>それでは設定がうまくいっているか秘密鍵を使ってサーバにログインします。</p>
<p><code>ssh アカウント名@ホストIPアドレス</code></p>
<p>例rootユーザーでIPアドレス192.168.1.110の場合<br />
<code>ssh root@192.168.1.110</code></p>
<p>初回ログインのみ「このサーバを信頼していいか」という警告メッセージが英語で表示されます。フィンガープリントと呼ばれるハッシュ値が表示され、本当に接続していいですか？と確認してくるので「yes」と入力します。</p>
<p>本来ならサーバに公開鍵を渡す前にフィンガープリントを事前にメモっておき警告時に表示されたフィンガープリントの値と一致するか確認するのですが面倒なのでほとんどの場合はyesと答えておきます。</p>
<p>一度YESと答えると次回から聞いてきません。一度接続するとフィンガープリントはクライアントPCの「~/.ssh/known_hosts」ファイルに保存されます。</p>
<p><img class="alignnone size-full wp-image-325" src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/08/sshimg3.png" alt="" width="541" height="327" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/08/sshimg3.png 541w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/08/sshimg3-300x181.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2019/08/sshimg3-320x193.png 320w" sizes="(max-width: 541px) 100vw, 541px" /></p>
<p>configファイルはssh接続情報を定義して保存するファイルです。これを設定すると接続するホスト情報を簡略化できたり接続が簡単になります。</p>
<p><code></code></p>
]]></content:encoded>
			</item>
		<item>
		<title>ls -h でバイト単位 → MB(メガ) → GB(ギガ)に単位変更する　hの略はまさかの!?</title>
		<link>https://web-creators-hub.com/linux/ls-h/</link>
		<pubDate>Tue, 07 May 2019 15:49:46 +0000</pubDate>
		<dc:creator><![CDATA[taizo]]></dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">https://web-creators-hub.com/?p=299</guid>
		<description><![CDATA[ls -h で単位を見やすく 業務でデカイファイルがあると連絡があり調べてみると「25,000,000」という単位があり「これ25Gぐらいあ...]]></description>
				<content:encoded><![CDATA[<h2>ls -h で単位を見やすく</h2>
<p>業務でデカイファイルがあると連絡があり調べてみると「25,000,000」という単位があり「これ25Gぐらいあるの？」という質問にすぐに回答できなかった。そこで単位を見やすくするために</p>
<p>ls -lh</p>
<p>コマンドで確認すると25MBだった。感覚で判断すると、とんでもない間違いをしてしまう。見やすくするのは大事だと感じた。</p>
<h2>オプションhは何の略？</h2>
<p>調べてみると「human-readable」。「人間が読めるようにするよ」という意味だった。まさかの「human」の「h」だとは思わなかった。</p>
<p>&nbsp;</p>
<h2>hを使う他のコマンド</h2>
<p>ほかには</p>
<p>du -f</p>
<p>ディレクトリの容量を調べるコマンド</p>
<p>df -f</p>
<p>ディスクの容量を調べるコマンド</p>
<p>で使います。こちらのほうが単位に直結しているのでよく使うと思います。</p>
]]></content:encoded>
			</item>
		<item>
		<title>メールが受信しない時POP3(dovecot)のログをmaillogで確認する方法</title>
		<link>https://web-creators-hub.com/linux/pop3-log/</link>
		<pubDate>Thu, 09 Nov 2017 16:19:13 +0000</pubDate>
		<dc:creator><![CDATA[taizo]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[POP]]></category>

		<guid isPermaLink="false">https://web-creators-hub.com/?p=151</guid>
		<description><![CDATA[クライアントから電話で「メールが受信しない」とのことで調査しました。その時の対応をまとめてみました。サーバ管理をしているとよくあるトラブルな...]]></description>
				<content:encoded><![CDATA[<p><img class="size-full wp-image-153 aligncenter" src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop_error.jpg" alt="" width="1000" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop_error.jpg 1600w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop_error-300x195.jpg 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop_error-768x499.jpg 768w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop_error-1024x666.jpg 1024w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop_error-320x208.jpg 320w" sizes="(max-width: 1600px) 100vw, 1600px" /></p>
<p>クライアントから電話で「メールが受信しない」とのことで調査しました。その時の対応をまとめてみました。サーバ管理をしているとよくあるトラブルなのですが、たまに忘れるので記録しておきます。</p>
<p>基本はメールログを確認する方法まとめています。メールサーバはPostFix+dovecotでログファイルは「/var/log/mailog」で確認できます。</p>
<h2>/var/log/maillogを確認する</h2>
<p>POPサーバにアクセスしているかgrepコマンドを使ってログを確認していきます。</p>
<pre class="brush: bash; title: ; notranslate">
#正常にログインしているかどうか
[root@local ~]#cat /var/log/maillog | grep &quot;pop3-login: Login: user=&lt;username&gt;&quot;
#正常にログアウトしているか
[root@local ~]#cat /var/log/maillog | grep &quot;pop3(username): Disconnected: Logged out&quot;
</pre>
<p>「username」の部分は受信できないアカウント名を記入します。受信できている場合は下記のように表示されます。</p>
<pre class="brush: bash; title: ; notranslate">
#正常にログインしている場合
Nov  9 0:42:11 mailserver dovecot: pop3-login: Login: user=&lt;username&gt;,
method=PLAIN, rip=接続元IPアドレス, lip=サーバのIPアドレス, mpid=*****

#正常にログアウトしている場合
Nov  9 0:42:11 mailserver dovecot: pop3(username): Disconnected: Logged out
top=0/0, retr=4/686581, del=0/23, size=132808

</pre>
<p>正常にログインされている場合は「pop3-login: Login: user=」と表示されます。<br />
「method=PLAIN」は認証方法、「rip」は接続元IPアドレス、「lip」サーバのIPアドレスになります。</p>
<p>正常にログアウトしている場合は、「Disconnected: Logged out」と表示されます。<br />
top=0/0<br />
top=topコマンドの実行回数/topコマンドで転送されたバイト数</p>
<p>retr=4/686581<br />
retr=メールの受信(ダウンロード)数/受信したバイト数</p>
<p>del=0/23<br />
del=メールを削除した件数/サーバに保存されているメール件数</p>
<p>size=123808<br />
size=メールボックスのバイト数</p>
<h2>ログインやログアウトを失敗している場合のエラー</h2>
<h3>パスワードが間違ってログインできていない場合</h3>
<pre class="brush: bash; title: ; notranslate">
Nov  9 0:42:11 mailserver dovecot: pop3-login: Aborted login: user=&lt;username&gt;,
method=PLAIN, rip=接続元IPアドレス, lip=サーバのIPアドレス, mpid=*****
</pre>
<p>パスワードが間違っている場合は「Aborted login: user=」が表示されます。</p>
<h3>ログアウトが正常にされていない場合</h3>
<pre class="brush: bash; title: ; notranslate">
Nov  9 0:42:11 mailserver dovecot: pop3(username): Disconnected: 
top=0/0, retr=0/0, del=0/23, size=987
</pre>
<p>「Logged out」の文字がない場合は正常にログアウトされていません。</p>
<p>&nbsp;</p>
<p><img class="size-full wp-image-158 aligncenter" src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop3_1.png" alt="" width="704" height="416" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop3_1.png 704w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop3_1-300x177.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop3_1-320x189.png 320w" sizes="(max-width: 704px) 100vw, 704px" /></p>
<p><img class="size-full wp-image-159 aligncenter" src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop3_2.png" alt="" width="704" height="479" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop3_2.png 704w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop3_2-300x204.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop3_2-320x218.png 320w" sizes="(max-width: 704px) 100vw, 704px" /></p>
<p><img class="size-full wp-image-160 aligncenter" src="https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop3_3.png" alt="" width="704" height="449" srcset="https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop3_3.png 704w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop3_3-300x191.png 300w, https://web-creators-hub.com/__wordpress/wp-content/uploads/2017/11/pop3_3-320x204.png 320w" sizes="(max-width: 704px) 100vw, 704px" /></p>
<h2>ログ以外に確認する方法</h2>
<p>実際にサーバの受信ボックスの中身を見て受信されているか確認することもできます。<br />
MailDir形式の場合は「/home/username/Maildir/」から確認できます。</p>
<h3>未読メールを確認する</h3>
<pre class="brush: bash; title: ; notranslate">
[root@local ~]#ls -l /home/username/Maildir/new/
</pre>
<p>「new」ディレクトリでまだ受信していないメールを確認することができます。</p>
<h3>既読メールを確認する</h3>
<pre class="brush: bash; title: ; notranslate">
[root@local ~]#ls -l /home/username/Maildir/cur/
</pre>
<p>「cur」(カール)ディレクトリで受信(ダウンロード)したメールを確認することができます。</p>
]]></content:encoded>
			</item>
	</channel>
</rss>
