HowTos/Postfixとの統合
出典: ScalixWikiJP
Scalix Wiki -> How-Tos -> HowTos/Postfixとの統合
このセクションは HowTos/Complete_Postfix(米国サイト)を もとに作成しています。
目次 |
まえがき
Scalixシステムではsendmailを使用しています。 しかし、sendmailの設定ファイルの古くさいの文法なんか使いたくない、あるいは、Postfixが持つ現代的で安全なモジュール構造の利点を享受したいなど、 ScalixシステムにPostfixを統合したい理由がたくさんあります。
このHow Toを読んだ後には、MTAを構築する準備ができているでしょう。
そのときまでには、次のことを達成しています。
- sendmailは単なる思い出になる
- postfixはインターネットのホストからそのドメインに届いたメールを受け取る
- postfixは認証されたクライアントによる中継を許可する
- postfixはローカルユーザに届いたメールをScalixシステムに配送する
- amavisd-newは届いたメールをウィルスチェックしたりスパムチェックしたりする。
ScalixとPostfixの統合
Postfix のインストール
まず、Postfixをインストールし、Sendmail を止める必要があります。 パッケージ管理上、インストールされているsendmailを残したままにします。 ScalixサーバのRPMパッケージはsendmailに依存しているからです。
この文書ではRedHat/Fedoraの例を記述します。DebianやSuSEでも利用できます。
RedHat:
この例で使っているソフトウェアのほとんどは RHEL 4U4 CD セットに含まれています。RedHat Networkのサブスクリプションを所有している場合は、 手動でパッケージをインストールするよりも単にup2date install パッケージ名 とするだけでよいです。
rpm -ivh postfix-2.2.10-1.RHEL4.2.i386.rpm system-switch-mail-0.5.25-3.noarch.rpm
これで Postfix がインストールされます。system-switch-mail-nox コマンドを実行し、Postfix に切替えます。
コマンドラインで切り替えを行う場合は、alternativesコマンドを実行します。(日本語訳で追加)
alternatives --config mta
Postfixを外側のIPでリッスンするように設定し、omsmtpdのポート番号を変更する
標準の Scalix システムでは、omsmtpd は、パブリック IP の 25 番ポートでリッスンしており、また、 Sendmail はループバックアドレスの 25 番ポートでリッスンしています。 受信するメールのウィルスやスパムのスキャンを行うといったPostfixの柔軟性を強化したいので、 Postfix にそれら両方のアドレスでリッスンするようにし、別のポートで動作する omsmtpd にメールを配送させます。
omsmtpd がリッスンするポートを変更するため、/var/opt/scalix/XX/s/sys/smtpd.cfg に次の行を追加してください。$FQDN の部分は、 サーバの完全修飾ドメイン名に置き換えてください。
LISTEN=$FQDN:10025
上記の変更を有効にするため、コマンド omoff -d0 -w smtpd; omon smtpd でomsmtpdを再起動させます。
Postfix に新たに解放されたポートを割り当てるため、/etc/postfix/main.cf から次の行を削除します。
inet_interfaces = localhost
上記の変更を有効にするため、コマンド /etc/init.d/postfix reload を実行してください。
これで、Postfix が omsmtpd と置き換えられました。
ウェブアプリケーションの設定変更
omsmtpdのポート番号を変更したら、Scalixのウェブアプリケーションの設定も変更する必要があります。
Scalix Web Accessの設定ファイル/var/opt/scalix/XX/webmail/swa.propertiesを編集して、次のようにswa.email.smtpServerの設定行の末尾にomsmtpdがリッスンしているポート番号':10025'を加えます。
swa.email.smtpServer=scalix.example.org:10025
次に、Platform APIの設定ファイル/var/opt/scalix/XX/platform/platform.propertiesを編集して、次のようにSMTPサーバのポート番号をomsmtpdがリッスンしているポート番号'10025'に書き換えます。
smtp.port=10025
以上の設定変更が終わったら、Scalix Tomcatの再起動を行ってください。
# /etc/init.d/scalix-tomcat restart
メッセージサイズの調整
Postfixのメッセージサイズ制限値の設定パラメータmessage_size_limitの値には、Scalix Web Accessの添付ファイルアップロード最大値の4/3倍に2キロバイトを加えた値より大きな値を設定してください。この設定を行わないと、Scalix Web Accessで添付ファイル付きのメールを送ったときに問題が生じることがあります。
Scalix Web Accessの設定ファイル/var/opt/scalix/XX/webmail/swa.propertiesには次のような添付ファイルアップロード最大値が記述されています。
swa.system.maxAttachmentUploadKilobytes=10240
デフォルトでは10240キロバイトになっています。 一方、Postfixのメッセージサイズ制限値のデフォルト値は10240000バイトになっており、Scalix Web Accessのアップロード制限値に近い添付ファイルを付けたメールはPostfixは受け取ることができません。そのため、設定パラメータの調整を行います。
Scalix Web Accessの設定値が10240キロバイトの場合には次のような計算を行います。
10240 x 1024 x 4/3 + 2048 = 13983061 ≒ 14000000
この場合はPostfixの設定ファイル/etc/postfix/main.cfに次の設定パラメータを追加します。
message_size_limit=14000000
transportの設定
このセクションではPostfix が受信したメールを omsmtpd に渡すための設定を説明します。 メールがシステムに到着すると、Postfix はアドレスがScalixサーバに属するかをチェックし、属している場合は omsmtpd へメールを配信します。それ以外のメールは、Postfix がメールの宛先に直接配信します。
ユーザのアドレスがローカルユーザのものであるかどうかをLDAP ディレクトリでチェックするようにPostfixを設定します。 ファイル /etc/postfix/scalix-transport.cf を作成し、LDAP ディレクトリに関する次の情報を記述してください。
server_host = ldap://localhost:5757 query_filter = mail=%s bind = no result_attribute = scalixInstanceMailHost result_format = smtp:[%s]:10025 size_limit = 1 domain = scalix.demo
上記の scalix.demo の部分は、Scalix サーバのプライマリドメインに置き換えてください。
上記のファイルをPostfixに設定します。/etc/postfix/main.cf ファイルの最後に、次の行を追加してください。
transport_maps = ldap:/etc/postfix/scalix-transport.cf
また、local_recipient_maps についても次のように変更してください。(この内容は、米国サイトのwikiには記述がありません。)
変更前
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
変更後
local_recipient_maps = proxy:unix:passwd.byname $alias_maps ldap:/etc/postfix/scalix-transport.cf
これで、PostfixはSendmailを置き換え、omsmtpdのジョブの一部になりました。 POP3ユーザやIMAPユーザから送信されたメールも受信する必要があります。 しかし、これらのユーザのメールを中継するためには、Scalixのパスワードで認証する必要があります。
SMTP認証の設定
SMTP認証を行うために、Cyrus SASLライブラリが必要です。
RedHat の場合、cyrus-sasl、cyrus-sasl-md5、cyrus-sasl-plain をインストールしてください。Debian の場合、必要な認証ヘルパーをインストールするために、apt-get libsasl2-modules-ldap sasl2-bin を実行してください。
ScalixのLDAPディレクトリへの認証にはsaslauthdを使います。 まず、/etc/sysconfig/saslauthd をエディタで開き、設定を次の内容に変更してください。 これで、saslauthdはldapを使うようになり、設定ファイルの場所が変更されし、キャッシュが有効になります。
MECH=ldap FLAGS="-O /etc/postfix/saslauthd.conf -c"
また、ブート時にsaslauthdが起動するように次のコマンドでsaslauthdの起動レベルを変更します。
/sbin/chkconfig --level 345 saslauthd on
ディレクトリ /etc/postfix/sasl/ を作成します。
ファイル /etc/postfix/sasl/smtpd.conf を作成し、次の内容を記述します。
pwcheck_method: saslauthd mech_list: PLAIN LOGIN log_level: 5 saslauthd_path: /var/run/saslauthd/mux auxprop_plugin: ldap
/etc/postfix/saslauthd.conf を作成し、次のようなLDAPディレクトリに接続するための情報を記述します。
ldap_servers: ldap://localhost:389/ ldap_search_base: o=Scalix ldap_auth_method: bind ldap_filter: omUlAuthid=%u ldap_version: 3 ldap_bind_dn: cn=sxadmin,o=scalix ldap_bind_pw: super_secret
ここで、ldap_bin_pwの行のsuper_secretの部分をsxadminの実際のパスワードに置き換えてください。
以上で、sasl のセットアップは完了です。 次に、postfixがSMTP認証でsaslを使用するように設定します。
/etc/postfix/main.cf に次の内容を追加(または変更)してください。
smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = no smtpd_sasl_local_domain = smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes
また、メールを中継する際に認証を要求するように、次の内容も /etc/postfix/main.cf に設定してください。
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
※shin0211記入 smtpd_client_restrictionsとsmtpd_sender_restrictionsの設定は必要なのでしょうか?
※taki回答 無くてもよいです。
/etc/init.d/postfix reload で設定の変更を反映させます。 以上で、ScalixとPostfixを統合する設定が完了しました。
高度な設定
これ以降の文章はScalixに直接的には関係ありません。単にPostfixの話ですので、参考程度にとどめてください。
現代のインターネットでは認証付きのSMTPを使うだけでは十分ではありません。 暗号を使ってパスワードを保護するべきです。
Postfix上でのTLSの設定
SMTP(あるいは他のプロトコル)通信を暗号化するために、証明書が必要です。 以前に、一度も証明書を生成したことがなければ、 これは SSLを扱うよい機会になります。初めてのCSR(証明書署名要求)を生成して、自己署名してください。
以前、証明書を生成したことがあれば、それを使うか、再び生成してください。 あなたが証明書を持つときに戻って、/etc/sslにファイルを置いてください。
Postfixが他のサーバに対してをTLSの利用を申し出るように設定します。
smtpd_use_tls = yes smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/ssl/key.pem smtpd_tls_cert_file = /etc/ssl/cert.pem smtpd_tls_CAfile = /etc/ssl/cacert.pem smtpd_tls_security_level = may smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom
