그래도 생성 가능하다는 점 알리고자 포스팅합니다. 작업 내용은 간단합니다. /home/vpopmail/bin/vadduser 바이너리 실행 시 MySQL vpopmail 디비 상에서 실행되는 쿼리와 메일박스 디렉토리 생성 과정을 수작업으로 대신해 주는 것 뿐입니다.
vpopmail 디비의 테이블 구조는 아래와 같죠.
lastauth, vpopmail 테이블을 손보게 됩니다.
mysql> show tables;
+--------------------+
| Tables_in_vpopmail |
+--------------------+
| dir_control |
| lastauth |
| relay |
| vpopmail |
+--------------------+
4 rows in set (0.00 sec) mysql>
+--------------------+
| Tables_in_vpopmail |
+--------------------+
| dir_control |
| lastauth |
| relay |
| vpopmail |
+--------------------+
4 rows in set (0.00 sec) mysql>
붉은색 표시를 한 lastauth 테이블의 구조를 뜯어 봅시다.
mysql> SELECT * FROM `lastauth` LIMIT 30 , 5;
+-----------+--------------+-----------+------------+
| user | domain | remote_ip | timestamp |
+-----------+--------------+-----------+------------+
| apple | foobar.net | 0.0.0.0 | 1234971340 |
| banana | foobar.net | 0.0.0.0 | 1234971340 |
| chicken | foobar.net | imap | 1296178009 |
| diamond | foobar.net | imap | 1247763205 |
| eagle | foobar.net | imap | 1264080570 |
+-----------+--------------+-----------+------------+
5 rows in set (0.00 sec) mysql>
+-----------+--------------+-----------+------------+
| user | domain | remote_ip | timestamp |
+-----------+--------------+-----------+------------+
| apple | foobar.net | 0.0.0.0 | 1234971340 |
| banana | foobar.net | 0.0.0.0 | 1234971340 |
| chicken | foobar.net | imap | 1296178009 |
| diamond | foobar.net | imap | 1247763205 |
| eagle | foobar.net | imap | 1264080570 |
+-----------+--------------+-----------+------------+
5 rows in set (0.00 sec) mysql>
vpopmail 테이블의 구조도 뜯어 봅시다.
총 9개의 필드를 사용하네요.
(pw_name, pw_domain, pw_passwd, pw_uid, pw_gid, pw_gecos, pw_dir, pw_shell, pw_clear_passwd)
mysql> SELECT * FROM `vpopmail` LIMIT 0 , 5;
+------------+--------------+------------------------------------+--------+--------+------------+------------------------------------------------+----------+-----------------+
| pw_name | pw_domain | pw_passwd | pw_uid | pw_gid | pw_gecos | pw_dir | pw_shell | pw_clear_passwd |
+------------+--------------+------------------------------------+--------+--------+------------+------------------------------------------------+----------+-----------------+
| postmaster | foobar.net | $1$36g5tDc/$WKSm1Otu2M9A4ZsirdjtB1 | 0 | 0 | Postmaster | /home/vpopmail/domains/foobar.net/postmaster | NOQUOTA | ***************** |
| webmaster | foobar.net | $1$Rr2CY0zg$Bx9GjMYaXlikQ/poHTVLG0 | 0 | 0 | webmaster | /home/vpopmail/domains/foobar.net/webmaster | NOQUOTA | ***************** |
| admin | foobar.net | $1$ipRC78ww$nxTFzQs0dcJUBlueVZg8M. | 0 | 0 | 디지문 | /home/vpopmail/domains/foobar.net/admin | NOQUOTA | ***************** |
| root | foobar.net | $1$EyNIHv91$S0zrKtOo69KYu0q4uionA0 | 0 | 0 | root | /home/vpopmail/domains/foobar.net/root | NOQUOTA | ***************** |
| digimoon | foobar.net | $1$DsFcGp6E$lueSbJcqjHBIvYMfqFYe61 | 0 | 0 | | /home/vpopmail/domains/foobar.net/digimoon | NOQUOTA | ***************** |
+------------+--------------+------------------------------------+--------+--------+------------+------------------------------------------------+----------+-----------------+
5 rows in set (0.00 sec) mysql>
※ pw_clear_passwd 필드에 들어간 값들은 패스워드가 평문 형태로 그대로 저장되어 있는지라 모자이크 처리했습니다(붉은색 부분).+------------+--------------+------------------------------------+--------+--------+------------+------------------------------------------------+----------+-----------------+
| pw_name | pw_domain | pw_passwd | pw_uid | pw_gid | pw_gecos | pw_dir | pw_shell | pw_clear_passwd |
+------------+--------------+------------------------------------+--------+--------+------------+------------------------------------------------+----------+-----------------+
| postmaster | foobar.net | $1$36g5tDc/$WKSm1Otu2M9A4ZsirdjtB1 | 0 | 0 | Postmaster | /home/vpopmail/domains/foobar.net/postmaster | NOQUOTA | ***************** |
| webmaster | foobar.net | $1$Rr2CY0zg$Bx9GjMYaXlikQ/poHTVLG0 | 0 | 0 | webmaster | /home/vpopmail/domains/foobar.net/webmaster | NOQUOTA | ***************** |
| admin | foobar.net | $1$ipRC78ww$nxTFzQs0dcJUBlueVZg8M. | 0 | 0 | 디지문 | /home/vpopmail/domains/foobar.net/admin | NOQUOTA | ***************** |
| root | foobar.net | $1$EyNIHv91$S0zrKtOo69KYu0q4uionA0 | 0 | 0 | root | /home/vpopmail/domains/foobar.net/root | NOQUOTA | ***************** |
| digimoon | foobar.net | $1$DsFcGp6E$lueSbJcqjHBIvYMfqFYe61 | 0 | 0 | | /home/vpopmail/domains/foobar.net/digimoon | NOQUOTA | ***************** |
+------------+--------------+------------------------------------+--------+--------+------------+------------------------------------------------+----------+-----------------+
5 rows in set (0.00 sec) mysql>
디비 구조를 파악했으면 우선 /home/vpopmail/bin/vadduser 커맨드로 3글자 이상의 메일계정을 임의로 생성합니다.
[root@localhost ~]# /home/vpopmail/bin/vadduser abcd@foobar.net
Please enter password for abcd@foobar.net:
enter password again:
[root@localhost ~]#
Please enter password for abcd@foobar.net:
enter password again:
[root@localhost ~]#
abcd@foobar.net 계정을 a@foobar.net로 바꾸어 주려면 vpopamail 디비에 접속 후 아래 쿼리를 날려 주면 됩니다.
lastauth의 user 필드와 vpopmail의 pw_name, pw_dir 필드를 직접 수정해 주는 것이죠.
mysql> UPDATE `vpopmail`.`lastauth` SET `user` = 'a' WHERE `lastauth`.`user` = 'abcd' AND `lastauth`.`domain` = 'foobar.net' LIMIT 1 ;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE `vpopmail`.`vpopmail` SET `pw_name` = 'a', `pw_dir` = '/home/vpopmail/domains/foobar.net/a' WHERE `vpopmail`.`pw_name` = 'abcd' AND `vpopmail`.`pw_domain` = 'foobar.net' LIMIT 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql>
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE `vpopmail`.`vpopmail` SET `pw_name` = 'a', `pw_dir` = '/home/vpopmail/domains/foobar.net/a' WHERE `vpopmail`.`pw_name` = 'abcd' AND `vpopmail`.`pw_domain` = 'foobar.net' LIMIT 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql>
마지막으로 /home/vpopmail/domains/foobar.net/abcd 디렉토리명을 /home/vpopmail/domains/foobar.net/a로 변경하면 됩니다.
[root@localhost ~]# mv /home/vpopmail/domains/foobar.net/abcd /home/vpopmail/domains/foobar.net/a