Hi 張工

根據英文論壇的文件,我也順利完成自動安裝的工作了

感謝您的幫忙~~

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:0.87
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):PostgreSQL
- 使用的 Linux/BSD 发行版名称及版本号:Ubuntu 1404
- 与您的问题相关的日志信息:
====

Hi 張工
又有問題要麻煩您了
是否可以在CLI環境下,直接執行./iRedMail.sh .....的方式安裝iRedMail
而不用透過dialog的選單或詢問去填寫或選擇設定參數嗎?
比方說,我已經知道我要裝PostgreSQL當我的db,我的第一虛擬網域為mail.example.com,我要裝的packages包含iredadmin
我只要執行 ./iRedMail.sh -d mail.example.com -m postgresql -p iredadmin
或者,將所有需要的設定寫成.cfg然後執行 ./iRedMail.sh -f install.cfg

Hi 張工

感謝您這晚還回覆我們的問題

問題原因找到了
是第一個虛擬域名的關係
舊主機名稱:mail.example.com
新主機名稱:iredmail.example.com ,但是第一個虛擬域名是example.com
舊主機                     新主機                     狀況
id@mail.example.com <->id@iredmail.example.com   -> ok
id@example.com  ->id@iredmail.example.com            -> temporary failure
id@mail.example.com ->id@example.com                   -> loop failed

整個重裝
新主機名稱:iredmail01.example.com ,第一個虛擬域名是iredmail.example.com
當我重裝iredmail,並重設新主機的第一個虛擬域名,收發與forward 都正常了


感謝謝您的幫忙與提點~~

Hi 張工

抱歉,讓您誤解了!
我的問題是我說的模糊不清,不過您理解的很清楚,的確是"郵件投遞給系統用戶,而非郵件帳號"

iRedMail 是利用查詢database或ldap 郵件帳號的機制,來收發信件,而非只檢查系統用戶存在與否,就回絕信件,這點我的理解對嗎?
如果系統帳號不存在,就應該檢查virtual_mailbox 對吧?
倘若,系統帳號存在(透過第三方ldap authentication),機制上也會先將信件轉給系統帳號?若是如此,有那邊可以設定優先權,先將信件送往郵件帳號,而非系統帳號?


loop的可能原因,是我們想要快速轉換郵件主機,所以我們新舊郵件主機域名相同,mydestination也一樣,對嗎?(需要把舊主機的main.cf貼上來嗎?)
mydestination = $myhostname, localhost.$mydomain, localhost, iredmail.$mydomain

Hi 張工
謝謝您的回覆,最近因身體不適,所以沒辦法快速回應

1.  從系統日誌看來是在postfix/local 出錯,有什方式可以從local 去debug嗎?
     又或者是其他地方出錯,比方說dovecot 的LDA ?

Aug  7 15:33:45 iredmail01 postfix/local[8696]: 46C5848854A: to=<grosse@iredmail.example.com>, relay=local, delay=2205, delays=2205/0.02/0/0.05, dsn=4.3.0, status=deferred (temporary failure)
Aug  7 15:33:45 iredmail01 postfix/local[8694]: 1694C480DF9: to=<kec@iredmail.example.com>, relay=local, delay=1180, delays=1179/0.08/0/0.07, dsn=4.3.0, status=deferred (temporary failure)
然後檢查/etc/postfix/master.cf
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd -v
local     unix  -       n       n       -       -       local

2. 用alias 的解法對我們來說並不適用,原因是1.mail使用人數眾多,維護不易 2.iRedMail 目前打算取代原有的Roundcube主機,所以有設.forward, 若改用alias,會有mail forward loop 發生

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):
- 使用的 Linux/BSD 发行版名称及版本号:
- 与您的问题相关的日志信息:
==== ==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:0.87
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):PostgreSQL
- 使用的 Linux/BSD 发行版名称及版本号:Ubuntu 1404
- 与您的问题相关的日志信息:
====
張工好
我的郵件主機收不了信
跟版內人一樣也是權限問題,但是我就是搞不懂,系統到哪要我的UID跟GID,明明都指定vmail(UID 2000:GID 2000)了
我也參考了
Virtual users
http://wiki2.dovecot.org/LDA/Postfix
Multiple UIDs
http://wiki2.dovecot.org/LDA
還是沒有解決問題,是哪邊有了缺漏嗎?
還有請張工幫忙解惑~~

下面是我的dovecot -n 與 postfix/main.cf,postfix/master.cf
---------------------------------------------------------------------------------------------------------------------
root@iredmail01:/etc/postfix# more main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file = /etc/ssl/certs/iRedMail_CA.pem
smtpd_tls_key_file = /etc/ssl/private/iRedMail.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = iredmail01.ematters.com.tw
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
myorigin = iredmail01.ematters.com.tw
mydestination = $myhostname, localhost.$mydomain, localhost, iredmail.$mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $myhostname.$mydomain, mail.$mydomain, hq.$mydomain, hq-mail.$mydomain, hqs01.
$mydomain
relayhost = 192.168.111.1
#relayhost = 192.168.11.180
mynetworks = 127.0.0.1 192.168.111.0/24 192.168.11.0/24 192.168.1.0/24
mailbox_size_limit = 0
recipient_delimiter =
inet_interfaces = all
inet_protocols = ipv4
virtual_alias_domains =
allow_percent_hack = no
swap_bangpath = no
mydomain = ematters.com.tw
mynetworks_style = subnet
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_reject_unlisted_recipient = yes
smtpd_reject_unlisted_sender = yes
smtp_tls_security_level = may
smtp_tls_CAfile = $smtpd_tls_CAfile
smtp_tls_loglevel = 0
smtp_tls_note_starttls_offer = yes
smtpd_sender_restrictions = permit_mynetworks, reject_sender_login_mismatch, permit_sasl_authenticated
delay_warning_time = 0h
maximal_queue_lifetime = 4h
bounce_queue_lifetime = 4h
proxy_read_maps = $canonical_maps $lmtp_generic_maps $local_recipient_maps $mydestination $mynetworks $recipient_bcc_maps $recipient_canonic
al_maps $relay_domains $relay_recipient_maps $relocated_maps $sender_bcc_maps $sender_canonical_maps $smtp_generic_maps $smtpd_sender_login_
maps $transport_maps $virtual_alias_domains $virtual_alias_maps $virtual_mailbox_domains $virtual_mailbox_maps $smtpd_sender_restrictions
smtp_data_init_timeout = 240s
smtp_data_xfer_timeout = 600s
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, check_h
elo_access pcre:/etc/postfix/helo_access.pcre
queue_run_delay = 300s
minimal_backoff_time = 300s
maximal_backoff_time = 4000s
enable_original_recipient = no
disable_vrfy_command = yes
home_mailbox = Maildir/
allow_min_user = no
message_size_limit = 15728640
virtual_minimum_uid = 2000
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000
virtual_mailbox_base = /var/vmail
transport_maps = regexp:/etc/postfix/transport, proxy:pgsql:/etc/postfix/pgsql/transport_maps_user.cf, proxy:pgsql:/etc/postfix/pgsql/transp
ort_maps_domain.cf
virtual_mailbox_domains = proxy:pgsql:/etc/postfix/pgsql/virtual_mailbox_domains.cf
virtual_mailbox_maps = proxy:pgsql:/etc/postfix/pgsql/virtual_mailbox_maps.cf
virtual_alias_maps = proxy:pgsql:/etc/postfix/pgsql/virtual_alias_maps.cf, proxy:pgsql:/etc/postfix/pgsql/domain_alias_maps.cf, proxy:pgsql:
/etc/postfix/pgsql/catchall_maps.cf, proxy:pgsql:/etc/postfix/pgsql/domain_alias_catchall_maps.cf
sender_bcc_maps = proxy:pgsql:/etc/postfix/pgsql/sender_bcc_maps_user.cf, proxy:pgsql:/etc/postfix/pgsql/sender_bcc_maps_domain.cf
recipient_bcc_maps = proxy:pgsql:/etc/postfix/pgsql/recipient_bcc_maps_user.cf, proxy:pgsql:/etc/postfix/pgsql/recipient_bcc_maps_domain.cf
relay_domains = $mydestination, proxy:pgsql:/etc/postfix/pgsql/relay_domains.cf
smtpd_sender_login_maps = proxy:pgsql:/etc/postfix/pgsql/sender_login_maps.cf
smtpd_sasl_auth_enable = no
smtpd_sasl_local_domain =
broken_sasl_auth_clients = no
smtpd_sasl_security_options = noanonymous
smtpd_tls_auth_only = yes
smtpd_recipient_restrictions =  permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_tls_security_level = may
smtpd_tls_loglevel = 0
smtpd_tls_CAfile = /etc/ssl/certs/iRedMail_CA.pem
tls_random_source = dev:/dev/urandom
mailbox_command = /usr/lib/dovecot/deliver
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/dovecot-auth

---------------------------------------------------------------------------------------------------------------------
root@iredmail01:/etc/postfix# more master.cf|grep -v ^#
smtp      inet  n       -       -       -       -       smtpd
pickup    unix  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       -       -       -       smtp
relay     unix  -       -       -       -       -       smtp
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
retry     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache    unix  -       -       -       -       1       scache
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix    -    n    n    -    2    pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}

submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject

dovecot unix    -       n       n       -       -      pipe
    flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${domain} -m ${extension}

smtp-amavis unix -  -   -   -   10  smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes
    -o max_use=20

127.0.0.1:10025 inet n  -   -   -   -  smtpd
    -o content_filter=
    -o mynetworks_style=host
    -o mynetworks=127.0.0.0/8
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o strict_rfc821_envelopes=yes
    -o smtp_tls_security_level=none
    -o smtpd_tls_security_level=none
    -o smtpd_restriction_classes=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=permit_mynetworks,reject
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_end_of_data_restrictions=
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings

---------------------------------------------------------------------------------------------------------------------
root@iredmail01:/etc/postfix# dovecot -n
# 2.2.9: /etc/dovecot/dovecot.conf
# OS: Linux 3.13.0-24-generic x86_64 Ubuntu 14.04 LTS
auth_master_user_separator = *
auth_mechanisms = PLAIN LOGIN
dict {
  acl = PH_DOVECOT_SHARE_FOLDER_SQLTYPE:PH_DOVECOT_SHARE_FOLDER_CONF
  quotadict = pgsql:/etc/dovecot/dovecot-used-quota.conf
}
first_valid_uid = 2000
last_valid_uid = 2000
listen = *
log_path = /var/log/dovecot.log
mail_gid = 2000
mail_location = maildir:/%Lh/Maildir/:INDEX=/%Lh/Maildir/:UTF-8
mail_plugins = quota
mail_uid = 2000
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave
namespace {
  inbox = yes
  location =
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    auto = no
    special_use = \Sent
  }
  mailbox Spam {
    auto = no
    special_use = \Junk
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  prefix =
  separator = /
  type = private
}
namespace {
  list = children
  location = maildir:/%%Lh/Maildir/:INDEX=/%%Lh/Maildir/Shared/%%u
  prefix = Shared/%%u/
  separator = /
  subscriptions = yes
  type = shared
}
passdb {
  args = /etc/dovecot/dovecot-pgsql.conf
  driver = sql
}
passdb {
  args = /etc/dovecot/dovecot-master-users-password
  driver = passwd-file
  master = yes
}
plugin {
  acl = vfile
  acl_shared_dict = proxy::acl
  auth_socket_path = /var/run/dovecot/auth-master
  quota = dict:user::proxy::quotadict
  quota_rule = *:storage=1G
  quota_warning = storage=85%% quota-warning 85 %u
  quota_warning2 = storage=90%% quota-warning 90 %u
  quota_warning3 = storage=95%% quota-warning 95 %u
  sieve = /%Lh/sieve/dovecot.sieve
  sieve_default = /var/vmail/sieve/dovecot.sieve
  sieve_dir = /%Lh/sieve
  sieve_global_dir = /var/vmail/sieve
}
protocols = imap sieve lmtp
service auth {
  unix_listener /var/spool/postfix/private/dovecot-auth {
    group = postfix
    mode = 0666
    user = postfix
  }
  unix_listener auth-master {
    group = vmail
    mode = 0666
    user = vmail
  }
  unix_listener auth-userdb {
    group = vmail
    mode = 0660
    user = vmail
  }
}
service dict {
  unix_listener dict {
    group = vmail
    mode = 0660
    user = vmail
  }
}
service imap-login {
  process_limit = 500
  service_count = 1
}
service lmtp {
  executable = lmtp -L
  inet_listener lmtp {
    port = 24
  }
  process_min_avail = 5
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
  user = vmail
}
service pop3-login {
  service_count = 1
}
service quota-warning {
  executable = script /usr/local/bin/dovecot-quota-warning.sh
  unix_listener quota-warning {
    group = vmail
    mode = 0660
    user = vmail
  }
}
ssl = no
ssl_cert = </etc/ssl/certs/iRedMail_CA.pem
ssl_key = </etc/ssl/private/iRedMail.key
userdb {
  args = /etc/dovecot/dovecot-pgsql.conf
  driver = sql
}
protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  lda_mailbox_autocreate = yes
  log_path = /var/log/dovecot-sieve.log
  mail_plugins = quota sieve
  postmaster_address = root
}
protocol lmtp {
  info_log_path = /var/log/dovecot-lmtp.log
  lmtp_save_to_detail_mailbox = yes
  mail_plugins = quota sieve
  postmaster_address = postmaster
  recipient_delimiter = +
}
protocol imap {
  imap_client_workarounds = tb-extra-mailbox-sep
  mail_plugins = quota imap_quota
}
protocol pop3 {
  mail_plugins = quota
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
  pop3_uidl_format = %08Xu%08Xv
}

---------------------------------------------------------------------------------------------------------------------
tail -f mail.log
Aug  7 15:33:45 iredmail01 postfix/qmgr[8374]: 1694C480DF9: from=<kec@hqdc041.example.com>, size=825, nrcpt=1 (queue active)
Aug  7 15:33:45 iredmail01 postfix/qmgr[8374]: 46C5848854A: from=<kec@hqdc041.example.com>, size=834, nrcpt=1 (queue active)
Aug  7 15:33:45 iredmail01 postfix/local[8696]: 46C5848854A: to=<grosse@iredmail.example.com>, relay=local, delay=2205, delays=2205/0.02/0/0.05, dsn=4.3.0, status=deferred (temporary failure)
Aug  7 15:33:45 iredmail01 postfix/local[8694]: 1694C480DF9: to=<kec@iredmail.example.com>, relay=local, delay=1180, delays=1179/0.08/0/0.07, dsn=4.3.0, status=deferred (temporary failure)
---------------------------------------------------------------------------------------------------------------------
tail -f /var/log/dovecot-sieve.log
Aug 07 15:33:45 lda(kec): Fatal: setgid(2000(vmail) from mail_gid setting) failed with euid=60011(kec), gid=50500(em), egid=50500(em): Operation not permitted (This binary should probably be called with process group set to 2000(vmail) instead of 50500(em))
Aug 07 15:33:45 lda(grosse): Fatal: setgid(2000(vmail) from mail_gid setting) failed with euid=519(grosse), gid=50500(em), egid=50500(em): Operation not permitted (This binary should probably be called with process group set to 2000(vmail) instead of 50500(em))