arinux

Linux サーバー設定備忘録
<< MySQL (3) - passwd 管理 (2) | main | MySQL (5) - メールアカウント管理 (2) >>
MySQL (4) - メールアカウント管理 (1)


メールアカウントの認証の際に、MySQL DB を参照させます。POP/IMAP 及び SASL サーバーとして Dovecot を使用します。


※ ここでは、メールサーバーのホスト名を 「mail.arinux.net」 としています。



メモ テスト環境


機種DELL PE750
OSCentOS 5.2
kernel2.6.18-92.1.18.el5
glibc2.5-24
MySQL5.0.67
Postfix2.5.5
Dovecot1.1.7



メモ DB接続ユーザーとデータ追加


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


  1. openssl を使用して MD5 パスワードを作成します。
    [master]# openssl passwd -1
    Password: muserpasswd
    Verifying - Password: muserpasswd
    $1$GG1PlzmS$bihY9aPaSSVr1vIjSmBoW1
    


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


  3. メールサーバーから DB へ接続するためのユーザーを作成します。このユーザーには、SELECT 権限のみ与えます。
    mysql> GRANT SELECT ON usersdb.* TO  cwuser@'mail.arinux.net' IDENTIFIED BY 'n,V0dX6kjgcd';
    Query OK, 0 rows affected (0.00 sec)
    


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


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


  6. user テーブルにデータを追加します。
    mysql> use usersdb;
    mysql> INSERT INTO user VALUES (2,'muser','Muser','/sbin/nologin','$1$GG1PlzmS$bihY9aPaSSVr1vIjSmBoW1',
    'A',1002,511,'/home/muser', '14194', '0', '0', '7', '-1', '-1', 'mail.arinux.net');
    Query OK, 1 row affected (0.00 sec)
    


  7. 追加されたことを確認します。
    mysql> select * from user where user_id='2'¥G
    *************************** 1. row ***************************
       user_id: 2
     user_name: muser
      realname: Muser
         shell: /sbin/nologin
      password: $1$GG1PlzmS$bihY9aPaSSVr1vIjSmBoW1
        status: A
           uid: 1002
           gid: 511
       homedir: /home/muser
    lastchange: 14194
           min: 0
           max: 0
          warn: 7
         inact: -1
        expire: -1
         shost: mail.arinux.net
    1 row in set (0.00 sec)
    




メモ メールサーバーへの nss-mysql のインストール


    MySQL (3) - passwd 管理 (2) を参考に、メールサーバー上に nss-mysql をインストールします。



メモ Postfix のインストール


※ 以下の操作は、全てメールサーバー上で実施します。


  1. http://mirror.postfix.jp/postfix-release/index.html から、
    「postfix-2.5.5.tar.gz」 をダウンロードして、「/usr/local/src」 に置きます。


  2. 解凍します。
    [mail]# cd /usr/local/src
    [mail]# tar zxvf postfix-2.5.5.tar.gz
    


  3. sendmail 関連のコマンドを rename します。
    [mail]# mv /usr/sbin/sendmail /usr/sbin/sendmail.org
    [mail]# mv /usr/bin/newaliases /usr/bin/newaliases.org
    [mail]# mv /usr/bin/mailq /usr/bin/mailq.org
    


  4. sendmail プロセスを停止し、boot 時に自動起動しないようにします。
    [mail]# /etc/rc.d/init.d/sendmail stop
    (停止しない場合は、「killall sendmail」 を実行)
    [mail]# chkconfig sendmail off
    [mail]# chkconfig --list sendmail
    sendmail        0:off   1:off   2:off   3:off   4:off   5:off   6:off
    


  5. postfix ユーザーと、postfix 及び postdrop グループを作成します。postfix ユーザーはログインさせないようにします。
    [mail]# groupadd postfix
    [mail]# groupadd postdrop
    [mail]# useradd -g postfix -d /dev/null -s /sbin/nologin postfix
    


  6. Makefile を作成します。
    [mail]# cd /usr/local/src/postfix-2.5.5
    [mail]# make makefiles CCARGS='-DHAS_MYSQL -DUSE_SASL_AUTH -DDEF_SASL_SERVER=¥"dovecot¥" 
    -I/usr/local/include -I/usr/local/mysql/include -DDEF_CONFIG_DIR=¥"/usr/local/etc/postfix¥"' 
    AUXLIBS="-L/usr/local/mysql/lib -L/usr/local/lib -lmysqlclient -lm -lz"
    
    虫眼鏡 「No <db.h> include file found.」


    このエラーが出る場合は、「db4-devel」 パッケージをインストールしてから、再度 Makefile 作成を実行します。

    [mail]# yum install db4-devel
    
    虫眼鏡 SMTPS 利用の場合


    SMTPS を利用する場合は、以下のように ssl に関するパラメータを追加します。

    [mail]# make makefiles CCARGS='-DHAS_MYSQL -DUSE_SASL_AUTH -DDEF_SASL_SERVER=¥"dovecot¥"
    -I/usr/local/include -I/usr/local/mysql/include -DDEF_CONFIG_DIR=¥"/usr/local/etc/postfix¥"
    -DUSE_TLS -I/usr/local/src/openssl-0.9.7m/include/openssl'
    AUXLIBS="-L/usr/local/mysql/lib -L/usr/local/lib -lmysqlclient -lm -lz  -lssl -lcrypto"
    


  7. コンパイル、インストールを実施します。
    [mail]# make
    [mail]# make install
    (省略)
    install_root: [/] <Enter>
    tempdir: [/usr/local/src/postfix-2.5.1] <Enter>
    config_directory: [/usr/local/etc/postfix] <Enter>
    command_directory: [/usr/sbin] /usr/local/sbin
    daemon_directory: [/usr/libexec/postfix] /usr/local/libexec/postfix
    data_directory: [/var/lib/postfix] /usr/local/var/postfix
    html_directory: [no] <Enter>
    mail_owner: [postfix] <Enter>
    mailq_path: [/usr/bin/mailq] <Enter>
    manpage_directory: [/usr/local/man] <Enter>
    newaliases_path: [/usr/bin/newaliases] <Enter>
    queue_directory: [/var/spool/postfix] <Enter>
    readme_directory: [no] <Enter>
    sendmail_path: [/usr/sbin/sendmail] <Enter>
    setgid_group: [postdrop] <Enter>
    (省略)
    


  8. コンフィグしたパラメータを確認します。
    [mail]# postconf -n -c /usr/local/etc/postfix
    command_directory = /usr/local/sbin
    config_directory = /usr/local/etc/postfix
    daemon_directory = /usr/local/libexec/postfix
    data_directory = /usr/local/var/postfix
    debug_peer_level = 2
    html_directory = no
    mail_owner = postfix
    mailq_path = /usr/bin/mailq
    manpage_directory = /usr/local/man
    newaliases_path = /usr/bin/newaliases
    queue_directory = /var/spool/postfix
    readme_directory = no
    sample_directory = /usr/local/etc/postfix
    sendmail_path = /usr/sbin/sendmail
    setgid_group = postdrop
    unknown_local_recipient_reject_code = 550
    


  9. aliases の root の転送先の設定と、postfix アカウントの記述を確認します。
    [mail] cd /usr/local/etc/postfix
    [mail] vi aliases
    root:           admin   # これを追加(root 以外のメール管理者に転送する場合のみ)。
    postfix:        root    # この行はもともとあります。
    


  10. aliases.db に反映させます。
    [mail]# postalias -c /usr/local/etc/postfix /usr/local/etc/postfix/aliases
    


  11. main.cf を編集します。
    [mail] cd /usr/local/etc/postfix
    [mail] vi main.cf
    
    queue_directory = /var/spool/postfix
    command_directory = /usr/local/sbin
    daemon_directory = /usr/local/libexec/postfix
    data_directory = /usr/local/var/postfix
    mail_owner = postfix
    myhostname = mail.arinux.net
    mydomain = arinux.net
    myorigin = $myhostname
    inet_interfaces = all
    mydestination = $myhostname, localhost.$mydomain, localhost
    unknown_local_recipient_reject_code = 550
    mynetworks = 127.0.0.0/8, 10.1.1.0/24
    alias_maps = hash:/usr/local/etc/postfix/aliases
    alias_database = hash:/usr/local/etc/postfix/aliases
    home_mailbox = Maildir/
    debug_peer_level = 2
    debugger_command =
             PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
             ddd $daemon_directory/$process_name $process_id & sleep 5
    sendmail_path = /usr/sbin/sendmail
    newaliases_path = /usr/bin/newaliases
    mailq_path = /usr/bin/mailq
    setgid_group = postdrop
    html_directory = no
    manpage_directory = /usr/local/man
    sample_directory = /usr/local/etc/postfix
    readme_directory = no
    smtp_host_lookup = dns
    


  12. スタートアップ・スクリプトを作成します。
    [mail] vi /etc/rc.d/init.d/postfix
    
    #!/bin/sh
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Check networking
    if [ -r /etc/sysconfig/network ] ; then
            . /etc/sysconfig/network
            [ ${NETWORKING} = "no" ] && exit 0
    fi
    
    RETVAL=0
    
    start() {
            # Start daemons.
            echo -n "Starting postfix: "
            /usr/local/sbin/postfix -c /usr/local/etc/postfix start 2>/dev/null 1>&2 && success || failure
            RETVAL=$?
            [ $RETVAL -eq 0 ] && touch /var/lock/subsys/postfix
            echo
            return $RETVAL
    }
    
    stop() {
            # Stop daemons.
            echo -n "Shutting down postfix: "
            /usr/local/sbin/postfix stop 2>/dev/null 1>&2 && success || failure
            RETVAL=$?
            [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/postfix
            echo
            return $RETVAL
    }
    
    reload() {
            echo -n "Reloading postfix: "
            /usr/local/sbin/postfix reload 2>/dev/null 1>&2 && success || failure
            RETVAL=$?
            echo
            return $RETVAL
    }
    
    abort() {
            /usr/local/sbin/postfix abort 2>/dev/null 1>&2 && success || failure
            return $?
    }
    
    flush() {
            /usr/local/sbin/postfix flush 2>/dev/null 1>&2 && success || failure
            return $?
    }
    
    check() {
            /usr/local/sbin/postfix check 2>/dev/null 1>&2 && success || failure
            return $?
    }
    
    restart() {
            stop
            start
    }
    
    # See how we were called.
    case "$1" in
      start)
            start
            ;;
      stop)
            stop
            ;;
      restart)
            stop
            sleep 2
            start
            ;;
      reload)
            reload
            ;;
      abort)
            abort
            ;;
      flush)
            flush
            ;;
      check)
            check
            ;;
      status)
            status master
            ;;
      condrestart)
            [ -f /var/lock/subsys/postfix ] && restart || :
            ;;
      *)
            echo "Usage: postfix {start|stop|restart|reload|abort|flush|check|status|condrestart}"
            exit 1
    esac
    
    exit $?
    


  13. パーミッションを変更します。
    [mail]# chmod 755 postfix
    


  14. postfix を起動します。
    [mail]# /etc/rc.d/init.d/postfix start
    Starting postfix:                                          [  OK  ]
    


  15. テストメールを送信します。
    [mail]# echo "test 101" | mail -s "test mail 101" muser@mail.arinux.net
    


  16. メールが届いたかを確認します。
    [mail]# ls -l /home/muser/Maildir/new
    -rw------- 1 muser sales 433 Dec 17 17:16 1229501814.V802I1f403M77446.mail.arinux.net
    
    [root]# cat /home/muser/Maildir/new/1229*
    
    Return-Path: 
    X-Original-To: muser@mail.arinux.net
    Delivered-To: muser@mail.arinux.net
    Received: by mail.arinux.net (Postfix, from userid 0)
            id 09EF784D75; Wed, 17 Dec 2008 17:16:54 +0900 (JST)
    To: muser@mail.arinux.net
    Subject: test 101
    Message-Id: <20081217081654.09EF784D75@mail.arinux.net>
    Date: Wed, 17 Dec 2008 17:16:54 +0900 (JST)
    From: root@mail.arinux.net (root)
    
    test 101
    



つづく

| arinux | MySQL | 15:33 | comments(1) | trackbacks(0) | pookmark |
管理者の承認待ちコメントです。
| - | 2018/06/06 2:21 PM |









http://www.arinux.net/trackback/90
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< September 2018 >>
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ 掲載予定のタイトル
  • Wordpress
  • Pukiwiki
  • SMTPs/POPs/IMAPs
  • fml
  • Tips
+ CSS Nite
+ MOBILE
qrcode
+ LINKS
+ RECOMMEND
+ PROFILE