postfix , courier-imap , amavisd 導入のメモ 2006.3.5 モモ@幼好炉 postfix , courier-imap , amavisd の定義ファイルの変更部分、 注意点とインストールスクリプトをまとめてみました。 ただしClamAV,spamassassinは導入済とします。 必要なPerl moduleは環境によって異る上にいっぱいあるので書けません。 CPANから拾って来て泣きながらコンパイルしてください。 インストールしたのは素に近いSlackware 9.1と、Slackware 8.1をベースに ほぼ全てを入れ換えて不要な物を削除したPCです。 パッケージ管理されたLinux distributionにインストールした場合の結果は 知りません。ヽ(´ー`)ノ perlは5.9.3だとNET関連のmoduleがwarning出しまくります。 精神衛生上よろしくないのでperlは5.8.8あたりにしておくのが良いです。 amavisdがメモリ喰いまくるためメモリが200MB程度しかないPCには向きません。 メールを沢山送りつけるとソフト、ハードに問題が起こるかも知れません。 メモリが少い鯖はqmailにqmail-scannerの方が幸せになれると思います。 courier-imapはpop3とpop3sを実現するには良い選択だと思います。 ############################## # postfix ############################## amavisdと連係してVirus Scan,SPAM判定を行う フィルタ設定 [/etc/postfix/master.cf] 追加 smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks_style=host -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks [/etc/postfix/main.cf] home_mailbox = Maildir/ content_filter=smtp-amavis:[127.0.0.1]:10024 配送経路定義 relayhost = [mail.example.com] # 自力配送できないものを投げるサーバ transport_maps = hash:/etc/postfix/transport # 特定ドメインに対する配送定義 ホスト名、IPに気を付ける mynetworks = 192.168.1.61/32, 127.0.0.0/8 myhostname = hoge.example.com mydomain = example.com myorigin = hanya-n.net # 送信元メールアドレスにくっつけるドメイン名 # From: yurie だったらFrom: yurie@hanya-n.net になる inet_interfaces = all 特定ドメイン宛メールの配送定義 [/etc/postfix/transport] .example.com:[192.168.1.56] example.com:[192.168.1.56] #.つきと無しの2つにわけて書かないと認識できない hash作成 postmap /etc/postfix/transport aliasはこうする postmap hash:/etc/aliases ############################## # amavis ############################## Virusは即捨てる。 SPAMは判定ミスが考えられるからマークするだけで捨てずに配送する。 pop3.pem 作成 /usr/local/share/mkpop3dcert [/etc/amavis.conf] $mydomain = 'example.com'; $sa_tag_level_deflt = -99.0 $sa_spam_report_header = 1 通知されても困るのでコメントアウトする #$virus_admin = "root\@$mydomain"; # notifications recip. #$mailfrom_notify_admin = "root\@$mydomain"; # notifications sender #$mailfrom_notify_recip = "root\@$mydomain"; # notifications sender #$mailfrom_notify_spamadmin = "root\@$mydomain"; # notifications sender #$mailfrom_to_quarantine = ''; # null return path; uses original sender if undef #$sa_spam_subject_tag = '***SPAM*** '; $myhostname = 'yurie_hitotsubashi.example.com'; #$notify_method = 'smtp:[127.0.0.1]:10025'; #$forward_method = 'smtp:[127.0.0.1]:10025'; # set to undef with milter! SPAMだからといって捨てられても困るので捨てないようにする $final_banned_destiny = D_PASS; $final_spam_destiny = D_PASS; $final_bad_header_destiny = D_PASS; ['ClamAV-clamd', 以下のコメントを外して有効にする ['H+BEDV AntiVir をコメントアウトする ############################## # courier-imap ############################## pop3とpop3sが実現できればよい。 [/usr/local/etc/pop3d] POP3AUTH="LOGIN" TCPDOPTS="-nodnslookup -noidentlookup -access=/usr/local/etc/pop3d_ip.access.db" couriertcpd設定 -access=filename でアクセス可能なIPを設定する DB作成 courier-authlib/makedat/makedatを+xして /usr/local/libexecにコピーする cp makedat/makedat makedat/makedatprog /usr/local/libexec chmod +x /usr/local/libexec/makedat /usr/local/libexec/makedat -src=/usr/local/etc/pop3d_ip.access \ -tmp=/usr/local/etc/pop3d_ip.access.tmp \ -file=/usr/local/etc/pop3d_ip.access.db [pop3d_ip.access] 192.68.0deny 192.68.0.10allow *deny 自ホストのみなら下記のようになる 127allow 192.168.1.10allow #自分のIPアドレス *deny [/usr/local/etc/pop3d.cnf] emailAddress=postmaster@example.com ############################## # courier-authlib ############################## [/usr/local/etc/authlib/authdaemonrc] authmodulelist="authuserdb authpwd authshadow authcustom authpipe" authmodulelistorig="authuserdb authpwd authshadow authcustom authpipe" ログにエラーが出ていたらconfigureオプションで無理矢理作ること ############################## ############################## ############################## # ここから下はスクリプト ############################## ############################## # rc files ############################## [rc.postfix] #!/bin/sh case "$1" in start) echo -n "Starting Postfix: " /usr/local/sbin/amavisd start /usr/sbin/postfix start echo ;; stop) echo -n "Shutting down Postfix: " /usr/sbin/postfix stop /usr/local/sbin/amavisd stop echo ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start | stop | restart}" exit 1 esac exit 0 [rc.courier] #!/bin/sh POP3BIN=/usr/local/libexec POP3ETC=/usr/local/etc case "$1" in start) echo -n "Starting Courier: " /usr/local/sbin/authdaemond start ${POP3BIN}/makedat -src=${POP3ETC}/pop3d_ip.access \ -tmp=${POP3ETC}/pop3d_ip.access.tmp \ -file=${POP3ETC}/pop3d_ip.access.db ${POP3BIN}/pop3d.rc start ${POP3BIN}/pop3d-ssl.rc start echo ;; stop) echo -n "Shutting down Courier: " ${POP3BIN}/pop3d-ssl.rc stop ${POP3BIN}/pop3d.rc stop /usr/local/sbin/authdaemond stop echo ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start | stop | restart}" exit 1 esac exit 0 ############################## # インストールスクリプト ############################## [install.sh] #!/bin/sh ################################### # courier-authlib ################################### FILENAME=courier-authlib-0.58 bzip2 -d -c $FILENAME.tar.bz2 | tar xf - cd $FILENAME ./configure --prefix=/usr/local # authshadow,authpwdが無効になってしまう場合はオプションで明示する #./configure --prefix=/usr/local --with-authshadow --with-authpwd make make install make install-migrate make install-configure cd .. ################################### # courier-imap ################################### ## makeまでroot以外で行い、install install-configureをrootで行うこと FILENAME=courier-imap-4.1.0 bzip2 -d -c $FILENAME.tar.bz2 | tar xf - cd $FILENAME ./configure --prefix=/usr/local make make install make install-configure cp makedat/makedat makedat/makedatprog /usr/local/libexec chmod +x /usr/local/libexec/makedat cd .. ################################### # postfix ################################### groupadd postfix groupadd postdrop useradd postfix -d /nonexistent -g postfix -s /sbin/nologin FILENAME=postfix-2.2.9 tar xzf $FILENAME.tar.gz cd $FILENAME make make install cd .. ################################### # amavisd-new ################################### FILENAME=amavisd-new-2.3.3 tar xzf $FILENAME.tar.gz cd $FILENAME groupadd amavis useradd amavis -d /nonexistent -g amavis -s /sbin/nologin mkdir /var/amavis mkdir /var/amavis/tmp /var/amavis/var /var/amavis/db /var/amavis/home chown -R amavis.amavis /var/amavis chmod -R 750 /var/amavis cp amavisd /usr/local/sbin/ chown root /usr/local/sbin/amavisd chmod 755 /usr/local/sbin/amavisd cp amavisd.conf /etc/ chown root /etc/amavisd.conf chmod 644 /etc/amavisd.conf mkdir /var/virusmails chown amavis.amavis /var/virusmails chmod 750 /var/virusmails # pop3.pem 作成 /usr/local/share/mkpop3dcert cd .. ###################################