この文書の現在のバージョンと選択したバージョンの差分を表示します。
|
linux:podoma [2011/08/30 07:46] miyako |
linux:podoma [2011/08/31 04:46] (現在) miyako [mailmanインストール] |
||
|---|---|---|---|
| ライン 25: | ライン 25: | ||
| 容量制限がしたい | 容量制限がしたい | ||
| + | |||
| + | ===== Postfixインストール ===== | ||
| - | |||
| - | - Postfixをインストールする | ||
| Scientific Linux(SL)やCentOSなどのリポジトリにあがっているPostfixではquotaを制御できない。もうね、いい加減Postfixが取り込んでくれないかと思うが、なぜか取り込まれない。む~ん、そういう需要がないのかなぁ?? | Scientific Linux(SL)やCentOSなどのリポジトリにあがっているPostfixではquotaを制御できない。もうね、いい加減Postfixが取り込んでくれないかと思うが、なぜか取り込まれない。む~ん、そういう需要がないのかなぁ?? | ||
| - | なので、SRPMを落としてきてPATCHをあてて[[postfix:rebuild|RPMを自作]]する。 | + | なので、SRPMを落としてきてPATCHをあてて[[postfix:rebuild|RPMを自作]]する。※自作方法は後で別ページに書く予定(2011年8月30日) |
| + | SL 6.1やCentOS6ではデフォルトMTAがPostfixに変更されているはずなので、まずは既存のPostfixをアンインストールする | ||
| + | 一応、確認 | ||
| + | rpm -qa | grep postfix | ||
| + | |||
| + | yum remove postfix* | ||
| + | |||
| + | インストールはrpmコマンドを実行 | ||
| + | rpm -ivh postfix* | ||
| + | てな感じかな。yumでupdateされないようにPostfixをupdateから外すように設定をしておく必要あり。 | ||
| + | バーチャルドメインで運用するので、バーチャル用のグループとユーザを作成する | ||
| + | groupadd -g 5000 vuser | ||
| + | useradd -g vuser -u 5000 vuser | ||
| + | UIDとGIDは5000以外でも構わないが他で使われていない事を確認が必要 | ||
| + | 作成したvuserのホームディレクトリのオーナー権限とパーミッションを設定 | ||
| + | chown -R vuser:vuser /home/vuser | ||
| + | chmod -R 771 /home/vuser/ | ||
| + | useraddコマンドでディレクトリを作ってるのでオーナー権限は大丈夫かもしれないが、パーミッションは700なので必須 | ||
| + | main.cfを編集(オリジナルはもしもの場合の為、コピーして保存しておく) | ||
| + | cd /etc/postfix | ||
| + | cp -p main.cf main.cf.org | ||
| + | |||
| + | vi main.cf | ||
| + | 編集は以下の所 | ||
| + | myhostname = サーバーホスト名 | ||
| + | #inet_interfaces = localhost | ||
| + | inet_interfaces = all | ||
| + | |||
| + | #inet_protocols = all | ||
| + | inet_protocols = ipv4 | ||
| + | |||
| + | #mydestination = $myhostname, localhost.$mydomain, localhost | ||
| + | mydestination = $myhostname | ||
| + | |||
| + | #alias_maps = hash:/etc/aliases | ||
| + | alias_maps = hash:/etc/aliases, hash:/etc/mailman/aliases | ||
| + | |||
| + | home_mailbox = Maildir/ | ||
| + | |||
| + | smtpd_banner = $myhostname ESMTP unknown | ||
| + | 最低限これくらい修正をしておけば問題ないと思う | ||
| + | さらにSMTP-AUTHやバーチャルドメインの設定をmain.cfに追加(最後に追加すればOK) | ||
| + | # SMTP-AUTHの設定 | ||
| + | # | ||
| + | smtpd_sasl_security_options = noanonymous | ||
| + | smtpd_sasl_auth_enable = yes | ||
| + | smtpd_sasl_local_domain = hash:/etc/postfix/virtual_domains | ||
| + | smtpd_sasl_authenticated_header = yes | ||
| + | broken_sasl_auth_clients = yes | ||
| + | smtpd_sasl_type = dovecot | ||
| + | smtpd_sasl_path = private/auth | ||
| + | smtpd_recipient_restrictions = | ||
| + | permit_mynetworks | ||
| + | permit_sasl_authenticated | ||
| + | reject_unauth_destination | ||
| + | # バーチャルドメインの設定 | ||
| + | virtual_mailbox_domains = hash:/etc/postfix/virtual_domains | ||
| + | virtual_mailbox_base = /home/vuser/vhosts | ||
| + | virtual_mailbox_maps = hash:/etc/postfix/vmailbox | ||
| + | virtual_minimum_uid = 100 | ||
| + | virtual_uid_maps = static:5000 | ||
| + | virtual_gid_maps = static:5000 | ||
| + | virtual_alias_maps = hash:/etc/postfix/virtual, hash:/etc/mailman/virtual-mailman | ||
| + | |||
| + | # QUOTA | ||
| + | virtual_create_maildirsize = yes | ||
| + | virtual_maildir_extended = yes | ||
| + | virtual_mailbox_limit_maps = hash:/etc/postfix/vquota | ||
| + | virtual_mailbox_limit_override = yes | ||
| + | virtual_overquota_bounce = no | ||
| + | |||
| + | # SMTPSの設定 デフォルトはNO | ||
| + | # | ||
| + | smtpd_use_tls = no | ||
| + | smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem | ||
| + | smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem | ||
| + | smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache | ||
| + | SMTPSの設定はとりあえず入れてるけど、有効化してない | ||
| + | master.cfを修正してSUBMISSIONを有効にする | ||
| + | vi master.cf | ||
| + | |||
| + | submission inet n - n - - smtpd | ||
| + | |||
| + | submissionの#を外して有効化します | ||
| - | dovecot2系の修正点 | ||
| - | /etc/dovecot/dovecot.conf | + | 起動する前に、ドメインやメールアドレスを設定したテキストファイルを作成する |
| + | 1.バーチャルドメインの設定ファイル | ||
| + | /etc/postfix/virtual_domains | ||
| + | |||
| + | フォーマットは以下の通り | ||
| + | ドメイン名 required to prevent relay access denied errors | ||
| + | |||
| + | 2.メールアドレスの設定ファイル | ||
| + | /etc/postfix/vmailbox | ||
| + | |||
| + | フォーマットは以下の通り | ||
| + | メールアドレス ドメイン名/アカウント名/Maildir/ | ||
| + | |||
| + | 3.転送アドレスの設定ファイル | ||
| + | /etc/postfix/virtual | ||
| + | |||
| + | フォーマットは以下の通り | ||
| + | メールアドレス 転送先1,転送先2 | ||
| + | |||
| + | この時、 | ||
| + | メールアドレス 転送先1,&メールアドレス(左辺の転送元と同じアドレス) | ||
| + | と書く事で転送元にもメールを残すように設定が可能(実メールアカウントがある場合) | ||
| + | |||
| + | 4.容量制限の設定ファイル | ||
| + | /etc/postfix/vquota | ||
| + | |||
| + | フォーマットは以下の通り | ||
| + | メールアドレス 制限値(単位はバイト10GB=10240000000とするとだいたいあってる) | ||
| + | |||
| + | この時 | ||
| + | @ドメイン名 制限値 | ||
| + | と書く事でドメイン単位での容量制限値となる | ||
| - | IPv4のみ対応 | + | mailmanのaliasファイルも指定してるので必要ではあるが、それはmailmanの項目を参照 |
| - | #listen = *, :: | ||
| - | ↓ | ||
| - | listen = * | ||
| - | /etc/dovecot/conf.d/10-auth.conf | + | 作成したテキストファイルのままではPostfixは読込めないのでhashデータベースに変換をする |
| + | postmap 変換したい設定ファイル | ||
| - | auth_mechanisms = plain | + | 全ての設定ファイルをhashデータベース化したらPostfixの設定は完了なはず・・・ |
| - | ↓ | + | |
| - | auth_mechanisms = digest-md5 cram-md5 plain login | + | |
| - | + | ||
| - | #!include auth-passwdfile.conf.ext | + | |
| - | ↓ | + | |
| - | !include auth-passwdfile.conf.ext | + | |
| - | + | ||
| - | !include auth-system.conf.ext | + | |
| - | ↓ | + | |
| - | #!include auth-system.conf.ext | + | |
| - | /etc/dovecot/conf.d/10-mail.conf | + | ちなみに… |
| + | 設定するファイルが多くいちいちviで編集するのが面倒なのでオリジナルのコマンドを作成 | ||
| + | するのが管理には楽かもしれない。 | ||
| + | 以下は実際に作成したオリジナルコマンドの為の設定なので、テキストファイルを直接書換えて | ||
| + | 管理する場合は不要です | ||
| + | |||
| + | cd /etc/postfix | ||
| + | mkdir vhosts | ||
| + | mkdir aliases | ||
| + | mkdir quota | ||
| + | |||
| + | cd /home/vuser | ||
| + | mkdir bin | ||
| + | cd bin | ||
| + | |||
| + | オリジナルコマンドをダウンロード | ||
| + | |||
| + | chmod 775* | ||
| + | |||
| - | #mail_location = | + | デフォルトmtaにSendmailがインストールされている場合は以下の手順でデフォルトmtaをpostfizに変更する |
| - | ↓ | + | service sendmail stop |
| - | mail_location = maildir:/home/vuser/vhosts/%d/%n/Maildir | + | chkconfig sendmail off |
| + | |||
| + | alternatives --config mta | ||
| + | |||
| + | 2をインプットしてください | ||
| + | chkconfig postfix on | ||
| + | service postfix start | ||
| - | /etc/dovecot/conf.d/10-master.conf | + | ===== Dovecotインストール ===== |
| - | 81行目あたりからを以下の修正(元の状態を忘れた^^;) | + | |
| + | インストールはyumでOK | ||
| + | yum install dovecot | ||
| + | chkconfig dovecot on | ||
| + | |||
| + | |||
| + | エンタープライズ系LINUXではdovecotのバージョンが2にあがっている。 | ||
| + | 1系では/etc/dovecot.confだけで設定されていたのが、細かく分割されている。 | ||
| + | おそらく今後のバージョンアップで設定ファイルの修正をわかりやすくする為と思われる。 | ||
| + | |||
| + | もともと1系で検証してたので2系になって面倒と思ったが、基本的な書き方は同じで1ファイルか複数ファイルで管理しているかの違いと思う。 | ||
| + | |||
| + | 今回はSL6.1ベースなので2系の設定方法を記載しているが、1系の場合は/etc/dovecot.confで該当する部分を見つけて修正してやれば問題ないかと思う・・・。たぶんね。 | ||
| + | |||
| + | |||
| + | 1.IPv6を利用しない | ||
| + | 編集するファイル | ||
| + | /etc/dovecot/dovecot.conf | ||
| + | |||
| + | サーバーをIPv6を利用しない設定にしてあるので、postfixやdovecotもIPv6を利用しないように | ||
| + | 設定してやらないとerrorやwarningとなる | ||
| + | |||
| + | #listen = *, :: | ||
| + | ↓ | ||
| + | listen = * | ||
| + | |||
| + | |||
| + | 2.認証方法とセキュリティの設定 | ||
| + | 編集するファイル | ||
| + | /etc/dovecot/conf.d/10-auth.conf | ||
| + | |||
| + | md5とloginを追加。認証はテキストファイルで行うのでauth-passwdfile.conf.extを有効にする。 | ||
| + | デフォルトをはっきり覚えてないのだが、確かauth-system.conf.extが有効になってたので無効かする。 | ||
| + | |||
| + | auth_mechanisms = plain | ||
| + | ↓ | ||
| + | auth_mechanisms = digest-md5 cram-md5 plain login | ||
| + | |||
| + | #!include auth-passwdfile.conf.ext | ||
| + | ↓ | ||
| + | !include auth-passwdfile.conf.ext | ||
| + | |||
| + | !include auth-system.conf.ext | ||
| + | ↓ | ||
| + | #!include auth-system.conf.ext | ||
| + | |||
| + | |||
| + | 3.メールディレクトリの指定 | ||
| + | 編集するファイル | ||
| + | /etc/dovecot/conf.d/10-mail.conf | ||
| + | |||
| + | posutofixで指定したディレクトリを指定する。 | ||
| + | %dはドメイン名 | ||
| + | %nはユーザ名 | ||
| + | にそれぞれ置き換わる。 | ||
| + | |||
| + | #mail_location = | ||
| + | ↓ | ||
| + | mail_location = maildir:/home/vuser/vhosts/%d/%n/Maildir | ||
| + | |||
| + | |||
| + | 4.Postfixとの連携を設定する(SMTP-AUTHの認証をdovecotのユーザーで行う為) | ||
| + | 編集するファイル | ||
| + | /etc/dovecot/conf.d/10-master.conf | ||
| + | |||
| + | 81行目あたりからを以下の修正(元の状態を忘れた^^;) | ||
| + | |||
| #unix_listener auth-userdb { | #unix_listener auth-userdb { | ||
| #mode = 0600 | #mode = 0600 | ||
| ライン 97: | ライン 287: | ||
| # Auth process is run as this user. | # Auth process is run as this user. | ||
| #user = $default_internal_user | #user = $default_internal_user | ||
| - | } | ||
| - | /etc/dovecot/conf.d/auth-passwdfile.conf.ext | + | 5.認証用ファイルを設定する |
| - | 以下のように修正 | + | 編集するファイル |
| + | /etc/dovecot/conf.d/auth-passwdfile.conf.ext | ||
| + | |||
| + | 以下のように修正する。 | ||
| + | |||
| + | passdb { | ||
| + | driver = passwd-file | ||
| + | # args = scheme=CRYPT username_format=%u /etc/dovecot/users | ||
| + | args = /home/vuser/dovecot-passwd | ||
| + | } | ||
| + | |||
| + | userdb { | ||
| + | driver = passwd-file | ||
| + | #args = username_format=%u /etc/dovecot/users | ||
| + | args = /home/vuser/dovecot-passwd | ||
| + | } | ||
| + | |||
| + | |||
| + | ユーザーの作成 | ||
| + | こちらもデータベースなど使わずテキストファイルで管理する。 | ||
| + | 先ほど認証用ファイルで設定した以下のファイルに1ユーザ1行で追加していく | ||
| + | この時、Postfix側のユーザー登録がされていないとユーザーディレクトリが見つからなくてエラーとなる | ||
| + | (んじゃないかな・・・試してないけど) | ||
| + | |||
| + | 編集するファイル | ||
| + | /home/vuser/dovecot-passwd | ||
| + | |||
| + | フォーマットは以下の通り | ||
| + | メールアドレス:{セキュリティ}暗号化されたパスワード:5000:5000::/home/vuser/vhosts/%d/%u/Maildir/ | ||
| + | |||
| + | 5000:5000は最初に作成したvuserのUIDとGIDを指定する | ||
| + | |||
| + | パスワードの作成 | ||
| + | 説明が後になったが、ユーザーを作成する際に指定したセキュリティで暗号化されたパスワードを | ||
| + | 生成する必要がある。 | ||
| + | 2系の場合は以下のようにして生成する事ができる | ||
| + | |||
| + | doveadm pw -s CRAM-MD5 -p パスワード | ||
| + | |||
| + | CRAM-MD5で暗号化されたパスワードが表示されるので、それをそのままユーザー設定ファイルに設定してやればOK | ||
| + | |||
| + | dovecotの1系を利用の場合はdoveadmコマンドが存在しません | ||
| + | 1系の場合はdovecotpwというコマンドを利用して同じようにパスワードを生成する事が可能 | ||
| + | |||
| + | dovecotpw -s CRAM0MD5 -p パスワード | ||
| + | |||
| + | |||
| + | dovecotを起動する | ||
| + | デフォルトの設定のままなのでPOP3とIMAPとLMTPがオープンsれます……ん?LMTPってなんぞや? | ||
| + | dovecot1系じゃなかったと思うぞ | ||
| + | |||
| + | どうやら、ESMTPの代替プロトコルでLocal Mail Transfer Protocolの頭文字を取ってLMTPのようだ | ||
| + | ローカルにメールを配送する為のプロトコルって事だろうね(読んだままやん) | ||
| + | |||
| + | ESMTPはSMTP拡張して転送を効率化するプロトコル群の総称。 | ||
| + | |||
| + | よし、とりあえずあげておこう(ぇ | ||
| + | |||
| + | 設定ファイル | ||
| + | /etc/dovecot/dovecot.conf | ||
| + | |||
| + | 変更箇所 | ||
| + | protocols = imap pop3 lmtp | ||
| + | |||
| + | |||
| + | ===== mailmanインストール ===== | ||
| + | |||
| + | Postfix+dovecotの環境でmailmanも独自ドメインで運用するには少し面倒だったりする | ||
| + | |||
| + | mailmanにPostfixからメールを渡す際にaliasesを利用する必要があるのだがPostfixとしてのaliasesではプログラムにパイプ(|)でメールを渡す事ができない。 | ||
| + | |||
| + | その為、ローカルのaliasesを利用するのだが、/etc/aliasesに書くとごちゃごちゃになるので/etc/mailman/aliasesを利用する。 | ||
| + | |||
| + | Postfixのmain.cfをその様に設定変更する必要があるのだが、上記のPostfixの設定通りに構築がされていればすでにその設定になっているw | ||
| + | |||
| + | さて、そうすると困った事がおこる。 | ||
| + | |||
| + | バーチャルドメインで運用しているのに、ml-info@ドメイン1とml-info@ドメイン2が1台のサーバー上では共存が出来ないのである。 | ||
| + | |||
| + | このサーバーで運用するドメイン全てを同じ人が管理するのであれば上記注意点を理解してメーリングリストを作成すれば良いのだけど、ドメイン毎に管理者が違う場合、メーリングリスト名が早い者勝ちとなってしまう。 | ||
| + | |||
| + | それを回避する一つの方法として、メーリングリストの実態はユニークなリスト名にして、各ドメインでそのリストに転送をする。 | ||
| + | |||
| + | インストールはyumでOK | ||
| + | yum install mailman | ||
| + | |||
| + | コンフィグファイルを修正 | ||
| + | 編集ファイル | ||
| + | /usr/lib/mailman/Mailman/mm_cfg.py | ||
| + | |||
| + | 変更箇所 | ||
| + | #DEFAULT_URL_HOST = fqdn | ||
| + | #DEFAULT_EMAIL_HOST = fqdn | ||
| + | ↓ | ||
| + | DEFAULT_URL_HOST = fqdn | ||
| + | DEFAULT_EMAIL_HOST = fqdn | ||
| + | |||
| + | #add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST) | ||
| + | ↓ | ||
| + | add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST) | ||
| + | |||
| + | |||
| + | 以下を追加(一部、個人的なデフォルト設定の変更ありw) | ||
| + | MTA = 'Postfix' | ||
| + | DEFAULT_SERVER_LANGUAGE = 'ja' | ||
| + | DEFAULT_REQUIRE_EXPLICIT_DESTINATION = 0 | ||
| + | DEFAULT_SUBJECT_PREFIX = "[%(real_name)s:%%d]" | ||
| + | DEFAULT_LIST_ADVERTISED = No | ||
| + | OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes | ||
| + | DEFAULT_REPLY_GOES_TO_LIST = 1 | ||
| + | ## DEFAULT_GENERIC_NONMEMBER_ACTION = 2 | ||
| + | |||
| + | |||
| + | ドメインを追加 | ||
| + | POSTFIX_STYLE_VIRTUAL_DOMAINS = [ | ||
| + | 'ドメイン1' | ||
| + | 'ドメイン2' | ||
| + | ] | ||
| + | |||
| + | |||
| + | add_virtualhost('ドメイン1','ドメイン1') | ||
| + | add_virtualhost('ドメイン2','ドメイン2') | ||
| + | |||
| + | ドメインを追加する度に設定を追加してmailmanをリロードする必要があります | ||
| + | |||
| + | |||
| + | service mailman start | ||
| + | |||
| + | chkconfig mainman on | ||
| - | passdb { | + | メーリングリストの追加コマンド |
| - | driver = passwd-file | + | newlist -q リスト名 管理者メールアドレス 管理パスワード |
| - | # args = scheme=CRYPT username_format=%u /etc/dovecot/users | + | |
| - | args = /home/vuser/dovecot-passwd | + | |
| - | } | + | |
| - | userdb { | + | メーリングリストの削除コマンド |
| - | driver = passwd-file | + | rmlist -a リスト名 |
| - | #args = username_format=%u /etc/dovecot/users | + | |
| - | args = /home/vuser/dovecot-passwd | + | |
| - | } | + | |
| - | パスワード発行方法 | + | まぁ、aliasesファイルの編集やhashデータベース化も必要なのだが、それはわかるでしょ? |
| - | dovecotpwコマンドは廃止されて、かわりにdoveadmが追加されている | + | |