serverapps:postfix:postfix-mysql-dovecot
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
serverapps:postfix:postfix-mysql-dovecot [2017/07/11 09:33] – [この文章は] hayashi | serverapps:postfix:postfix-mysql-dovecot [2024/02/26 08:17] (現在) – [postfixadmin/setup.php にアクセスする] hayashi | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== postfix + mysql + Dovecot + PostfixAdmin ====== | ||
+ | ===== この文章は ===== | ||
+ | 表題組み合わせのサーバ設定記録。 | ||
+ | |||
+ | OS:FreeBSD | ||
+ | |||
+ | **2017.07.07:Update** | ||
+ | * 最新のファイル構成などに変更 | ||
+ | * DB上のパスワードはSHA512で暗号化するよう変更 | ||
+ | ==== 経緯 ==== | ||
+ | |||
+ | |||
+ | ちと、理由があって認証をMySQLにする。 | ||
+ | |||
+ | * バーチャルドメイン | ||
+ | * imap対応 | ||
+ | * smtp Auth | ||
+ | * パスワード暗号化(SHA512) | ||
+ | |||
+ | バーチャルドメインに対応するためメール保存ユーザを作成する。 | ||
+ | |||
+ | # pw groupadd -n vir_mail -g 110 | ||
+ | # pw useradd -n vir_mail -u 110 -g vir_mail -m | ||
+ | |||
+ | ===== インストールするもの ===== | ||
+ | * postfix((mysqlをONにした。指定はてきとー)) | ||
+ | * dovecot2((mysqlをON)) | ||
+ | * mysql | ||
+ | * apache | ||
+ | * php5 | ||
+ | * php5-imap((postfixadminでimap管理に必要)) | ||
+ | * postfixadmin((mysqlをON)) | ||
+ | * [[serverapps: | ||
+ | |||
+ | ===== DB作成 ===== | ||
+ | AdminerからDBを作成しました。 | ||
+ | |||
+ | *DB名:postfix | ||
+ | |||
+ | ついでにユーザも | ||
+ | |||
+ | * ユーザ名:postfix | ||
+ | * パスワード:ぱすわーど | ||
+ | * 権限:All privileges | ||
+ | |||
+ | <code sql> | ||
+ | CREATE DATABASE postfix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; | ||
+ | CREATE USER ' | ||
+ | GRANT ALL PRIVILEGES ON postfix.* TO ' | ||
+ | FLUSH PRIVILEGES; | ||
+ | </ | ||
+ | |||
+ | ===== php.ini ===== | ||
+ | |||
+ | # cat / | ||
+ | date.timezone = Asia/Tokyo | ||
+ | |||
+ | これがないと、postfixadminのバックアップがエラーになります。 | ||
+ | ===== SPFレコードの登録 ===== | ||
+ | |||
+ | 最近だとSPFレコードがないと大手のメールサーバ(gmailとか)はメールを受け取ってくれません。 | ||
+ | |||
+ | 設定については、[[serverapps: | ||
+ | |||
+ | ===== / | ||
+ | |||
+ | < | ||
+ | mydestination = | ||
+ | |||
+ | ## Virtual | ||
+ | virtual_mailbox_base = / | ||
+ | virtual_mailbox_domains = mysql:/ | ||
+ | virtual_mailbox_maps = mysql:/ | ||
+ | virtual_alias_maps = mysql:/ | ||
+ | # | ||
+ | virtual_uid_maps = static:110 | ||
+ | virtual_gid_maps = static:110 | ||
+ | |||
+ | ### SMTP Auth | ||
+ | smtpd_sasl_auth_enable = yes | ||
+ | smtpd_sasl_type = dovecot | ||
+ | smtpd_sasl_path = private/ | ||
+ | smtpd_recipient_restrictions = permit_mynetworks, | ||
+ | # broken_sasl_auth_clients = yes | ||
+ | |||
+ | ### VDA | ||
+ | # virtual_create_maildirsize = yes # unused parameter | ||
+ | virtual_mailbox_limit = 0 | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | |||
+ | ## soft quota settings | ||
+ | # | ||
+ | # | ||
+ | message_size_limit = 0 | ||
+ | mailbox_size_limit = 0 | ||
+ | </ | ||
+ | |||
+ | 今回はバーチャルのみで運用するので、mydestination は空にしておく。 | ||
+ | |||
+ | ==== 廃止されたパラメータ ==== | ||
+ | |||
+ | * virtual_create_maildirsize | ||
+ | * virtual_overquota_bounce | ||
+ | * virtual_mailbox_limit_maps | ||
+ | * virtual_maildir_extended | ||
+ | * virtual_mailbox_limit_override | ||
+ | * virtual_mailbox_limit_inbox | ||
+ | |||
+ | ===== / | ||
+ | Outbound Port25 Blocking (OP25B)に対応するため、Submissionポートを利用できるようにする | ||
+ | |||
+ | #submission inet n | ||
+ | ↓ | ||
+ | submission inet n | ||
+ | |||
+ | ===== バーチャル関連ファイル ===== | ||
+ | ==== / | ||
+ | |||
+ | < | ||
+ | user = postfix | ||
+ | password = ******** | ||
+ | hosts = localhost | ||
+ | dbname = postfix | ||
+ | table = alias | ||
+ | select_field = goto | ||
+ | where_field = address | ||
+ | </ | ||
+ | ==== / | ||
+ | |||
+ | < | ||
+ | user = postfix | ||
+ | password = ******** | ||
+ | hosts = localhost | ||
+ | dbname = postfix | ||
+ | table = domain | ||
+ | select_field = description | ||
+ | where_field = domain | ||
+ | </ | ||
+ | ==== / | ||
+ | |||
+ | < | ||
+ | user = postfix | ||
+ | password = ******** | ||
+ | hosts = localhost | ||
+ | dbname = postfix | ||
+ | table = mailbox | ||
+ | select_field = maildir | ||
+ | where_field = username | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== postfixAdminのセットアップ ===== | ||
+ | ==== / | ||
+ | |||
+ | |||
+ | # vi / | ||
+ | |||
+ | <code php> | ||
+ | <?php | ||
+ | $CONF[' | ||
+ | $CONF[' | ||
+ | $CONF[' | ||
+ | $CONF[' | ||
+ | $CONF[' | ||
+ | $CONF[' | ||
+ | $CONF[' | ||
+ | $CONF[' | ||
+ | $CONF[' | ||
+ | |||
+ | // PostfixAdmin管理画面のフッターメニューの非表示 | ||
+ | $CONF[' | ||
+ | // パスワード格納 | ||
+ | // $CONF[' | ||
+ | // $CONF[' | ||
+ | // $CONF[' | ||
+ | |||
+ | |||
+ | |||
+ | // ドメイン、アカウント追加時にドメイン部分をDNSでチェックするかどうか。 | ||
+ | // YESにするとMXレコードを参照できないドメインを登録できなくなる。 | ||
+ | // defaultはYES | ||
+ | // $CONF[' | ||
+ | // Dfault Quota 10MB | ||
+ | $CONF[' | ||
+ | |||
+ | // ユーザのmailbox容量を制限する場合 | ||
+ | // $CONF[' | ||
+ | // $CONF[' | ||
+ | |||
+ | // Welcome Message | ||
+ | $CONF[' | ||
+ | ようこそ! | ||
+ | |||
+ | メールボックスの作成が完了しました。 | ||
+ | EOM; | ||
+ | |||
+ | // | ||
+ | $CONF[' | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | **2017.07.07**:\\ | ||
+ | * 変更されているので注意: | ||
+ | * $CONF[' | ||
+ | * オプションの「-s SHA512-CRYPT」を指定してるサイトもあるが、指定しなくてもOK | ||
+ | * $CONF[' | ||
+ | |||
+ | **2024-02-26**:\\ | ||
+ | * 暗号化形式は以下がdefault | ||
+ | * # $CONF[' | ||
+ | * default設定されてるので不要になりました | ||
+ | * $CONF[' | ||
+ | * # メールボックスの格納形式。domain.tld/ | ||
+ | * $CONF[' | ||
+ | * $CONF[' | ||
+ | |||
+ | ==== apache ==== | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | Alias / | ||
+ | < | ||
+ | Options Indexes FollowSymLinks | ||
+ | AllowOverride None | ||
+ | Order allow,deny | ||
+ | Allow from xxx.yyy.zzz | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== 初回パスワードのハッシュ値を生成する ==== | ||
+ | |||
+ | # php -r "echo password_hash(' | ||
+ | |||
+ | $CONF[' | ||
+ | |||
+ | または、コマンドラインで以下のように生成することもできます。 | ||
+ | |||
+ | echo -n " | ||
+ | (stdin)= {hash文字列} | ||
+ | 以下のように記述します | ||
+ | $CONF[' | ||
+ | |||
+ | この設定の後、このページでPostfix Adminの管理者を作成します。 | ||
+ | |||
+ | ※パスワードには最低2文字の数字を含む必要があります。 | ||
+ | |||
+ | |||
+ | ==== postfixadminにアクセス ==== | ||
+ | LoginできたらOK | ||
+ | |||
+ | ==== setup.php を削除 ==== | ||
+ | |||
+ | < | ||
+ | |||
+ | ※Ver 2.3以降削除の必要はなくなりました | ||
+ | ==== Announcement ==== | ||
+ | < | ||
+ | ドメイン管理ならmotd.txt、ユーザはmotd-users.txtが表示されます。((ファイルはないけど特権管理者の場合はmotd-admin.txt))\\ | ||
+ | 邪魔なので表示されないようにします</ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | 2017.07.07:Announcementは廃止されている | ||
+ | |||
+ | ===== Dovecot ===== | ||
+ | ==== / | ||
+ | |||
+ | |||
+ | 最終行のあたりが以下のようになっていることを確認 | ||
+ | |||
+ | !include conf.d/ | ||
+ | !include_try local.conf | ||
+ | |||
+ | ==== / | ||
+ | |||
+ | protocols = pop3 imap | ||
+ | listen = * | ||
+ | |||
+ | ==== 10-auth.conf ==== | ||
+ | |||
+ | disable_plaintext_auth = no # ここをyesにするとsslが必須になります | ||
+ | auth_mechanisms = PLAIN LOGIN | ||
+ | | ||
+ | #!include auth-system.conf.ext | ||
+ | !include auth-sql.conf.ext | ||
+ | |||
+ | |||
+ | ==== 10-mail.conf ==== | ||
+ | |||
+ | < | ||
+ | mail_location = maildir:/ | ||
+ | first_valid_uid = 110 | ||
+ | first_valid_gid = 110 | ||
+ | </ | ||
+ | |||
+ | ==== 10-master.conf ==== | ||
+ | |||
+ | < | ||
+ | service auth { | ||
+ | unix_listener / | ||
+ | mode = 0666 | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== 10-ssl.conf ==== | ||
+ | |||
+ | ssl = no | ||
+ | |||
+ | ==== 20-imap.conf ==== | ||
+ | |||
+ | < | ||
+ | protocol imap { | ||
+ | imap_client_workarounds = delay-newmail tb-extra-mailbox-sep | ||
+ | mail_plugins = quota imap_quota | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== 20-pop3.conf ==== | ||
+ | |||
+ | < | ||
+ | protocol pop3 { | ||
+ | pop3_client_workarounds = outlook-no-nuls oe-ns-eoh | ||
+ | mail_plugins = quota | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== 90-quota.conf ==== | ||
+ | |||
+ | < | ||
+ | plugin { | ||
+ | quota = maildir: | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== auth-sql.conf.ext ==== | ||
+ | |||
+ | < | ||
+ | passdb { | ||
+ | driver = sql | ||
+ | args = / | ||
+ | } | ||
+ | userdb { | ||
+ | driver = sql | ||
+ | args = / | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== dovecot-postfixadmin-mysql.conf ==== | ||
+ | |||
+ | < | ||
+ | driver = mysql | ||
+ | connect = host=/ | ||
+ | default_pass_scheme = PLAIN | ||
+ | password_query = SELECT password FROM mailbox WHERE username = ' | ||
+ | user_query = SELECT concat('/ | ||
+ | 110 AS gid FROM mailbox WHERE username = ' | ||
+ | </ | ||
+ | |||
+ | ※postfixadminでは”mysqli”ですがここでは”mysql”なので注意 | ||
+ | ===== 参考 ===== | ||
+ | [[http:// | ||
+ | [[http:// | ||
+ | [[http:// | ||
+ | [[https:// |