Qpopperの設定

Red Hat Linuxのページトップへ

QpopperはEUDORAのサイトからダウンロードできる

ダウンロードしたら、そのディレクトリに移動する

ファイルを解凍する
# tar xvfz qpopper4.0.5.tar.gz

解凍後にできたディレクトりに移動する
# cd qpopper4.0.5

コンパイルをする
(Red Hat Linux 9では、パスワードにシャドウパスワードが使われているので、--enable-specialauthオプションを追加する)
# ./configure --enable-specialauth
# make

マニュアルを格納するディレクトリを作り、インストールをする
# mkdir /usr/local/man
# mkdir /usr/local/man/man8
# cd popper
# make install

/etc/xinetd.dにファイルpop3を作成し、以下のものを入れる
# gedit /etc/xinetd.d/pop3

# default: off
# description: The POP3 service allows remote users to access their mail \
#              using an POP3 client such as Netscape Communicator, mutt, \
#              or fetchmail.
service pop3
{
        disable = no
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/local/sbin/popper
        server_args             = -s -R
}
上記でQpopperはスーパーサーバーxinetdの管理下に置かれることになるのでQpopperを起動するにはxinendを再起動する
# /etc/rc.d/init.d/xinetd restart

./configure --enable-home-dir-mail=Mailbox

PAM(Pluggable Authentication Modules)
バージョン3以降からPAMに対応
Pam-MySQLを使用するとMySQLで認証できるようになる。
Pam-MySQL

QPOPPER-MYSQL
パッチをあてることでMySQLで認証できる。
QPOPPER-MYSQL
patch -p1 < qpopper-mysql-0.13.patch
PAMを利用してPOP認証が行えるように、PAMの設定ファイルを作成します。

vi qpopper.pamd

 以下の内容をファイルに記述します。

auth required pam_stack.so service=system-auth
account required pam_stack.so service=system-auth
postfix-普通にインストールするときと違うのは make する前に、
   $ make -f Makefile.init makefiles \
    'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql' \
    'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm'
  というように、MySQLのライブラリをインクルードする

make install後に、
   # cp src/virtual/virtual /usr/libexec/postfix/
  と virtual というファイルをpostfixの実行ファイル群のあるディレクトリにコピーしています。


qpopperはパッチをあててMySQLに対応させる
    $ tar xvzf qpopper4.0.4.tar.gz
    $ cd qpopper4.0.4
    $ fetch http://freshmeat.net/redir/qpopper-mysql/28585/url_tgz/qpopper4.0.3-mysql-0.5.patch
    $ patch -p1 < qpopper4.0.3-mysql-0.5.patch
    $ ./configure --enable-mysql --enable-log-login-mysql --enable-maildrop-type=mbox \
    --with-mysqlconfig=/etc/postfix/popper.conf --enable-spool-dir=/home/mail/users
  という感じにしています。

  このとき、configureのオプションなのですが、
   --enable-mysql は MySQL による認証を有効
   --enable-log-login-mysql は POP3 アクセスがあった際に MySQL にログを残す
   --enable-maildrop-type=mbox は UNIXメールボックスでメールを保存する
   --with-mysqlconfig=/etc/postfix/popper.conf は qpopper の設定ファイルの場所(MySQLに関する)
   --enable-spool-dir=/home/mail/users は メールを保存する場所を変更してる。
# ./configure --enable-mysql --enable-log-login-mysql --with-mysqlconfig=/etc/postfix/popper.conf \
--enable-specialauth --enable-home-dir-mail=Mailbox --with-mysqllibpath=/usr/local/mysql/lib/mysql \
--with-mysqlincludepath=/usr/local/mysql/include/mysql
  です。
cp mysql-popper.conf /etc/qpopper/popper.conf
qpopper4.0.5と13.patchの組み合わせはできなかった
  簡単に説明すると、当方の環境ではMySQLによる認証を有効にし POP before SMTP を有効にし、
 メールは /home/mail/users 以下に DomainName/UserName という形で保存しています。

--with-mysqllibpath=path
		Set the mysql library path [/usr/lib/mysql]
		This is where your libmysqlclient.so files are
 --with-mysqlincludepath=path
		Set the mysql include path [/usr/include/mysql]
		This is where your mysql.h files are
 --enable-mysql
		compile in mysql authentication
 --with-mysqlconfig=path
		Set the mysql-popper.conf file path [/etc/mysql-popper.conf]
 --enable-log-login-mysql
	Log successful user authentications into mysql database


  なお、POP3ログイン時のIDは UserName@DomainName というように @ を区切り文字にするか、
 # を区切り文字にするかどちらかになります。

popper.conf

MySQLUsername qpopper
MySQLPassword password
MySQLAuthDB qpopper
MySQLAuthTable popUsers
MySQLAuthUsernameField username
MySQLAuthPasswordField password
MySQLAuthPasswordMethod crypt
MySQLAuthSpoolField maildrop

/etc/qpopper/popper.conf
  MysqlAuthHost                 
  MysqlAuthDb                   
  MysqlUsername                 
  MysqlPassword                 
  MysqlAuthTable                users
  MysqlAuthPasswordMethod       crypt
  MysqlAuthUsernameField        login
  MysqlAuthPasswordField        password
  MysqlAuthUidField             uid
  MysqlAuthGidField             gid


mysqladmin create sendmail
mysql sendmail < table.sql

Onde table.sql tem a seguinte estrutura: 

[root@argentina mysql-sendmail]# mysqlshow sendmail
Database: sendmail
+-------------+
|   Tables    |
+-------------+
| alias       |
| domainalias |
| relay_users |
| users       |
+-------------+
[root@argentina mysql-sendmail]# mysqlshow sendmail alias
Database: sendmail  Table: alias  Rows: 0
+---------+-----------+------+-----+---------+-------+
| Field   | Type      | Null | Key | Default | Extra |
+---------+-----------+------+-----+---------+-------+
| address | char(128) | YES  |     |         |       |
| alias   | char(128) | YES  |     |         |       |
+---------+-----------+------+-----+---------+-------+
[root@argentina mysql-sendmail]# mysqlshow sendmail domainalias
Database: sendmail  Table: domainalias  Rows: 0
+-------------+-----------+------+-----+---------+-------+
| Field       | Type      | Null | Key | Default | Extra |
+-------------+-----------+------+-----+---------+-------+
| address     | char(128) | YES  |     |         |       |
| domainalias | char(128) | YES  |     |         |       |
+-------------+-----------+------+-----+---------+-------+
[root@argentina mysql-sendmail]# mysqlshow sendmail relay_users
Database: sendmail  Wildcard: relay_users
+-------------+
|   Tables    |
+-------------+
| relay_users |
+-------------+
[root@argentina mysql-sendmail]# mysqlshow sendmail users
Database: sendmail  Table: users  Rows: 2
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| username | char(32)     | YES  |     |         |                |
| passwd   | char(32)     | YES  |     |         |                |
| uid      | mediumint(9) |      | PRI | 0       | auto_increment |
| gid      | mediumint(9) | YES  |     |         |                |
| gecos    | char(32)     | YES  |     |         |                |
| home_dir | char(32)     | YES  |     |         |                |
| shell    | char(32)     | YES  |     |         |                |
| maildrop | char(128)    | YES  |     |         |                |
+----------+--------------+------+-----+---------+----------------+

A tabela users sera utilizada tanto pelo qpopper quanto pelo sendmail. 

O campo passwd (senha) da tabela users DEVE estar no formato crypt() do unix, que pode ser feito facilmente via script em php3 (pega-se o salt, que sao os 2 primeiros caracteres do login do usuario, e faz-se crypt($senha,$salt)). 

O campo maildrop DEVE estar no seguinte formato: /diretorio/para/mail/login-do-usuario , caso contrario nao funcionara. 

E ainda: kill -HUP 

E: kill -1 PID-do-inetd 

A parte do POP ja esta funcional. 

Para testar, basta criar um usuario no banco de dados, com senha valida, e digitar: 

telnet localhost 110
user login
pass senha

O Sistema deve retornar: 

+OK login has 0 messages (0 octets). 

Pois ainda nao entregamos o email (sendmail + procmail). 


ぺんたん.info
あかいひ.com
IPくん.com
8枠.com - 競馬情報
galhime.com

PC Q&A||古い記事|雑学|ラーメン