メールサーバー設定 · 4 min read · Feb 14, 2026
Exim、MySQL、Cyrus-Imapd、Horde Webmailを使用したメールサーバーの設定 - Centos 5.1 - ページ 2
設定
Apacheの設定
- バーチャルホスティングを有効にし、デフォルトのバーチャルホストを作成します。/etc/httpd/conf/httpd.confを編集し、最後に以下を追加します。
NameVirtualHost *:80ServerAdmin [email protected] - Horde Webmail用のバーチャルホストを作成し、上記の下に以下を追加します。
Servername mail.home.topdog-software.com DocumentRoot /usr/share/horde ErrorLog logs/mail-error_log CustomLog logs/mail-access_log common - Hordeのセキュリティ設定を有効にするために、/etc/httpd/conf.d/horde.confファイルを編集し、以下のように設定します。
#Alias /horde /usr/share/hordeOptions +FollowSymLinks php_admin_flag safe_mode off php_admin_flag magic_quotes_runtime off php_flag session.use_trans_sid off php_flag session.auto_start off php_admin_flag file_uploads on #php_admin_flag allow_url_fopen on php_value post_max_size 20M php_value upload_max_filesize 10M php_admin_value open_basedir "/usr/share/horde:/usr/share/horde/config:/usr/share/pear:/tmp" php_admin_flag register_globals off Order Deny,Allow Deny from all Order Deny,Allow Deny from all - PHPのメモリ制限を増やすために、/etc/php.iniを編集し、以下のように変更します。
memory_limit = 64M - SSLの下でHordeを有効にするために、/etc/httpd/conf.d/ssl.confを編集し、デフォルトのバーチャルホストの
default:443> タグの間に以下を追加します。 Servername mail.home.topdog-software.com:443 DocumentRoot /usr/share/horde
Eximの設定
- MTAをeximに切り替えます。
system-switch-mail (select exim)
ウイルス対策 / Sanesecurityチェック
- Exim (/etc/exim/exim.conf)を設定して、clamavを使用して受信メールをスキャンし、ウイルスに感染したメールや画像、PDFスパムをSMTP時に拒否します。
av_scanner = clamd:/var/run/clamav/clamd.sock
RBL
- acl_check_rcptの下にRBLを設定します。
drop message = REJECTED because $sender_host_address is in a black list spamhaus.org dnslists = zen.spamhaus.org drop message = REJECTED because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text dnslists = bl.spamcop.net drop message = REJECTED because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text dnslists = dnsbl.sorbs.net
スパム対策
- 逆引きDNSがないサーバーからのメッセージを拒否したい場合は、acl_check_rcptの下に以下を追加します。例外リストがあり、そこにACLを適用しないドメインを追加できます。また、送信者が有効かどうかを確認するために、送信先アドレスにテストメッセージを配信しようとします。
drop message = REJECTED - We don't accept messages from hosts without reverse DNS log_message = No reverse DNS domains = ! lsearch;/etc/exim/checks_exempt_hosts !verify = reverse_host_lookup !verify = sender/callout=2m,defer_ok !condition = ${if eq{$sender_verify_failure}{} } - HELO/EHLOを提供しないクライアントからのメッセージを拒否するには、acl_check_rcptに以下を追加します。
drop message = REFUSED - no HELO/EHLO greeting log_message = remote host did not present greeting condition = ${if def:sender_helo_name {false}{true}} - サーバーへの接続をレート制限することもできます。これをacl_check_connectに追加します(サイトに合わせてパラメータを微調整する場合は、Eximのドキュメントを参照してください)。
deny ratelimit = 250 / 15m / strict message = You can only send $sender_rate per $sender_rate_period log_message = RATE: $sender_rate/$sender_rate_period (max $sender_rate_limit) accept - 悪意のあるスパムボットがマシンを荒らすのを防ぎます。
smtp_accept_max_nonmail = 30 smtp_max_unknown_commands = 1 - パイプラインを宣伝しないようにします。
pipelining_advertise_hosts = - Spamassassinチェックを有効にします。
spamd_address = /var/run/spamassassin/spamd.sock - SMTP時にスコアが6を超えるすべてのメッセージを拒否します。(acl_check_data)
accept condition = ${if >={$message_size}{100000} {1}} add_header = X-Spam-Note: SpamAssassin run bypassed due to message size warn spam = nobody/defer_ok add_header = X-Spam-Flag: YES accept condition = ${if !def:spam_score_int {1}} add_header = X-Spam-Note: SpamAssassin invocation failed warn add_header = X-Spam-Score: $spam_score ($spam_bar)\n\# X-Spam-Report: $spam_report drop condition = ${if >{$spam_score_int}{60} {1}} message = Your message scored $spam_score SpamAssassin point. Report follows:\n\ $spam_report
メールルーティング
- Mysqlデータベースへのアクセスを有効にします。
hide mysql_servers = localhost/horde/horde/hordepassword - ローカル配信ルーターを修正して、Cyrusに配信しますが、配信前にユーザーのメールアドレスを確認します(exim.confのルーターセクションで)。
localuser: driver = accept local_parts = ${lookup mysql {SELECT REPLACE(user_uid,'${quote_mysql:@$domain}','') \ as user FROM horde_users WHERE user_uid='${quote_mysql:$local_part@$domain}'}{$value}} transport = local_delivery cannot_route_message = Unknown user - LMTPソケットを介してCyrusに配信するためのトランスポートを作成します。
local_delivery: driver = lmtp socket = /var/lib/imap/socket/lmtp batch_max = 50 user = cyrus
SMTP認証
- /etc/exim/exim.confの認証セクションに以下を追加します。
plain: driver = plaintext public_name = PLAIN server_prompts = : server_set_id = $2 server_condition = ${if saslauthd{{$2}{$3}{pop}}{1}{0}} server_advertise_condition = true login: driver = plaintext public_name = LOGIN server_prompts = "Username:: : Password::" server_condition = ${if saslauthd{{$1}{$2}{pop}}{1}{0}} server_set_id = $1 server_advertise_condition = true
完全なサンプル設定
完全な設定ファイルはここからダウンロードできます。
Mysqlの設定
- TCPネットワーキングを無効にします。/etc/my.cnfを編集し、mysqldセクションに以下を追加します。
skip-networking - rootパスワードを設定します。 /usr/bin/mysqladmin -u root password ‘new-password’
/usr/bin/mysqladmin -u root -h your_host_name password ‘new-password’ -p
Hordeの設定
- SQLファイルを編集し、HordeユーザーのMySQLパスワードを変更します。 cp /usr/share/horde/scripts/sql/create.mysql.sql .
vi create.mysql.sqlREPLACE INTO user (host, user, password) VALUES ( 'localhost', 'horde', -- 重要: このパスワードを変更してください! PASSWORD('hordepassword') ); - ユーザーを作成し、Hordeデータベースをポピュレートします。
mysql -p < create.mysql.sql - turba(アドレス帳)のテーブルを作成します。
mysql -p horde < /usr/share/horde/turba/scripts/sql/turba_objects.mysql.sql - kronolith(カレンダー)のテーブルを作成します。
mysql -p horde < /usr/share/horde/kronolith/scripts/sql/kronolith.mysql.sql
Horde設定
- Hordeの基本設定を作成します。/usr/share/horde/config/conf.php
- Hordeの設定を編集して、Webメールをログイン時のデフォルトアプリケーションにします。/usr/share/horde/config/prefs.phpファイルを編集し、$_prefs[‘initial_application’]を以下のように変更します。
$_prefs['initial_application'] = array( 'value' => 'imp', 'locked' => true, 'shared' => true, 'type' => 'select', 'desc' => sprintf(_("What application should %s display after login?"), $GLOBALS['registry']->get('name')) ); - HordeがWebサーバーのデフォルトルート内で動作するようにします。/usr/share/horde/config/registry.phpを編集し、$this->applications[‘horde’]を以下のように変更します。
$this->applications['horde'] = array( 'fileroot' => dirname(__FILE__) . '/..', 'webroot' => '', 'initial_page' => 'login.php', 'name' => _("Horde"), 'status' => 'active', 'templates' => dirname(__FILE__) . '/../templates', 'provides' => 'horde' );
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。