投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償、寄付歓迎) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★

2016年1月31日日曜日

【Fetchmail 6.3.17】【Postfix 2.6.6 x86_64】POP3サーバ内メールを取得してメールボックスに配信するまでの方法【Linux CentOS6.7 64bit minimal】

(追加)
2018/11/26 環境変数 FETCHMAILHOMEについて


「POPサーバからFetchmailで受信しPostfixを経てバーチャルユーザーメールボックスへ配送する」


インターネット上にある複数のPOPサーバから、FetchmailというプログラムでPOPでメールを取得し、
ローカルで動作しているPostfixを経由して、メールボックス(MailDir)に保存する。


[ POPサーバ ] ====Internet===> [ (Fectchmail)--> (Postfix)--> メールボックス(MailDir) ]


このメールボックスへは、Dovecotなどを通してメールクライアントからアクセス可能である。
Dovecotの設定(IMAPサーバの構築)については、下記ページに記載している。
http://akira-arets.blogspot.jp/2016/01/dovecot-basic-imap-setting.html


以下では、上図のアンダーラインを引いた部分の設定について記載している。

最初に、Postfixの設定を行う。
Fetchmailから転送されてくるメールをメールボックスに保存できるようにする。
次に、Fetchmaiの設定を行い、POPサーバからメールを受信してPostfixへ転送できるようにする。



◆Postfixの設定
(バーチャルドメイン・バーチャルユーザー)

今回は、CentOS 6.7 64bit minimalを用いて構築を行った。
このシステムには、最初からPostfixがインストールされていて動作している。


(1)バーチャルドメインの設定を行った。

fetchmail(後で設定を行う)がPOPサーバから取得したメールを、Postfixが受け取るようにする。
このとき、複数のPOPサーバから宛先ドメインの異なるメールを受信したとしても
ローカルメールボックスに保存できるようにする。

このためにはまず、受信したいメールの宛先ドメインであるようにPostfixを設定する必要がある。
「バーチャルドメイン」という機能を使ってこれら複数のドメインを設定する。

# postconf -e virtual_mailbox_domains=example.com


(2)バーチャルユーザー用メールボックスの設置先となるベースディレクトリの作成と設定

○新しく作成する場合、次のようにした。
・ベースディレクトリは任意であるが、/home/VMAILとした。
# mkdir /home/VMAIL
・ベースディレクトリ以下にアクセスする時に使うLinuxユーザーを作成した。(詳細についてはこちら
Dovecotなどとバーチャルユーザー用メールボックスを共用するために、このユーザー情報は統一しておくこと。
useradd -u 5000 -s /sbin/nologin -M -U vmail
・アクセス権限の付与を行った。
chown vmail:vmail /home/VMAIL

○ベースディレクトリを登録した。

# postconf -e virtual_mailbox_base=/home/VMAIL

○ベースディレクトリ以下にアクセスする時のユーザーIDとグループIDを登録した。

# postconf -e virtual_uid_maps=static:5000
# postconf -e virtual_gid_maps=static:5000

○ベースディレクトリ以下にアクセスする時のUIDが5000以上であるように制限する。

これは、間違ったUID設定によって、想定しないディレクトリにメールが書き込まれることを防止する。

# postconf -e virtual_minimum_uid=5000


(3)バーチャルユーザー宛のメールと配信先バーチャルユーザーメールボックスとの関連付け

○関連付け用のファイルを作成し、ハッシュ化を行った。

# vi /etc/postfix/vmailbox
virtualuser1@example.com example.com/test1/
virtualuser2@example.com example.com/test2/
virtualuser0@example.com example.com/test0/

上の例の1行目は、配送先がvirtualuser1@example.com宛てのメールを、
example.com/test1/ にMaildir形式で保管するように設定している。

Maildir形式で保存するには、example.com/test1/ のように、最後にスラッシュを付ける

2件目以降も同様である。


作成したvmailboxファイルをハッシュ化した。

# postmap /etc/postfix/vmailbox
# ls /etc/postfix/vmailbox*
vmailbox  vmailbox.db
dbという拡張子のファイルが生成された。

○作成した関連付け用ファイルを登録した。

# postconf -virtual_mailbox_maps=hash:/etc/postfix/vmailbox


(3)特定のアドレス(あるいはドメイン)宛のメールを別のメールアドレスへ転送する設定

○転送設定用ファイルを作成した。

オリジナルの最初から存在しているファイルをリネームしておく。
# mv virtual virtual.orig

新しく作成する。
# vi virtual
postmaster@example.com postmaster
#@example.com postmaster@another.domain
スペースで区切られた最初の項目が転送を受けるメールの宛先アドレスやドメインである。
転送先アドレスの指定で、ドメイン名を省略するとローカルアカウントに転送される。
2行目では#(コメントアウト)を行っている。
@ドメイン名の指定で、このドメイン宛ての全メールが転送対象になる。


同様にハッシュ化を行った。

# postmap virtual
# ls virtual*
virtual  virtual.db  virtual.orig
○作成した関連付け用ファイルを登録した。

postconf -virtual_alias_maps=hash:/etc/postfix/virtual


(4)設定を反映させるためサービスをリスタート

Postfixへの設定は、サービスをリスタートすることによって反映される。

# service postfix restart


以上で、Postfix側の設定は完了である。



◇Postfixで設定した内容を確認した。

# postconf  -n

<設定前>
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = localhost
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
<これまでの手順で、加えられた設定>
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_gid_maps = static:5000
virtual_mailbox_base = /home/VMAIL
virtual_mailbox_domains = example.com
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 5000
virtual_uid_maps = static:5000



◆Postfixのその他の設定


(a)受信可能な最大サイズの設定

受信するメールのサイズが大きい場合に、次のようなエラーが発生して、Postfixは受け取りを拒否する。
552 5.3.4 Message size exceeds fixed limit
この制限値は、次のパラメーターで変更することが可能である。

初期値は次の様になっている。
# postconf message_size_limit
message_size_limit = 10240000
例えば、次の様にして、受信可能な最大サイズを20MBに変更できる。
# postconf -e message_size_limit=20480000

この値は、fetchmailが接続する上位サーバーの設定よりも大きくするべきだと思う
上位サーバーがメールを受け取るのならば、fetchmailよりも下位のPostfixも受け取れるようになる。


また、メールボックスに保存できるメールのサイズの制限値も考慮する必要がある。
初期値は、次の様になっている。
# postconf mailbox_size_limit
mailbox_size_limit = 51200000



続けて、POPサーバからメールを受信するFetchmailのインストールと設定を行った。

◆Fetchmailのインストール

○fetchmailについての情報を表示させた。

# yum info fetchmail
Name        : fetchmail
Arch        : x86_64
Version     : 6.3.17
Release     : 1.el6
Size        : 507 k
Repo        : base
Summary     : A remote mail retrieval and forwarding utility
URL         : http://fetchmail.berlios.de/
License     : GPL+ and Public Domain
Description : Fetchmail is a remote mail retrieval and forwarding utility
            : intended for use over on-demand TCP/IP links, like SLIP or PPP
            : connections. Fetchmail supports every remote-mail protocol
            : currently in use on the Internet (POP2, POP3, RPOP, APOP, KPOP,
            : all IMAPs, ESMTP ETRN, IPv6, and IPSEC) for retrieval
. Then
            : Fetchmail forwards the mail through SMTP so you can read it
            : through your favorite mail client.
            :
            : Install fetchmail if you need to retrieve mail over SLIP or PPP
            : connections.


○fetchmailをインストールした。

# yum install fetchmail
Installed:
  fetchmail.x86_64 0:6.3.17-1.el6

Dependency Installed:
  hesiod.x86_64 0:3.1.0-19.el6        procmail.x86_64 0:3.22-25.1.el6_5.1

Complete!


◆Fetchmailの設定

/etc/fetchmailrc ファイルを作成して、必要な設定を書き込んだ。

# vi /etc/fetchmailrc
set postmaster postmaster@example.com
set syslog
set no bouncemail

defaults:
timeout 300
antispam -1
batchlimit 100

poll pop.example.com protocol pop3:
       username "pop3userid1" password "pop3password1" is "virtualuser1@example.com" here
fetchall
smtphost 127.0.0.1/2525
#nokeep
#ssl
;
       username "pop3userid2" password "pop3password2" is "virtualuser2@example.com" here
fetchall
#nokeep
#ssl
;

poll  other.example.com with proto POP3
  user 'pop3userid0' there with password 'pop3password0' is virtualuser0@example.com

<各項目の説明>

(1)postmasterの設定

fetchmailが受信したメールをMTAに転送しようとして、いくつの場合で失敗したとき、
postmasterとして指定したアカウントやメールアドレスに代わりに転送する。
(例) ローカルのrootがポストマスターになる
set postmaster root
(例) postmaster@example.comがポストマスターになる
set postmaster postmaster@example.com

(2)bounce mailの送出先の設定

fetchmailが受信したメールをMTAに転送しようとして、いくつかの場合で失敗したとき、
その旨を通知するためのbounce mailを、メールの送信者に返すかどうか指定する。
( 転送に失敗したメールそのものとは違うので注意 )
・ set no bouncemail
(ポストマスターにはその旨を通知する。)

・ set bouncemail
(メールの送信者にその旨を通知する。)
bouncemailを有効化すると、あて先不明などでMTAが送達できない場合、送信者に対してbounce mailとなる。
そのため、送信元が偽られたメールを使ったなんらかの攻撃に加担することになってしまう可能性があるので注意する。



(3)ログの設定
set syslog
syslogを使ってロギングする。
/var/log/maillog に、fetchmailという名前で記録される。
(下記で挙げるように、fetchmailコマンドに -v オプションをつけることで、詳細が記録される。)



(4)POPサーバからメールを取得する際の共通設定

「default:」 に続けて「poll」」行が始まる前に記述する。
defaults:
timeout 300
antispam -1
batchlimit 100

・ timeout

メール受信時メールサーバーが応答を返さない場合に待機する時間(秒)を設定する。
指定した時間が経過すると、fetchmailは待機を止めてコネクションを切断する。
(この設定を行わなければ、tcpコネクションがタイムアウトするまで長時間待つことになってしまう。)


・ antispam

fetchmailがMTAにメールを転送するとき、このMTAから受け取るエラーコードのうち、
スパムメールの配送拒否を示すコードを設定する。
(この設定を行うのは、MTAによってコードが異なるためである。)

設定例のように、-1を設定すると、無効化される。

ところで、このantispamとして設定されたコードをMTAから受け取った場合、
fetchmailはメールを削除する。
他にも、メールが削除対象になるエラーコードには次のものがある。 
552 メッセージが設定された最大サイズを超過している(bounce mailが送られる)
553 送信元ドメインが不正である(bounce mailすら送らない。)

・ batchlimit

fetmailが取得したメールをMTAへ転送する処理で一度に取り扱えるメール数を設定する。
これを超える場合、MTAとのコネクションが再構築される。


(5)POPサーバに接続しメールを取得してMTA(Postfix)へ転送するための設定

上記の設定からの抜粋である。
poll pop.example.com protocol pop3
       username "pop3userid1" password "pop3password1" is "virtualuser1@example.com" here
fetchall
smtphost 127.0.0.1/2525
#nokeep
#ssl
;
poll に続けて、メールサーバを指定する。
protocol に続けて、使用するプロトコルを指定する。
そのときに使用するユーザー名とパスワードは、それぞれ、usernameとpasswordの後で指定する。

is と hereの間に指定しているメールアドレスは、受信したメールの転送先である。
(今回の一連の例では、Postfixのバーチャルメールユーザーとなっている。)

fetchall は、受信済みかどうかに関わらず、すべてのメールを受信対象とすることを示す。

nokeep は、受信したメールを同時に削除するための指定である。(例では、#でコメントアウトしている。)

ssl は、対象サーバが公開鍵証明書を使用するTSL/SSL通信を行う場合に指定する。(例では、#でコメントアウトしている。)

smtphost 127.0.0.1/2525 は、リレー先のsmtpサーバ(127.0.0.1の2525ポート)を明示的に指定している。

☆もし、Fetchmailで受信したメールについて、
ローカル配信担当のPostfixにおいて転送ループエラーが発生してバウンスされる場合には、
次のページで説明されるオプションをFetchmailに追加すると改善されるかもしれない。

http://akira-arets.blogspot.jp/2017/08/fetchmail-postfix-mailforwardingloop.html



◆Fetchmailの動作テスト

以上までの設定を完了させると、FetchmailはPOPサーバからメールを受信して、
ローカルのPostfixにメールを転送することができる。
また、転送を受け付けたPostfixは、ローカルのバーチャル・メールボックスに保存できる。


○動作テストのために、次のオプション付きでコマンドを実行した。
<テストで使用するオプション>
全て小文字であることに注意! (大文字だと全く異なる意味になるものがある。)

-v work noisily (diagnostic output)
ログにプロトコルでのやり取りなど詳細が記録される。

-a [fetch]all  retrieve old and new messages
受信済みかどうかにかかわらず受信する。

-k keep        save new messages after retrieval
受信後に削除しない。

-f fetchmailrc specify alternate run control file
設定ファイルの指定を行う。

(設定ファイルよりも、コマンドで指定したオプションが優先されるようである。)
# fetchmail -v -a -k -f /etc/fetchmailrc
fetchmail: WARNING: Running as root is discouraged.
File /etc/fetchmailrc must have no more than -rwx------ (0700) permissions.

ところが、以上のようにエラーが発生した。

1行目は、root権限で動作させることは非推奨だという警告である。
2行目は、/etc/fetchmailrcには「- rwx --- --- (0700)」より高いパーミッションを持たせるべきでないというものである。

とくに2行目の指摘は、/etc/fetchmailrcファイルには、メールサーバ用認証情報が含まれるので、
他のシステムユーザに見られる状態にするべきではないというものだろう。


そこで、次の考えのもとファイルの設定を修正した。

あくまでも、今回は動作テストなので、fetchmailコマンドをroot権限で実行する。
/etc/fetchmailrcファイルのパーミッションは、所有者(rootユーザー)のみが「rw」できるようにする。

パーミッションの変更を行った。

# chmod 600 /etc/fetchmailrc



○fetchmailコマンドを実行してPOPサーバからメールを受信する。


コマンドでのオプションを省略して次のように実行し、メールを受信した。

(設定ファイルで指定した方法で、受信された。)
# fetchmail -f /etc/fetchmailrc
fetchmail: WARNING: Running as root is discouraged.
これは先ほどと同じ警告であるが、メールの受信はできた。



○受信コマンド実行後、バーチャルメール・ボックスのあるディレクトリを確認した。

転送先のPostfixバーチャルユーザーのメールボックスが確認できた。

# ls /home/VMAIL/
example.com
# ls /home/VMAIL/example.com
virtualuser0  virtualuser1  virtualuser2
# ls /home/VMAIL/example.com/virtualuser1
cur  new  tmp


以上で、Fetchmailの動作テストは完了である。




◆Fetchmailをシステムユーザーアカウントで動作させ、定期的にメールを受信する設定

上記で行った方法では、次のエラーが生じた。
fetchmail: WARNING: Running as root is discouraged.

このエラーを避けるため、fetchmailコマンドをroot以外のシステムアカウントで動作させる。


○システムユーザーfetchmailを作成した。

# useradd -r -m -s /sbin/nologin fetchmail

fetchmailという名称のユーザーをシステムアカウントとして作成し、
なおかつ、/home/fetchmail というホームディレクトリを作成している。
このユーザーでのログインはできない。
オプションの意味は次の通りである。
-r, --system                  create a system account
-m, --create-home             create the user's home directory

ホームディレクトリが作成された。
# ls /home -Al
drwxr-xr-x  2 fetchmail fetchmail  4096 Mar  5 18:09 fetchmail

システムユーザとしてfetchmailが作成された。
# grep fetchmail /etc/passwd
fetchmail:x:496:496::/home/fetchmail:/sbin/nologin

○fetchmailrcの所有者と権限を変更した。

作成したfetchmailシステムアカウントが、fetchmailrcを読み取れるように設定する。

# chown fetchmail:fetchmail /etc/fetchmailrc
# chmod 400 /etc/fetchmailrc


○定期的にfetchmailを動作させてメールサーバから受信するようにした。

ユーザーfetchmailでfetchmailコマンドが3分毎に動作するようにした。

# crontab -u fetchmail -e
*/3    *       *       *       *       /usr/bin/fetchmail --invisible -f /etc/fetchmailrc
このfetchmailのファイルパスは、whichコマンドで調べた。

オプション --invisible を付けることによって、メールヘッダーに次のようなfetchmailの情報を排除できる。
Received: from example.com [....]
by mail-test with POP3 (fetchmail-6.3.17)
for <testto@example.com> (single-drop); Fri, 04 Mar 2016 20:10:00 +0900 (JST)

ところで、上記のようにfetchmaiユーザーでfetchmailが実行される場合、デフォルトで、/home/fetchmail にpidファイルが作成される。
しかし、環境変数 FETCHMAILHOME に別のディレクトリを設定することで変更も可能である。

たとえば、fetchmailを実行するスクリプト内に、次のように定義すればいい。
export FETCHMAILHOME=/somewhere/fetchmail


○設定した間隔に応じてfetchmailが自動実行されたことを確認した。

# tail /var/log/cron
Mar  5 18:48:01 test CROND[30258]: (fetchmail) CMD (/usr/bin/fetchmail --invisible -f /etc/fetchmailrc)

# tail /var/log/maillog
Mar  5 18:48:01 test fetchmail[30258]: 1 message for testmailuser at example.com (993 octets).
Mar  5 18:48:02 test postfix/smtpd[30259]: connect from localhost[::1]
Mar  5 18:48:02 test postfix/smtpd[30259]: 307EA9xxxx: client=localhost[::1]
Mar  5 18:48:02 test postfix/cleanup[30263]: 307EA9xxxx: message-id=<56DAxxxx.309xxxx@example.com>
Mar  5 18:48:02 test postfix/qmgr[17730]: 307EA9xxxx: from=<fromtestuser@example.com>, size=1198, nrcpt=1 (queue active)
Mar  5 18:48:02 test fetchmail[30258]: reading message testmailuser@example.com:1 of 1 (993 octets) flushed
Mar  5 18:48:02 test postfix/smtpd[30259]: disconnect from localhost[::1]
Mar  5 18:48:02 test postfix/virtual[30265]: 307EA9xxxx: to=<testmailuser@example.com>, relay=virtual, delay=0.14, delays=0.09/0.05/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)
Mar  5 18:48:02 test postfix/qmgr[17730]: 307EA9xxxx: removed

このログを見ると、最初にfetchmailがメールの有無をメールサーバーに確認した後に、postfixに転送している様子が見える。


☆もし、Fetchmailで受信したメールについて、
ローカル配信担当のPostfixにおいて転送ループエラーが発生してバウンスされる場合には、
次のページで説明されるオプションをFetchmailに追加すると改善されるかもしれない。

http://akira-arets.blogspot.jp/2017/08/fetchmail-postfix-mailforwardingloop.html



以下は、挙動を調べるテストなどである。


◇bounceメールの送出テスト

『例えばどういう場合に、fetchmailはbounce mailを送出するか』

以下の設定例では、fetchmailが mail.server.address.example.com からtestuserアカウントでメールを受信して、
test.kkk@example.com へ届けるために、Postfixへ転送しようとするものである。

(例↓)
poll mail.server.address.example.com with proto POP3
  user 'testuser' there with password 'passw0rd' is test.kkk@example.com
test.kkk@example.comという宛先が存在しない場合には、Postfixは送達することができない
Postfixは、fetchmailにエラーを通知する

そして、fetchmailはこのエラーについてのbounce mailを指定された方法で発信するわけである。


以下は、fetchmailがメール送信者へ向けて通知するbounce mailの例である。
転送先のアドレスが存在しないことについて、SMTPエラー情報が記載されている。
This message was created automatically by mail delivery software.

 A message that you sent could not be delivered to one or more of its
 recipients. This is a permanent error.


 Reason: Some addresses were rejected by the MDA fetchmail forwards to.

 The following address(es) failed:
test.kkk@example.com
    SMTP error: 550 5.1.1 <test.kkk@example.com>: Recipient address rejected: User unknown in virtual mailbox table

Final-Recipient: rfc822; test.kkk@example.com
 Last-Attempt-Date: Wed, 13 Jan 2016 21:19:49 +0900 (JST)
 Action: failed
 Status: 5.1.1
 Diagnostic-Code: 550 5.1.1 <test.kkk@example.com>: Recipient address rejected: User unknown in virtual mailbox table


◇fetchmailを経由したメールに追加されたヘッダーについて

fetchmailを経由してtest@example.comへ転送されたメールのヘッダーを見ると、
次のように、Receivedヘッダーに、「for」から始まる転送先情報が見られた
Received: from pop.example.com [ipアドレス]
    by fetchmail.myserver with POP3 (fetchmail-6.3.17)
    for <test@example.com> (single-drop); Fri, 15 Jan 2016 01:51:20 +0900 (JST)
ここに記載されているsingle-dropとは、
メールボックスから受信したメールを別のメールボックスへ1対1の関係で転送されるものを言う。



<参考>

「Postfixについて」

・Postfix Virtual Domain Hosting Howto
< http://www.postfix.org/VIRTUAL_README.html > 2016年1月24日

・What Those SMTP Error Codes Mean and Why You Should Care
< http://www.gettingemaildelivered.com/what-those-smtp-error-codes-mean-and-why-you-should-care > 2016年1月28日

・Postfix のサイズ 制限
< http://www.math.kobe-u.ac.jp/~kodama/tips-postfix-size.html > 2016年3月8日


「Fetchmailについて」

・Fetchmail / configuration of the .fetchmailrc
< https://calomel.org/fetchmailrc.html > 2016年1月30日

・Using Fetchmail to Retrieve Email
< https://www.linode.com/docs/email/clients/using-fetchmail-to-retrieve-email > 2016年1月28日

・Retrieving Emails From Remote Servers With fetchmail (Debian Etch)
< https://www.howtoforge.com/debian_etch_fetchmail > 2016年1月27日

・fetchmail reference manual
< https://www.freebsd.org/cgi/man.cgi?query=fetchmail&manpath=SuSE+Linux/i386+11.3 >  2016年1月27日

・Part Five: Configuring SpamAssassin and Fetchmail
< https://technpol.wordpress.com/2013/03/09/part-five-configuring-spamassassin-and-fetchmail/ > 2016年1月28日

・fetchmailrc
< http://d.hatena.ne.jp/iww/20120807/fetchmailrc > 2016年1月13日

・Administering A Mail Server
< http://thegoldenear.org/toolbox/unices/mail-server.html > 2016年1月15日



「電子メール一般について」

・メールを受け取る仕組みはどうなっていますか??
< http://ascii.jp/elem/000/000/439/439105/ > 2016年1月15日

・表4 メールヘッダ一覧
< http://www.atmarkit.co.jp/fnetwork/rensai/netpro03/mail-header.html > 2016年1月15日

2016年1月21日木曜日

【Dovecot 2.0.9】【Postfix 2.6.6 x86_64】DovecotでIMAPサーバを構築しThunderbirdから接続テストを行った【Linux CentOS6.7 64bit minimal】


imapサーバであるdovecotをインストールして、Thunderbirdなどのクライアントから、
バーチャルユーザーとしてアクセスできるように設定する。
(バーチャルユーザーとは、Linuxユーザーアカウントを持たないユーザーのことである。 )

今回は、単にDovecotでIMAPサーバを構築し、メール保存領域にアクセスできるようにするまでの設定を扱っている。

このメール保存領域(メールボックス)へ、外部からのメールを送達させる方法(Fetchmailを利用)については、
下記ページで取り扱っている。
http://akira-arets.blogspot.jp/2016/01/fetchmail-postfix-virtualmailbox.html



<構築環境について>
サーバを構築した環境は、CentOS 6.7 minimal 64bit である。

# uname -a
Linux test.localdomain 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 
また、今回は簡単のためにセキュリティーには考慮していない。
そのため、下記のテスト環境は安全なLAN内において構築する必要がある。



◆Dovecotのインストールを行った

同時に依存パッケージも導入された。

# yum install dovecot

Installed:
  dovecot.x86_64 1:2.0.9-19.el6_7.2

Dependency Installed:
  portreserve.x86_64 0:0.0.4-9.el6

Complete!

○portreserveという依存パッケージについて

dovecotのパッケージ導入時に、portreserve というパッケージも同時にインストールされた。
これは、tcpポートの予約機構であるようだ。

次の通り調べてみると、ポートのロック情報を扱うファイルとサービスが動作するようになっていた。
表示のとおりのポートが予約され、その他のプログラムがポートをバインドできないようにしているようだ。

[root@test ~]# cat /etc/portreserve/dovecot
imap
imaps
pop3
pop3s
[root@test ~]# chkconfig --list | grep port
portreserve     0:off   1:off   2:on    3:on    4:on    5:on    6:off


◆SELinuxを無効化した

次のページを参考にして設定を行った。
http://akira-arets.blogspot.jp/2012/03/centos6-disabled-selinux.html

SELinuxを行わなければ、下記の設定では認証に失敗してdovecotにログインできなかった。



◆メールの保存領域とアクセス用ユーザーを作成した

今回は、バーチャルユーザーが、dovecotで構成されるメールシステムにアクセスできるように設定する。
バーチャルユーザーはホームディレクトリを持たないので、メールの保存領域を別途作成する必要がある。


(1)メールの保存領域とするところの「親ディレクトリ」を作成した。

作成場所は任意だが、今回は、 /homeディレクトリ下に、VMAILという名前で作成した。
(virtual user's mailの略称として、VMAILという名称を用いた。)

この下位にアカウントに分けられたメールの保存用ディレクトリが保持される。
下位ディレクトリは実際に運用によって自動的に作成される。

# mkdir /home/VMAIL


(2)dovecotが保存領域にアクセスするときに使う「専用ユーザー」を作成した。

# useradd -u 5000 -s /sbin/nologin -M -U vmail
(注)
もしもシステムユーザーとした場合、次のエラーが生じて、認証に失敗する。
Couldn't drop privileges: Mail access for users with UID 495 not permitted (see first_valid_uid in config file).

○オプションの意味は次のとおり。
-u 5000 …uid 5000として作成
-s /sbin/nologin …ログインシェルの指定(Linuxシステムにはログインさせない)
-M …ホームディレクトリを作成しない
-U …ユーザー名と同じ名前でグループも作成

コマンドの結果、次のとおり、ユーザーと、グループが作成された。
[root@test home]# grep vmail /etc/passwd
vmail:x:5000:5000::/home/vmail:/sbin/nologin

[root@test home]# grep vmail /etc/group
vmail:x:5000:

(3)作成したvmailユーザー・グループに保存領域へのアクセス権限を付与した

[root@test home]# chown vmail:vmail /home/VMAIL
[root@test home]# ls -l
total 4
drwxr-xr-x. 2 vmail vmail 4096 Jan  8 17:02 VMAIL



◆認証用情報を作成した

/etc/dovecot直下に、次のように認証情報ファイルを作成した。

これは設定例である。
[root@test dovecot]# vi /etc/dovecot/users
testuser@example.com:{PLAIN}passw0rd
test@another.example.com:{PLAIN}passw0rd

(説明)
この例では、2つのバーチャルユーザーを作成している。
このシステムではログインユーザーIDとして「メールアドレス」そのものを利用している。
そして{PLAIN}に続く文字列が平文のパスワードである。

もちろん、dovecotはこれ以外の安全な認証方法も利用可能である。
ここでは、簡単のために、専用のパスワードファイルでバーチャルユーザーとそのPLAINパスワードを管理した。


○認証の設定はこれだけではない。下記のようにさらに設定を行うことによって、
このバーチャルユーザーIDとパスワードによってアクセス許可が判断されることになる。



◆認証方法、保存領域へのアクセス方法について設定した


(1)これまでの設定に応じて次のように設定した。

上記で作成した認証情報ファイルをdovecotシステムが利用するように設定した。
また、各バーチャルユーザ名に応じて保存領域内のどのサブディレクトリを使うか設定を行った。

なお、設定ファイルは、/etc/dovecot/conf.dディレクトリにデフォルトのものが既に存在しているので、
予め、auth-passwdfile.conf.ext.orig などに改名して無効化しておく。

[root@test dovecot]# vi /etc/dovecot/conf.d/auth-passwdfile.conf.ext
passdb  {
        driver = passwd-file
        args = /etc/dovecot/users
        }

userdb  {
        driver = static
        args = uid=vmail gid=vmail home=/home/VMAIL/%d/%n
        }
(説明)
二つのセクションが存在している。
passdbは、dovecotが使用する認証方法について定義している。
userdbは、ユーザー情報と、保存領域へのアクセス方法とを結びつける方法を定義している。

%dは、ユーザー情報のドメイン部分を表す。
%nは、ユーザー情報のアカウント部分を表す。

例えば、usersファイルに記載した、testuser@example.comというユーザーIDであれば、
example.com が %d で展開され、 testuser が %n で展開される。
したがって、/home/VMAIL/example.com/testuser というディレクトリが取り扱われる。

このように、ドメイン(@より右部)ごと、かつアカウント(@より左部)ごとにディレクトリが分けられて、
メールが保持され扱われることになる。

またこのとき、uidとgidでそれぞれ指定しているLinuxユーザー(vmail)とLinuxグループ(vmail)が使われる。


(2)メールの保存場所と保存形式(maildir形式)とをdovecotに通知する設定を行った。

[root@test conf.d]# vi /etc/dovecot/conf.d/10-mail.conf

次の項目を探して、 dovecotに通知するための設定を変更した。
(省略)
mail_location = maildir:/home/VMAIL/%d/%n
(省略)


(3)設定した認証方法を有効化した

[root@test conf.d]# vi /etc/dovecot/conf.d/10-auth.conf
○設定ファイル内で、次の項目のコメントアウトを解除した。
!include auth-passwdfile.conf.ext
○また、次の項目の値を変更した。
disable_plaintext_auth = no

!include項目はこれ以外にも複数存在しているが、今回はpasswdfileだけを用いるので、
それ以外の項目についてはコメントアウトとした
(認証にかかる時間が短くなった。)



◆不要なサービスを止めた

今回は、IMAPを使用し、POP3は使わない。
ポートの競合などを避ける目的のためにも、POP3プロトコルを使用しないようにした。

# vi /etc/dovecot/dovecot.conf
(略)
# Protocols we want to be serving.
#protocols = imap pop3 lmtp
protocols = imap lmtp
(略)


◆問題発生時の調査に有効なログ機能を有効化した

# vi /etc/dovecot/conf.d/10-logging.conf
(省略)
##
## Log destination.
##
# Log file to use for error messages. "syslog" logs to syslog,
# /dev/stderr logs to stderr.
log_path = syslog
# Log file to use for informational messages. Defaults to log_path.
#info_log_path =
# Log file to use for debug messages. Defaults to info_log_path.
#debug_log_path =
# Syslog facility to use if you're logging to syslog. Usually if you don't
# want to use "mail", you'll use local0..local7. Also other standard
# facilities are supported.
#syslog_facility = mail
(省略)
この設定で、/var/log/maillog に、dovecot: という名称で、情報が記載されるようになった。



◆SSLによる暗号化の設定(必要な場合)

もし、後でSSLが利用できないIMAPクライアントからの接続が必要だとわかれば、
次のようにして、SSL通信を任意とする設定をすればよい。
ただし、そのクライアントからの通信は暗号化されないので漏洩につながる。

ssl = required をyesとすることで任意となる。

# vi /etc/dovecot/conf.d/10-ssl.conf
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
# disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps
# plain imap and pop3 are still allowed for local connections
ssl = yes
再起動が必要
# systemctl restart dovecot



◆dovecotを起動した

設定を有効化するために、dovecotの再起動を行った。

[root@test dovecot]# service dovecot restart
Starting Dovecot Imap:                                     [  OK  ]



◆クライアントからの接続テスト
 
IMAPクライアントソフトウェアとして、Windows版のThunderbird(38.5.1)を利用した。

まず、ThunderbirdにIMAPサーバ接続のためのアカウント情報を作成し、IMAPサーバに接続した。
Thuderbirdで、独自サーバーのための接続アカウント情報を作成する場合にはやや難がある。後に対処法について記載した。

このとき、作成したアカウントのThunderbirdから見える「受信ボックス」などは空のままである。

こうしてIMAPサーバに接続すると同時に、サーバー側の設定済みメール保存領域ベースディレクトリには、
ドメインとアカウントごとに分かれた2階層のサブディレクトリが自動的に生成された。

[root@test VMAIL]# ls -al
total 12
drwxr-xr-x. 3 vmail vmail 4096 Jan 21 07:10 .
drwxr-xr-x. 3 root  root  4096 Jan  8 17:33 ..
drwx------  3 vmail vmail 4096 Jan 21 07:10 example.com
[root@test VMAIL]# cd example1.com/
[root@test example1.com]# ls -al
total 12
drwx------  3 vmail vmail 4096 Jan 21 07:10 .
drwxr-xr-x. 3 vmail vmail 4096 Jan 21 07:10 ..
drwx------  5 vmail vmail 4096 Jan 21 07:11 testuser

ここで、試しに、適当なメールを新規作成して、送信することなくそのまま「保存」した
すると、Thunderbirdでは「下書き」フォルダに移行される。
サーバーの保存領域内は次のようになっていた。

[root@test example.com]# cd testuser/
[root@test testuser]# ls -al

total 48
drwx------ 7 vmail vmail 4096 Jan 21 07:33 .
drwx------ 3 vmail vmail 4096 Jan 21 07:32 ..
drwx------ 2 vmail vmail 4096 Jan 21 07:32 cur
-rw------- 1 vmail vmail  248 Jan 21 07:33 dovecot.index.log
-rw------- 1 vmail vmail   48 Jan 21 07:33 dovecot.mailbox.log
-rw------- 1 vmail vmail   51 Jan 21 07:33 dovecot-uidlist
-rw------- 1 vmail vmail    8 Jan 21 07:33 dovecot-uidvalidity
-r--r--r-- 1 vmail vmail    0 Jan 21 07:32 dovecot-uidvalidity.56abcdef
drwx------ 5 vmail vmail 4096 Jan 21 07:33 .Drafts
drwx------ 2 vmail vmail 4096 Jan 21 07:32 new
-rw------- 1 vmail vmail   13 Jan 21 07:33 subscriptions
drwx------ 2 vmail vmail 4096 Jan 21 07:32 tmp
drwx------ 5 vmail vmail 4096 Jan 21 07:32 .Trash



○Thunderbirdのアカウント作成時、オートコンフィギュレーション機能に注意!

Thunderbirdでは、アカウント情報の作成処理段階でオートコンフィギュレーション機能が動作する。
このアシスト機能では、ダイアログにメールアドレスを入力することによって自動解析され、
サーバーに接続する際に必要なアカウント情報を自動構築するものである。


しかし、今回のように独自にIMAPサーバを構築した場合、
このアシスト機能では対応ができない場合があり、アカウント作成に失敗してしまう。
サーバーとの間で標準的なメールプロトコルでネゴシエーションしているようではないからだ。

また、受信(IMAP や POPなど)だけでなく、送信用サーバ(SMTP)についも、
ここで同時に自動設定されることを忘れてはいけない。
送受信それぞれのサーバの準備ができていなければ自動設定で失敗してしまう。
仮に、受信用サーバが整備されていて自動設定可能な状態だったとしても、
送信用サーバが準備されていないなどの理由で見つけられず、自動設定に失敗した場合、
そのアカウントの生成に失敗してしまう。


アシスト機能は、自動的にアカウント情報を構成するために、いくつかの方法を利用する。
たとえば、予めISPメールサービスについてデータベースが用意されていて、これが利用する。
ISPメールサービスが設定情報を記載したXMLファイルを返すものを利用する。


この問題の対策方法

<1>オートコンフィギュレーション機能の「Guessingメカニズム」を利用する。

最終的に、指定されたメールアドレスのドメイン名をベースにして、あるルールによってメールサーバーが探索される。
メールアドレスの@より右部のドメイン名を、<domain>とすると、
たとえば、次のようにしてサーバー名をドメイン名に付加して、接続先のメールサーバへのアクセスを試行する
imap.<domain>,
smtp.<domain>,
mail.<domain> 
アカウント情報の構築のために最初に与えたメールアドレスが、testuser@example.com とする。
ドメイン部が example.com なので、imap.example.com で試行した結果、メールサーバーアクセスできた場合、
メールサーバーは、IMAPプロトコル対応かつ、imap.example.comという名前であるとして、アカウント情報が構成される。

したがって、ローカルネットワーク内のDNSサーバに、Thunderbirdが名前解決できるように、
適切なレコードを登録している必要がある


<2>オートコンフィギュレーション機能を回避して、後で自分でマニュアルで設定する。

オートコンフィギュレーションで構成可能な、適当なISPのメールアカウント情報をまず作成する。
ただし、最終的にIMAPプロトコルでアクセスするためのアカウントを作成したいのならば、
IMAPプロトコルに対応したISPのメールアカウントを用いて、そのように設定しておかなければならない。
(また、このとき、無用な受信を防止するためにアクセスパスワードは設定しないようしておく。)

こうして、適当なアカウント情報を自動構成した後で、
このアカウント情報をマニュアルで修正し、自前サーバに適合するものに変える



以上




<参考>
・[SOLVED] How to disable pop3 services
< http://www.iredmail.org/forum/topic2253-iredmail-support-solved-how-to-disable-pop3-services.html > 2016年2月28日

・Autoconfiguration in Thunderbird
< https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration > 2016年1月21日

・SSLDovecotConfiguration
< https://wiki.dovecot.org/SSL/DovecotConfiguration > 2019年1月1日

2016年1月17日日曜日

【Linux CentOS6.7 64bit minimal】ウィルススキャナClamAVのインストールと動作テスト

インストール先の環境は、CentOS 6.7 64bit minimalである。

# uname -a
Linux test.test 2.6.32-573.12.1.el6.x86_64 #1 SMP Tue Dec 15 21:19:08 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux



■リポジトリepelの導入

ClamAVは標準のリポジトリには入っていない。Epelというリポジトリを利用できるようにしておく。

# yum install epel-release
あるいは、
# yum localinstall http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm


■ClamAV等のインストール

高速に動作するデーモンモードで利用することができるように、clamdというパッケージをインストールした
これによって依存パッケージとして、clamavなどのパッケージも自動的に導入された。

# yum install clamd

================================================================================
 Package             Arch             Version              Repository      Size
================================================================================
Installing:
 clamd               x86_64           0.99-3.el6           epel           165 k
Installing for dependencies:
 clamav              x86_64           0.99-3.el6           epel           1.4 M
 clamav-db           x86_64           0.99-3.el6           epel           102 M

Transaction Summary
================================================================================
Install       3 Package(s)

Total size: 104 M
Installed size: 106 M

Installed:
  clamd.x86_64 0:0.99-3.el6

Dependency Installed:
  clamav.x86_64 0:0.99-3.el6            clamav-db.x86_64 0:0.99-3.el6

Complete!



○インストール(clamavパッケージ)によって、clamというユーザーとグループが自動的に設定された。

# grep clam /etc/passwd
clam:x:497:497:Clam Anti Virus Checker:/var/lib/clamav:/sbin/nologin
# grep clam /etc/group
clam:x:497:


◎インストール(clamdパッケージ)によって、サービス起動スクリプトが自動的に設定された。

# chkconfig --list | grep clamd
clamd           0:off   1:off   2:off   3:off   4:off   5:off   6:off


□インストールされたパッケージについて情報を表示させた
# yum info clamav
Name        : clamav
Arch        : x86_64
Version     : 0.99
Release     : 3.el6
Size        : 1.4 M
Repo        : epel
Summary     : Anti-virus software
URL         : http://www.clamav.net/
License     : GPLv2
Description : Clam AntiVirus is a GPL anti-virus toolkit for UNIX. The main
            : purpose of this software is the integration with mail servers
            : (attachment scanning). The package provides a flexible and
            : scalable multi-threaded daemon, a command line scanner, and a tool
            : for automatic updating via Internet.
            :
            : The programs are based on a shared library distributed with the
            : Clam AntiVirus package, which you can use with your own software.
            : Most importantly, the virus database is kept up to date

# yum info clamd
Name        : clamd
Arch        : x86_64
Version     : 0.99
Release     : 3.el6
Size        : 165 k
Repo        : epel
Summary     : The Clam AntiVirus Daemon
URL         : http://www.clamav.net/
License     : GPLv2
Description : The Clam AntiVirus Daemon


■ウイルス定義ファイルの更新

○(注意)定義更新プログラム用のログファイルを作成した。

# touch /var/log/clamav/freshclam.log

パーミッションの設定も行っておく。

# chown clam:clam /var/log/clamav/freshclam.log

# ls -Al /var/log/clamav/freshclam.log
-rw-r--r-- 1 clam clam 0 Jan 16 18:52 /var/log/clamav/freshclam.log

上記のようにパーミッションの設定をログファイルに対して行っていなければ、
下で述べる定義ファイルの更新処理時に次のようなエラーが発生してしまう。
ERROR: Can't open /var/log/clamav/freshclam.log in append mode (check permissions!).
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).


○更新前の定義ファイルを確認した。

# ls  -Al /var/lib/clamav/
total 104560
-rw-r--r-- 1 clam clam 42346279 Dec  2 09:45 daily.cvd
-rw-r--r-- 1 clam clam 64720632 Sep 27  2013 main.cvd

○定義ファイルを専用コマンドを使って更新した。(初回のみ、時間がかかった。)

# freshclam -l /var/log/clamav/freshclam.log
ClamAV update process started at Sat Jan 16 19:00:36 2016
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
WARNING: getfile: daily-21124.cdiff not found on remote server (IP: )
WARNING: getpatch: Can't download daily-21124.cdiff from database.clamav.net
WARNING: getfile: Unknown response from remote server (IP: )
WARNING: getpatch: Can't download daily-21124.cdiff from database.clamav.net
nonblock_connect: connect timing out (30 secs)
Can't connect to port 80 of host database.clamav.net (IP: )
Trying host database.clamav.net ()...
WARNING: getfile: daily-21124.cdiff not found on remote server (IP: )
WARNING: getpatch: Can't download daily-21124.cdiff from database.clamav.net
WARNING: Incremental update failed, trying to download daily.cvd
Downloading daily.cvd [100%]
daily.cvd updated (version: 21268, sigs: 1802618, f-level: 63, builder: neo)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 270, sigs: 46, f-level: 63, builder: shurley)
[LibClamAV] ******************************************************
[LibClamAV] ***      Virus database timestamp in the future!   ***
[LibClamAV] ***  Please check the timezone and clock settings  ***
[LibClamAV] ******************************************************
Database updated (4226889 signatures) from database.clamav.net (IP: )
上記でtimestampのエラーが発生したのは、マシンの時刻が進んでしまっていたため。


○更新後の定義ファイルを確認した

# ls  -Al /var/lib/clamav/
total 106688
-rw-r--r-- 1 clam clam    75082 Jan 16 19:01 bytecode.cvd
-rw-r--r-- 1 clam clam 44444165 Jan 16 19:01 daily.cvd
-rw-r--r-- 1 clam clam 64720632 Sep 27  2013 main.cvd
-rw------- 1 clam clam      260 Jan 16 19:01 mirrors.dat

○試しに、もう一度、定義ファイルの更新操作を行った。
(初回時とは違って、早く処理が完了した。)

# freshclam -l /var/log/clamav/freshclam.log
ClamAV update process started at Sun Jan 17 04:11:31 2016
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
daily.cvd is up to date (version: 21268, sigs: 1802618, f-level: 63, builder: neo)
bytecode.cvd is up to date (version: 270, sigs: 46, f-level: 63, builder: shurley)


◎指定した時間に自動的に定義更新処理が行われるように設定した。
(例では、AM1:00に処理が行われるようにした。)

# crontab -e
0       1       *       *       *       /usr/bin/freshclam -l /var/log/clamav/freshclam.log


■スキャンを試す


<準備と確認>

clamdscanコマンド(clamscanではない!)で、スキャンを行う場合、clamdサービスが起動している必要があった。
サービスが起動していなければ、次のようにエラーが表示された。
(clamscanコマンドの場合は、サービスの起動は不要)

# clamdscan
ERROR: Could not connect to clamd on 127.0.0.1: Connection refused

----------- SCAN SUMMARY -----------
Infected files: 0
Total errors: 1
Time: 0.000 sec (0 m 0 s)

(1) clamdサービスを起動した。

サービスの起動にはやや時間がかかった。メモリが350MBほど消費されるようである

# service clamd start
Starting Clam AntiVirus Daemon:                            OK  ]

clamdのソケットファイルが作成された。
(他のプログラムと連携する場合に必要になるので、ファイルへのパスに留意しておく。)

# ls /var/run/clamav/ -al
total 12
drwxr-xr-x   2 clam clam 4096 Jan 17 06:02 .
drwxr-xr-x. 14 root root 4096 Feb 10 18:06 ..
-rw-rw-r--   1 root root    5 Jan 17 06:02 clamd.pid
srw-rw-rw-   1 root root    0 Jan 17 06:02 clamd.sock

システム起動時に自動的にサービスが動作するように設定した。

# chkconfig clamd on


カレントディレクトリ(/root)のスキャンを行った。
次のエラーになった。デフォルトではスキャンを行うプログラムの動作権限が低いということがわかった。
[root@test ~]# clamdscan
/root: lstat() failed: Permission denied. ERROR

----------- SCAN SUMMARY -----------
Infected files: 0
Total errors: 1
Time: 0.000 sec (0 m 0 s)

(2) スキャンを行うプログラムの動作権限の限定を解除した。 
コンフィグファイル内で次の項目をコメントアウトした

# vi /etc/clamd.conf

(略)
# Run as another user (clamd must be started by root for this option to work)
# Default: don't drop privileges
#User clam
(略)


設定変更後、サービスの再起動を行った
[root@test ~]# service clamd restart



<動作テスト>

再び、スキャン用プログラムを起動した。
[root@test ~]# clamdscan
/root: OK

----------- SCAN SUMMARY -----------
Infected files: 0
Time: 0.067 sec (0 m 0 s)
エラーなくスキャンが完了した。
対象ファイルが大量にある場合、結果が表示されるまで時間がかかった。



◆スキャン方法についてオプション

スキャンに際して、次のオプションを利用できる。

# clamdscan --help
                       ClamAV Daemon Client 0.99
           By The ClamAV Team: http://www.clamav.net/about.html#credits
           (C) 2007-2015 Cisco Systems, Inc.

    --help              -h             Show help
    --version           -V             Print version number and exit
    --verbose           -v             Be verbose
    --quiet                            Be quiet, only output error messages
    --stdout                           Write to stdout instead of stderr
                                       (this help is always written to stdout)
    --log=FILE          -l FILE        Save scan report in FILE
    --file-list=FILE    -f FILE        Scan files from FILE
    --remove                           Remove infected files. Be careful!
    --move=DIRECTORY                   Move infected files into DIRECTORY
    --copy=DIRECTORY                   Copy infected files into DIRECTORY
    --config-file=FILE                 Read configuration from FILE.
    --allmatch            -z           Continue scanning within file after finding a match.
    --multiscan           -m           Force MULTISCAN mode
    --infected            -i           Only print infected files
    --no-summary                       Disable summary at end of scanning
    --reload                           Request clamd to reload virus database
    --fdpass                           Pass filedescriptor to clamd (useful if clamd is running as a different user)
    --stream                           Force streaming files to clamd (for debugging and unit testing)


◆clamd の動作状況を確認

topコマンドのような専用コマンドが用意されている。
これによって、clamdがどれくらいのメモリを消費しているかがわかった。

# clamdtop



◆検出されないが「怪しいファイル」が見つかった場合

明らかに怪しいファイルだが、ClamAVで検出されない場合、次のサイトでチェックしてみる。

https://www.virustotal.com

そして、もし有害であれば、そのファイルをClamAVのチームに提出できる。
次のサイトから簡単にアップロードが可能である。

http://www.clamav.net/reports/malware

こうして、ウイルス定義データベースが更新されていくらしい。
みんなで協力しましょう。


Quick Configuration of Postfix Mail Server to Support Anti Spam and Anti Virus Using Two Methods (English Edition)



<参考>

・清水正人 「Postfix 実践入門」 技術評論社 2010年、P.330-338

・03-01-12 clamavのインストール
< http://d.hatena.ne.jp/flageo/20120301/p1 > 2016年1月17日

・ClamAV(Clam AntiVirus)の設定方法
< http://hikaku-server.com/linux/entry460.html > 2016年1月17日

・ClamAV/Clamwin/Clam Sentinelで検出されたファイルをVirusTotalで検査してClamAVに報告する方法
< http://ohtsuka.cocolog-nifty.com/blog/2011/05/clamavclamwincl.html > 2016年3月21日

2016年1月12日火曜日

Gメールアプリの返信ボタンの備忘録

一番下の返信ボタンは、話題につなげるボタン
各メールの返信ボタンは、話題を分けるボタン

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad