arinux

Linux サーバー設定備忘録
<< Postfix + Dovecot + SMTP-auth | main | MySQL (7) - MySQL Cluster (1) >>
MySQL (6) - virtual_alias_maps, virtual_alias_domains


メモ バーチャルドメインによるメール転送


  1. 以下の図のように、自分自身とは違うドメイン宛のメールを受信した際に、エイリアス先のアドレスへ転送します。

  2. バーチャルドメインによるメール転送


  3. この例では、「examples.com」ドメインに対する MX レコードが、「mail.arinux.net」であると仮定しています。
  4. [mail]# dig examples.com MX
    ;; ANSWER SECTION:
    examples.com.           86400   IN      MX      10 mail.arinux.net.
    


  5. 自分自身とは違うドメイン宛のメールを実際のメールサーバーに届けるためには、そのドメインを「virtual_alias_domains」に記述しておきます。ここに書かれていないドメイン宛のメールは、宛先不明として処理されます。
  6. main.cf
    virtual_alias_domains = hash:/usr/local/etc/postfix/valias_domains
    
    valias_domains
    examples.com anything
    


  7. 実際の転送先は、「virtual_alias_maps」に記述します。
    main.cf
    virtual_alias_maps = hash:/usr/local/etc/postfix/virtual_alias_maps
    
    valias_alias_maps
    ari@examples.com ari@mailserver.jp
    
    虫眼鏡 この場合は、以下のように各ファイルを DB化して使用します。


    [mail]# postmap /usr/local/etc/postfix/virtual_alias_domains
    [mail]# postmap /usr/local/etc/postfix/virtual_alias_maps
    


  8. これらの情報を、MySQL DB へ登録して、そこから読み込みます。



メモ MySQL への virtual_alias_maps, virtual_alias_domains の登録


※ 以下の操作は、全てマスターで実施します。


  1. mysql に root でログインします。
  2. [master]# mysql -u root -p
    Enter password:
    


  3. 「virtual_alias」用の DB を作成します。
  4. mysql> CREATE DATABASE valias;
    Query OK, 1 row affected (0.00 sec)
    


  5. DB が作成されたことを確認します。
  6. mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | usersdb            |
    | mysql              |
    | repldb             |
    | test               |
    | valias             |
    +--------------------+
    5 rows in set (0.00 sec)
    


  7. ローカルから DB へ接続するためのユーザーを作成します。このユーザーには、全ての権限を与えます。
  8. mysql> GRANT ALL PRIVILEGES ON valias.* TO  vaadmin@localhost IDENTIFIED BY '3joTz_Csm7wf';
    Query OK, 0 rows affected (0.00 sec)
    


  9. クライアントから DB へ接続するためのユーザーを作成します。このユーザーには、SELECT 権限のみ与えます。
  10. mysql> GRANT SELECT ON valias.* TO  vauser@'mail.arinux.net' IDENTIFIED BY 'w7f}jTeq4zNe';
    Query OK, 0 rows affected (0.00 sec)
    


  11. ユーザ情報を反映します。
  12. mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.00 sec)
    


  13. ユーザーが作成されたことを確認します。
  14. mysql> SELECT * FROM mysql.db ¥G
    (以下、省略)
    mysql> SELECT * FROM mysql.user ¥G
    (以下、省略)
    mysql> SHOW GRANTS for vauser@'mail.arinux.net';
    +----------------------------------------------------------------------------------+
    | Grants for cwuser@test15.arinux.net                                              |
    +----------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'vauser'@'mail.arinux.net' IDENTIFIED BY PASSWORD
     '*F71855E2C14BA3F48906F7B0AAFB99F172020C19'                                       |
    | GRANT SELECT ON `valias`.* TO 'vauser'@'mail.arinux.net'                         |
    +----------------------------------------------------------------------------------+
    2 rows in set (0.00 sec)
    


  15. valiasmap テーブルを作成します。
  16. 青い旗 以下をコピーして、mysql> プロンプトで貼り付ければ入力できます。
    CREATE TABLE valiasmap (
      valias_id int(11) NOT NULL auto_increment primary key,
      status char(1) DEFAULT 'A',
      mail varchar(80) DEFAULT '' NOT NULL,
      domain varchar(50) DEFAULT '' NOT NULL,
      alias varchar(80) DEFAULT '' NOT NULL
    );
    
    mysql> CREATE TABLE valiasmap (
        ->   valias_id int(11) NOT NULL auto_increment primary key,
        ->   status char(1) DEFAULT 'A',
        ->   mail varchar(80) DEFAULT '' NOT NULL,
        ->   domain varchar(50) DEFAULT '' NOT NULL,
        ->   alias varchar(80) DEFAULT '' NOT NULL
        -> );
    Query OK, 0 rows affected (0.00 sec)
    


  17. valiasmap テーブルが作成されたことを確認します。
  18. mysql> SHOW TABLES;
    +------------------+
    | Tables_in_valias |
    +------------------+
    | valiasmap        |
    +------------------+
    1 row in set (0.00 sec)
    
    mysql> SHOW FIELDS FROM valiasmap;
    +-----------+-------------+------+-----+---------+----------------+
    | Field     | Type        | Null | Key | Default | Extra          |
    +-----------+-------------+------+-----+---------+----------------+
    | valias_id | int(11)     | NO   | PRI | NULL    | auto_increment |
    | status    | char(1)     | YES  |     | A       |                |
    | mail      | varchar(80) | NO   |     |         |                |
    | domain    | varchar(50) | NO   |     |         |                |
    | alias     | varchar(80) | NO   |     |         |                |
    +-----------+-------------+------+-----+---------+----------------+
    5 rows in set (0.00 sec)
    


  19. valiasmap にデータを追加します。
  20. mysql> INSERT INTO valiasmap VALUES (1,'A','ari@examples.com','examples.com','ari@mailserver.jp');
    Query OK, 1 row affected (0.00 sec)
    


  21. 追加されたことを確認します。
  22. mysql> SELECT * FROM valiasmap;
    +-----------+--------+------------------+--------------+--------------------+
    | valias_id | status | mail             | domain       | alias              |
    +-----------+--------+------------------+--------------+--------------------+
    |         1 | A      | ari@examples.com | examples.com | ari@mailserver.jp  |
    +-----------+--------+------------------+--------------+--------------------+
    1 rows in set (0.00 sec)
    


  23. ログアウトします。
  24. mysql> ¥q
    Bye
    
    [master]#
    



メモ virtual_alias_maps, virtual_alias_domains の設定


  1. main.cf に以下を追加します。
  2. [mail]# vi /usr/local/etc/postfix/main.cf
    
    virtual_alias_domains = mysql:/usr/local/etc/postfix/mysql-alias_domains.cf
    virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql-alias_maps.cf
    


  3. 「mysql-alias_domains.cf」を作成します。
  4. [mail]# vi /usr/local/etc/postfix/main.cf/mysql-alias_domains.cf
    
    hosts = slave01.arinux.net slave02.arinux.net   #スペースで区切って複数指定可
    user = vauser
    password = w7f}jTeq4zNe
    dbname = valias
    query = SELECT domain FROM valiasmap WHERE mail='%s' AND status='A'
    


  5. 「mysql-alias_maps.cf」を作成します。
  6. [mail]# vi /usr/local/etc/postfix/main.cf/mysql-alias_maps.cf
    
    hosts = slave01.arinux.net slave02.arinux.net   #スペースで区切って複数指定可
    user = vauser
    password = w7f}jTeq4zNe
    dbname = valias
    query = SELECT alias FROM valiasmap WHERE mail='%s' AND status='A'
    


  7. postfix を再起動します。
  8. [mail]# /etc/rc.d/init.d/postfix restart
    Shutting down postfix:                                     [  OK  ]
    Starting postfix:                                          [  OK  ]
    


  9. 期待通りに値が引けるかをテストします。
  10. [mail]# postmap -q "ari@examples.com" mysql:/usr/local/etc/postfix/mysql-alias_domains.cf
    examples.com
    
    [mail]# postmap -q "ari@examples.com" mysql:/usr/local/etc/postfix/mysql-alias_maps.cf
    ari@mailserver.jp
    


  11. テストメールを送信します。
  12. [mail]# echo "valias test 201" | mail -s "test 201" ari@examples.com
    


  13. 転送先に届いたかを確認します。



つづく

| arinux | MySQL | 10:00 | comments(1) | trackbacks(0) | pookmark |
管理者の承認待ちコメントです。
| - | 2018/05/06 10:26 PM |









http://www.arinux.net/trackback/93
     12
3456789
10111213141516
17181920212223
24252627282930
<< June 2018 >>
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ 掲載予定のタイトル
  • Wordpress
  • Pukiwiki
  • SMTPs/POPs/IMAPs
  • fml
  • Tips
+ CSS Nite
+ MOBILE
qrcode
+ LINKS
+ RECOMMEND
+ PROFILE