Postfix + courier + mysql: erinevus redaktsioonide vahel

Allikas: Kuutõrvaja
Mine navigeerimisribaleMine otsikasti
Jj (arutelu | kaastöö)
Resümee puudub
Jj (arutelu | kaastöö)
Resümee puudub
 
(ei näidata sama kasutaja 23 vahepealset redaktsiooni)
1. rida: 1. rida:
===sissejuhatus===
Mailisüsteem kipub sageli üle pea kasvama. Haldus käsureal muutub tülikaks /või tekib
soov kasutada paraleelselt mitut mailiserverit. Aitab näiteks lihtsalt
paigutada kasutajad mysql'i ning kasutada veebi administreerimisliidest.
Süsteem näeb välja selline ,et faile hoitakse populaarses maildir http://en.wikipedia.org/wiki/Maildir formaadis kuid
kasutajaid loeb postfix mysql baasist.
===install===
===install===


7. rida: 16. rida:


ning vaatame ,et mysql toega.  
ning vaatame ,et mysql toega.  
gentoos võime kirjutada make.conf'i use reale mysql ning siis
emerge postfix


seejärel paigaldame courieri ning mysql'i
seejärel paigaldame courieri ning mysql'i
23. rida: 28. rida:
main.cf
main.cf


queue_directory = /var/spool/postfix
  home_mailbox = .maildir/  
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
mail_owner = postfix
unknown_local_recipient_reject_code = 550
debug_peer_level = 2
sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
html_directory = /usr/share/doc/postfix-2.2.10/html
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = no
  home_mailbox = .maildir/
soft_bounce = yes
myhostname = mail.example.ee
mydomain = mail.example.ee
   
   
  unknown_local_recipient_reject_code = 550
  virtual_mailbox_base = '''/home/mail'''
mynetworks_style = host
  virtual_gid_maps = static:9009
  virtual_uid_maps = static:9009
mail_spool_directory = /var/mail
  virtual_minimum_uid = 9009
  smtpd_banner = $myhostname ESMTP, NO SPAM PLEASE :D
  virtual_create_maildirsize = yes
  debug_peer_level = 2
   
  config_directory = /usr/local/etc/postfix
   
   
  virtual_alias_maps = mysql:$config_directory/mysql_virtual_alias_maps.cf
  virtual_alias_maps = mysql:$config_directory/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:9009
virtual_mailbox_base = /home/mail
  virtual_mailbox_domains = mysql:$config_directory/mysql_virtual_domains_maps.cf
  virtual_mailbox_domains = mysql:$config_directory/mysql_virtual_domains_maps.cf
  virtual_mailbox_maps = mysql:$config_directory/mysql_virtual_mailbox_maps.cf
  virtual_mailbox_maps = mysql:$config_directory/mysql_virtual_mailbox_maps.cf
virtual_mailbox_limit_maps = mysql:$config_directory/mysql_virtual_mailbox_limit_maps.cf
relay_domains = mysql:$config_directory/mysql_relay_domains_maps.cf
   
   
  virtual_uid_maps = static:9009
  # quota blokk
virtual_minimum_uid = 9009
virtual_uid_maps = static:9009
virtual_create_maildirsize = yes
  virtual_mailbox_extended = yes
  virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:$config_directory/mysql_virtual_mailbox_limit_maps.cf
  virtual_mailbox_limit_override = yes
  virtual_mailbox_limit_override = yes
  virtual_maildir_limit_message = Sorry, users quota limit has been exceeded.
  virtual_maildir_limit_message = Sorry, users quota limit has been exceeded.
  virtual_overquota_bounce = yes
  virtual_overquota_bounce = yes
relay_domains = mysql:$config_directory/mysql_relay_domains_maps.cf
setgid_group = maildrop


Loome kausta '''/var/mail''' ja anname õigused ,et courier pääseks sinna ligi.


mysql_virtual_alias_maps.cf
'''mysql_virtual_alias_maps.cf'''


  user = mail
  user = mail
84. rida: 58. rida:
  query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
  query = SELECT goto FROM alias WHERE address='%s' AND active = '1'


 
'''mysql_relay_domains_maps.cf'''
mysql_relay_domains_maps.cf


  user = mail
  user = mail
93. rida: 66. rida:
  query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '1' AND active = '1'
  query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '1' AND active = '1'


mysql_virtual_mailbox_limit_maps.cf
quota kontroll
 
'''mysql_virtual_mailbox_limit_maps.cf'''


  user = mail
  user = mail
101. rida: 76. rida:
  query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
  query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'


mysql_relay_domains_maps.cf
'''mysql_relay_domains_maps.cf'''


  user = mail
  user = mail
  password = 123vanaema
  password = parool
  hosts = localhost
  hosts = localhost
  dbname = mail
  dbname = mail
  query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '1' AND active = '1'
  query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '1' AND active = '1'
===mysql baasi seadistus===
tekitame baasi mail ja tekiame sinna struktuuri võime kasutada järgnevalt äratoodud dump'i. Juhin
veel tähelepanu ,et tabelid nagu admin, domain_admins, log ja vacation on vajalikud
vaid postfixadmini jaoks. Kui ei ole plaanis neid kasutada võib jätta välja.
--
-- Table structure for table `admin`
--
CREATE TABLE `admin` (
  `username` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `password` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`username`),
  KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci COMMENT='Postfix Admin - Virtual  Admins';
-- --------------------------------------------------------
--
-- Table structure for table `alias`
--
CREATE TABLE `alias` (
  `address` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `goto` text collate utf8_estonian_ci NOT NULL,
  `domain` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`address`),
  KEY `address` (`address`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci COMMENT='Postfix Admin - Virtual  Aliases';
-- --------------------------------------------------------
--
-- Table structure for table `domain`
--
CREATE TABLE `domain` (
  `domain` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `description` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `aliases` int(10) NOT NULL default '0',
  `mailboxes` int(10) NOT NULL default '0',
  `maxquota` int(10) NOT NULL default '0',
  `transport` varchar(255) collate utf8_estonian_ci default NULL,
  `backupmx` tinyint(1) NOT NULL default '0',
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`domain`),
  KEY `domain` (`domain`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci COMMENT='Postfix Admin - Virtual  Domains';
-- --------------------------------------------------------
--
-- Table structure for table `domain_admins`
--
CREATE TABLE `domain_admins` (
  `username` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `domain` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci COMMENT='Postfix Admin - Domain  Admins';
-- --------------------------------------------------------
--
-- Table structure for table `log`
--
CREATE TABLE `log` (
  `timestamp` datetime NOT NULL default '0000-00-00 00:00:00',
  `username` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `domain` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `action` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `data` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  KEY `timestamp` (`timestamp`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci COMMENT='Postfix Admin - Log';
-- --------------------------------------------------------
--
-- Table structure for table `mailbox`
--
CREATE TABLE `mailbox` (
  `username` varchar(255) NOT NULL default '',
  `password` varchar(255) NOT NULL default '',
  `name` varchar(255) NOT NULL default '',
  `maildir` varchar(255) NOT NULL default '',
  `quota` int(10) NOT NULL default '0',
  `domain` varchar(255) NOT NULL default '',
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `uid` int(10) unsigned default '9009',
  `gid` int(10) unsigned default '9009',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`username`),
  KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=binary COMMENT='Postfix Admin - Virtual Mailboxes';
-- --------------------------------------------------------
--
-- Table structure for table `vacation`
--
CREATE TABLE `vacation` (
  `email` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `subject` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `body` text collate utf8_estonian_ci NOT NULL,
  `cache` text collate utf8_estonian_ci NOT NULL,
  `domain` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`email`),
  KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci COMMENT='Postfix Admin - Virtual  Vacation';
juhin tähelepanu sellele ,et read
mailbox tabelis
  `uid` int(10) unsigned default '9009',
  `gid` int(10) unsigned default '9009',
pole näites lisatud ja see on omatehtud häkk kuna courieri uuem versuioon
ootab vaikimisi uid/gid parameetreid samuti kuid postfixadmini käesolev versioon
ei oska neid baasi kirjutada nii siis täidame selle automaatselt alati.
===courier-imap===
Freebsd's avame kaustas /usr/local/etc/authlib
faili authmysqlrc
selle sisu peaks olema selline
MYSQL_CRYPT_PWFIELD    password
MYSQL_DATABASE          '''mail'''
MYSQL_LOGIN_FIELD      '''username'''
MYSQL_PASSWORD          '''parool'''
MYSQL_SERVER            '''localhost'''
MYSQL_GID_FIELD        '9009'
MYSQL_HOME_FIELD        '/home/mail'
MYSQL_MAILDIR_FIELD    maildir
MYSQL_NAME_FIELD        name
MYSQL_OPT              0
MYSQL_QUOTA_FIELD      quota
MYSQL_UID_FIELD        '9009'
MYSQL_USERNAME          mail
MYSQL_USER_TABLE        mailbox
===postfixadmin===
Hangime viimase versiooni tarballi http://sourceforge.net/projects/postfixadmin/
[[Pilt:Posfixadminu.jpg]]
paigaldame apache ja php ning pakime postfixadmini lahti
seadistame veebi kasutama loodud andmebaasi mail ning testime :]
Kui on vaja konvertida cyruselt ümber enda kirjad aitab utiliit lingil
http://www.madness.at/blog/projects/cyrus2courier.html

Viimane redaktsioon: 19. september 2009, kell 13:44

sissejuhatus

Mailisüsteem kipub sageli üle pea kasvama. Haldus käsureal muutub tülikaks /või tekib soov kasutada paraleelselt mitut mailiserverit. Aitab näiteks lihtsalt paigutada kasutajad mysql'i ning kasutada veebi administreerimisliidest.

Süsteem näeb välja selline ,et faile hoitakse populaarses maildir http://en.wikipedia.org/wiki/Maildir formaadis kuid kasutajaid loeb postfix mysql baasist.

install

paigaldame postfix tarkvara koos mysql toega selleks freebsd's

cd /usr/ports/mail/postfix && make install clean

ning vaatame ,et mysql toega.

seejärel paigaldame courieri ning mysql'i

cd /usr/portsw/mail/courier-imap && make install clean

mysql install ja seadistus on kirjas [mysql install]

postfix

main.cf

home_mailbox = .maildir/ 

virtual_mailbox_base = /home/mail
virtual_gid_maps = static:9009
virtual_uid_maps = static:9009 
virtual_minimum_uid = 9009
virtual_create_maildirsize = yes

virtual_alias_maps = mysql:$config_directory/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:$config_directory/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:$config_directory/mysql_virtual_mailbox_maps.cf
virtual_mailbox_limit_maps = mysql:$config_directory/mysql_virtual_mailbox_limit_maps.cf
relay_domains = mysql:$config_directory/mysql_relay_domains_maps.cf

# quota blokk
virtual_mailbox_extended = yes
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, users quota limit has been exceeded.
virtual_overquota_bounce = yes

Loome kausta /var/mail ja anname õigused ,et courier pääseks sinna ligi.

mysql_virtual_alias_maps.cf

user = mail
password = parool
hosts = localhost
dbname = mail
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

mysql_relay_domains_maps.cf

user = mail
password = parool
hosts = localhost
dbname = mail
query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '1' AND active = '1'

quota kontroll

mysql_virtual_mailbox_limit_maps.cf

user = mail
password = parool
hosts = localhost
dbname = mail
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'

mysql_relay_domains_maps.cf

user = mail
password = parool
hosts = localhost
dbname = mail
query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '1' AND active = '1'

mysql baasi seadistus

tekitame baasi mail ja tekiame sinna struktuuri võime kasutada järgnevalt äratoodud dump'i. Juhin veel tähelepanu ,et tabelid nagu admin, domain_admins, log ja vacation on vajalikud vaid postfixadmini jaoks. Kui ei ole plaanis neid kasutada võib jätta välja.

-- 
-- Table structure for table `admin`
-- 

CREATE TABLE `admin` (
  `username` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `password` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`username`),
  KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci COMMENT='Postfix Admin - Virtual  Admins';

-- --------------------------------------------------------

-- 
-- Table structure for table `alias`
-- 

CREATE TABLE `alias` (
  `address` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `goto` text collate utf8_estonian_ci NOT NULL,
  `domain` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`address`),
  KEY `address` (`address`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci COMMENT='Postfix Admin - Virtual   Aliases';

-- --------------------------------------------------------

-- 
-- Table structure for table `domain`
-- 

CREATE TABLE `domain` (
  `domain` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `description` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `aliases` int(10) NOT NULL default '0',
  `mailboxes` int(10) NOT NULL default '0',
  `maxquota` int(10) NOT NULL default '0',
  `transport` varchar(255) collate utf8_estonian_ci default NULL,
  `backupmx` tinyint(1) NOT NULL default '0',
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`domain`),
  KEY `domain` (`domain`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci COMMENT='Postfix Admin - Virtual  Domains';

-- --------------------------------------------------------

-- 
-- Table structure for table `domain_admins`
--

CREATE TABLE `domain_admins` (
 `username` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `domain` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci COMMENT='Postfix Admin - Domain  Admins';

-- --------------------------------------------------------

-- 
-- Table structure for table `log`
-- 

CREATE TABLE `log` (
  `timestamp` datetime NOT NULL default '0000-00-00 00:00:00',
  `username` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `domain` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `action` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `data` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  KEY `timestamp` (`timestamp`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci COMMENT='Postfix Admin - Log';

-- --------------------------------------------------------

-- 
-- Table structure for table `mailbox`
-- 

CREATE TABLE `mailbox` (
  `username` varchar(255) NOT NULL default ,
  `password` varchar(255) NOT NULL default ,
  `name` varchar(255) NOT NULL default ,
  `maildir` varchar(255) NOT NULL default ,
  `quota` int(10) NOT NULL default '0',
  `domain` varchar(255) NOT NULL default ,
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `uid` int(10) unsigned default '9009',
  `gid` int(10) unsigned default '9009',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`username`),
  KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=binary COMMENT='Postfix Admin - Virtual Mailboxes';

-- --------------------------------------------------------

-- 
-- Table structure for table `vacation`
-- 

CREATE TABLE `vacation` (
  `email` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `subject` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `body` text collate utf8_estonian_ci NOT NULL,
  `cache` text collate utf8_estonian_ci NOT NULL,
  `domain` varchar(255) collate utf8_estonian_ci NOT NULL default ,
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`email`),
  KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci COMMENT='Postfix Admin - Virtual  Vacation';

juhin tähelepanu sellele ,et read

mailbox tabelis

 `uid` int(10) unsigned default '9009',
 `gid` int(10) unsigned default '9009',

pole näites lisatud ja see on omatehtud häkk kuna courieri uuem versuioon ootab vaikimisi uid/gid parameetreid samuti kuid postfixadmini käesolev versioon ei oska neid baasi kirjutada nii siis täidame selle automaatselt alati.

courier-imap

Freebsd's avame kaustas /usr/local/etc/authlib faili authmysqlrc

selle sisu peaks olema selline

MYSQL_CRYPT_PWFIELD     password
MYSQL_DATABASE          mail
MYSQL_LOGIN_FIELD       username
MYSQL_PASSWORD          parool
MYSQL_SERVER            localhost
MYSQL_GID_FIELD         '9009'
MYSQL_HOME_FIELD        '/home/mail'
MYSQL_MAILDIR_FIELD     maildir
MYSQL_NAME_FIELD        name
MYSQL_OPT               0
MYSQL_QUOTA_FIELD      quota
MYSQL_UID_FIELD         '9009'
MYSQL_USERNAME          mail
MYSQL_USER_TABLE        mailbox

postfixadmin

Hangime viimase versiooni tarballi http://sourceforge.net/projects/postfixadmin/

paigaldame apache ja php ning pakime postfixadmini lahti seadistame veebi kasutama loodud andmebaasi mail ning testime :]

Kui on vaja konvertida cyruselt ümber enda kirjad aitab utiliit lingil

http://www.madness.at/blog/projects/cyrus2courier.html