Import mailbox from different domain
Hi folks, Let's say that I have on dovecot the domain example.net and on MS Exchange example.com. I've tried to import a mailbox from MS Exchange to Dovecot but it fails, I've run: dsync -Dv backup -R -u joe.doe imapc: dsync(joe@example.net): Error: imapc(192.168.0.2:993): Authentication failed: AUTHENTICATE failed. Is there a way to submit different domains both on MS Exchange and Dovecot and to make everyone be happy :) ? Thanks in advance -- -- Sergio Belkin LPIC-2 Certified - http://www.lpi.org
Re: Why does dovecot tell Error: passwd-file(...)failed: No such file or directory?
Thanks Aki, That made the trick! 2018-03-07 11:01 GMT-03:00 Aki Tuomi <aki.tu...@dovecot.fi>: > My bad. Userdb does not support scheme keyvalue, just remove it. > > Aki > > > On 07 March 2018 at 15:57 Sergio Belkin <seb...@gmail.com> wrote: > > > > > > Aki, > > > > thanks, I fixed typo but error persists: > > Mar 7 10:55:54 mail dovecot: auth: Debug: auth client connected > (pid=10828) > > Mar 7 10:55:55 mail dovecot: auth: Debug: client in: > > AUTH#0111#011CRAM-MD5#011service=imap#011secured# > 011session=FIH/6tJm4gDAqHoB#011lip=192.168.122.202#011rip= > 192.168.122.1#011lport=993#011rport=37090 > > Mar 7 10:55:55 mail dovecot: auth: Debug: client passdb out: > > CONT#0111#011PDMyOTk2ODcwMzIwNDE3NzcuMTUyMDQzMDk1NUBtYWlsLmV4YW1wbGUuY > 29tPg== > > Mar 7 10:55:55 mail dovecot: auth: Debug: client in: CONT > > Mar 7 10:55:55 mail dovecot: auth: Debug: > > passwd-file(ser...@example.com,192.168.122.1,): > > lookup: user=ser...@example.com file=/etc/dovecot/users > > Mar 7 10:55:55 mail dovecot: auth: Debug: client passdb out: > > OK#0111#011user=ser...@example.com > > Mar 7 10:55:55 mail dovecot: auth: Debug: master in: > > REQUEST#0112148007937#01110828#0111#0114822ce6f85f005835d4d0448b81 > 25868#011session_pid=10829#011request_auth_token > > Mar 7 10:55:55 mail dovecot: auth: Error: > > passwd-file(ser...@example.com,192.168.122.1,): > > stat(scheme=CRAM-MD5 username_format=ser...@example.com > /etc/dovecot/users) > > failed: No such file or directory > > Mar 7 10:55:55 mail dovecot: auth: Debug: master userdb out: > > USER#0112148007937# > > 011ser...@example.com#011uid=12345#011gid=12345#011home=/ > home/vmail/ser...@example.com#011auth_token=9ec7a9d5ad07e594e9ed483db5f7fc > 533bfd7202 > > Mar 7 10:55:55 mail dovecot: imap-login: Login: user=< > ser...@example.com>, > > method=CRAM-MD5, rip=192.168.122.1, lip=192.168.122.202, mpid=10829, TLS, > > session= > > > > TIA > > > > 2018-03-07 10:48 GMT-03:00 Aki Tuomi <aki.tu...@dovecot.fi>: > > > > > Fix typo, you have schme. > > > > > > Aki > > > > > > On 07.03.2018 15:47, Sergio Belkin wrote: > > > > > > Hi, > > > > > > I get this error even when user logins succesfully: > > > > > > Mar 7 10:41:16 mail dovecot: auth: Debug: client in: > > > AUTH#0111#011CRAM-MD5#011service=imap#011secured# > > > 011session=maOgttJmCADAqHoB#011lip=192.168.122.202#011rip= > > > 192.168.122.1#011lport=993#011rport=36872 > > > Mar 7 10:41:16 mail dovecot: auth: Debug: client passdb out: > CONT#0111# > > > 011PDYyMjM4NTMwODIyODI0MDguMTUyMDQzMDA3NkBtYWlsLmV4YW1wbGUuY29tPg== > > > Mar 7 10:41:16 mail dovecot: auth: Debug: client in: CONT > > > Mar 7 10:41:16 mail dovecot: auth: Debug: passwd-file( > ser...@example.com > > > ,192.168.122.1,): lookup: user=ser...@example.com > > > file=/etc/dovecot/users > > > Mar 7 10:41:16 mail dovecot: auth: Debug: client passdb out: > > > OK#0111#011user=ser...@example.com > > > Mar 7 10:41:16 mail dovecot: auth: Debug: master in: > > > REQUEST#0112080243713#01110733#0111#011b99fa14550a72c26f219b7dd4ff > > > a6f27#011session_pid=10736#011request_auth_token > > > Mar 7 10:41:16 mail dovecot: auth: Error: passwd-file( > ser...@example.com > > > ,192.168.122.1,): stat(schme=CRAM-MD5 > username_format= > > > ser...@example.com /etc/dovecot/users) failed: No such file or > directory > > > Mar 7 10:41:16 mail dovecot: auth: Debug: master userdb out: > > > USER#0112080243713#011ser...@example.com#011uid=12345# > > > 011gid=12345#011home=/home/vmail/ser...@example.com#011auth_token= > > > 34a7660e0c85afacd29709561b0bc7e024942955 > > > <http://011ser...@example.com#011uid=12345%23011gid=12345% > 23011home=/home/vmail/ser...@example.com%23011auth_token= > 34a7660e0c85afacd29709561b0bc7e024942955> > > > Mar 7 10:41:16 mail dovecot: imap-login: Login: user=< > ser...@example.com>, > > > method=CRAM-MD5, rip=192.168.122.1, lip=192.168.122.202, mpid=10736, > TLS, > > > session= > > > > > > > > > Is that an error, a warning? I don't understand why dovecot tell me > that > > > "No such file or directory" because really it does exist. > > > > > > Dovecot configuration is as follows: > > > > > > auth_debug = yes > > > auth_mechanisms = cram-md5 plain login > > > auth_verbose = yes > > > disable_plaintext
Re: Why does dovecot tell Error: passwd-file(...)failed: No such file or directory?
Aki, thanks, I fixed typo but error persists: Mar 7 10:55:54 mail dovecot: auth: Debug: auth client connected (pid=10828) Mar 7 10:55:55 mail dovecot: auth: Debug: client in: AUTH#0111#011CRAM-MD5#011service=imap#011secured#011session=FIH/6tJm4gDAqHoB#011lip=192.168.122.202#011rip=192.168.122.1#011lport=993#011rport=37090 Mar 7 10:55:55 mail dovecot: auth: Debug: client passdb out: CONT#0111#011PDMyOTk2ODcwMzIwNDE3NzcuMTUyMDQzMDk1NUBtYWlsLmV4YW1wbGUuY29tPg== Mar 7 10:55:55 mail dovecot: auth: Debug: client in: CONT Mar 7 10:55:55 mail dovecot: auth: Debug: passwd-file(ser...@example.com,192.168.122.1,): lookup: user=ser...@example.com file=/etc/dovecot/users Mar 7 10:55:55 mail dovecot: auth: Debug: client passdb out: OK#0111#011user=ser...@example.com Mar 7 10:55:55 mail dovecot: auth: Debug: master in: REQUEST#0112148007937#01110828#0111#0114822ce6f85f005835d4d0448b8125868#011session_pid=10829#011request_auth_token Mar 7 10:55:55 mail dovecot: auth: Error: passwd-file(ser...@example.com,192.168.122.1,): stat(scheme=CRAM-MD5 username_format=ser...@example.com /etc/dovecot/users) failed: No such file or directory Mar 7 10:55:55 mail dovecot: auth: Debug: master userdb out: USER#0112148007937# 011ser...@example.com#011uid=12345#011gid=12345#011home=/home/vmail/ser...@example.com#011auth_token=9ec7a9d5ad07e594e9ed483db5f7fc533bfd7202 Mar 7 10:55:55 mail dovecot: imap-login: Login: user=<ser...@example.com>, method=CRAM-MD5, rip=192.168.122.1, lip=192.168.122.202, mpid=10829, TLS, session= TIA 2018-03-07 10:48 GMT-03:00 Aki Tuomi <aki.tu...@dovecot.fi>: > Fix typo, you have schme. > > Aki > > On 07.03.2018 15:47, Sergio Belkin wrote: > > Hi, > > I get this error even when user logins succesfully: > > Mar 7 10:41:16 mail dovecot: auth: Debug: client in: > AUTH#0111#011CRAM-MD5#011service=imap#011secured# > 011session=maOgttJmCADAqHoB#011lip=192.168.122.202#011rip= > 192.168.122.1#011lport=993#011rport=36872 > Mar 7 10:41:16 mail dovecot: auth: Debug: client passdb out: CONT#0111# > 011PDYyMjM4NTMwODIyODI0MDguMTUyMDQzMDA3NkBtYWlsLmV4YW1wbGUuY29tPg== > Mar 7 10:41:16 mail dovecot: auth: Debug: client in: CONT > Mar 7 10:41:16 mail dovecot: auth: Debug: passwd-file(ser...@example.com > ,192.168.122.1,): lookup: user=ser...@example.com > file=/etc/dovecot/users > Mar 7 10:41:16 mail dovecot: auth: Debug: client passdb out: > OK#0111#011user=ser...@example.com > Mar 7 10:41:16 mail dovecot: auth: Debug: master in: > REQUEST#0112080243713#01110733#0111#011b99fa14550a72c26f219b7dd4ff > a6f27#011session_pid=10736#011request_auth_token > Mar 7 10:41:16 mail dovecot: auth: Error: passwd-file(ser...@example.com > ,192.168.122.1,): stat(schme=CRAM-MD5 username_format= > ser...@example.com /etc/dovecot/users) failed: No such file or directory > Mar 7 10:41:16 mail dovecot: auth: Debug: master userdb out: > USER#0112080243713#011ser...@example.com#011uid=12345# > 011gid=12345#011home=/home/vmail/ser...@example.com#011auth_token= > 34a7660e0c85afacd29709561b0bc7e024942955 > <http://011ser...@example.com#011uid=12345%23011gid=12345%23011home=/home/vmail/ser...@example.com%23011auth_token=34a7660e0c85afacd29709561b0bc7e024942955> > Mar 7 10:41:16 mail dovecot: imap-login: Login: user=<ser...@example.com>, > method=CRAM-MD5, rip=192.168.122.1, lip=192.168.122.202, mpid=10736, TLS, > session= > > > Is that an error, a warning? I don't understand why dovecot tell me that > "No such file or directory" because really it does exist. > > Dovecot configuration is as follows: > > auth_debug = yes > auth_mechanisms = cram-md5 plain login > auth_verbose = yes > disable_plaintext_auth = no > first_valid_uid = 1000 > mail_location = maildir:/home/vmail/%d/%n/Maildir > mbox_write_locks = fcntl > namespace inbox { > inbox = yes > location = > mailbox Drafts { > special_use = \Drafts > } > mailbox Junk { > special_use = \Junk > } > mailbox Sent { > special_use = \Sent > } > mailbox "Sent Messages" { > special_use = \Sent > } > mailbox Trash { > special_use = \Trash > } > prefix = > } > passdb { > args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/users > driver = passwd-file > } > service auth { > unix_listener /var/spool/postfix/private/auth { > mode = 0666 > } > } > ssl_cert = ssl_key = userdb { > args = schme=CRAM-MD5 username_format=%u /etc/dovecot/users > driver = passwd-file > } > userdb { > args = uid=vmail gid=vmail home=/home/vmail/%u > driver = static > } > > EOF > > Thanks in advance > -- > -- > Sergio Belkin > LPIC-2 Certified - http://www.lpi.org > > > -- -- Sergio Belkin LPIC-2 Certified - http://www.lpi.org
Why does dovecot tell Error: passwd-file(...)failed: No such file or directory?
Hi, I get this error even when user logins succesfully: Mar 7 10:41:16 mail dovecot: auth: Debug: client in: AUTH#0111#011CRAM-MD5#011service=imap#011secured#011session=maOgttJmCADAqHoB#011lip=192.168.122.202#011rip=192.168.122.1#011lport=993#011rport=36872 Mar 7 10:41:16 mail dovecot: auth: Debug: client passdb out: CONT#0111#011PDYyMjM4NTMwODIyODI0MDguMTUyMDQzMDA3NkBtYWlsLmV4YW1wbGUuY29tPg== Mar 7 10:41:16 mail dovecot: auth: Debug: client in: CONT Mar 7 10:41:16 mail dovecot: auth: Debug: passwd-file(ser...@example.com,192.168.122.1,): lookup: user=ser...@example.com file=/etc/dovecot/users Mar 7 10:41:16 mail dovecot: auth: Debug: client passdb out: OK#0111#011user=ser...@example.com Mar 7 10:41:16 mail dovecot: auth: Debug: master in: REQUEST#0112080243713#01110733#0111#011b99fa14550a72c26f219b7dd4ffa6f27#011session_pid=10736#011request_auth_token Mar 7 10:41:16 mail dovecot: auth: Error: passwd-file(ser...@example.com,192.168.122.1,): stat(schme=CRAM-MD5 username_format=ser...@example.com /etc/dovecot/users) failed: No such file or directory Mar 7 10:41:16 mail dovecot: auth: Debug: master userdb out: USER#0112080243713# 011ser...@example.com#011uid=12345#011gid=12345#011home=/home/vmail/ser...@example.com#011auth_token=34a7660e0c85afacd29709561b0bc7e024942955 Mar 7 10:41:16 mail dovecot: imap-login: Login: user=, method=CRAM-MD5, rip=192.168.122.1, lip=192.168.122.202, mpid=10736, TLS, session= Is that an error, a warning? I don't understand why dovecot tell me that "No such file or directory" because really it does exist. Dovecot configuration is as follows: auth_debug = yes auth_mechanisms = cram-md5 plain login auth_verbose = yes disable_plaintext_auth = no first_valid_uid = 1000 mail_location = maildir:/home/vmail/%d/%n/Maildir mbox_write_locks = fcntl namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } passdb { args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/users driver = passwd-file } service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 } } ssl_cert = http://www.lpi.org
Re: Live Import of IMAP
2018-02-01 11:59 GMT-03:00 Sami Ketola <sami.ket...@dovecot.fi>: > > > On 29 Jan 2018, at 21.57, Sergio Belkin <seb...@gmail.com> wrote: > > Hi, > > I have the mailbox of jon@example.com just migrated only with mails > after migration, is it ok to run: > > doveadm -o mail_fsync=never sync -1 -R -u j...@example.com imapc: > > > wiil that import all mails missing mails to the new server? I don't want > that delete any current mail, is that right the command above? > > thanks in advance! > > > Yes, if you have imapc settings defined somewhere in your config. If not > you need to add them to the command line. > > Sami > > > Thanks Sami! -- -- Sergio Belkin LPIC-2 Certified - http://www.lpi.org
Live Import of IMAP
Hi, I have the mailbox of jon@example.com just migrated only with mails after migration, is it ok to run: doveadm -o mail_fsync=never sync -1 -R -u j...@example.com imapc: wiil that import all mails missing mails to the new server? I don't want that delete any current mail, is that right the command above? thanks in advance! -- -- Sergio Belkin LPIC-2 Certified - http://www.lpi.org
Change destination of dsync
Hi, I have the following command for retrieving mails from another IMAP mail server dsync -D -v backup -R -u jon.doe imapc: I't ok and works, but I'd want to copy messages outside of /var directory, is there a way to do that? Thanks in advance! -- -- Sergio Belkin LPIC-2 Certified - http://www.lpi.org
Re: Autoreplies are not sent
2017-11-30 9:28 GMT-03:00 Sergio Belkin <seb...@gmail.com>: > > > El 30 nov. 2017 4:02 a.m., "Steffen Kaiser" <skdove...@inf.h-brs.de> > escribió: > > -BEGIN PGP SIGNED MESSAGE- > Hash: SHA1 > > > On Wed, 29 Nov 2017, Sergio Belkin wrote: > > Now, I'd want to every mail was sent to support-...@example.com it >> triggers >> an autoreply vacation style. >> >> So, I've wrote and compiled a sieve filter, something like that and put in >> op1@example.local sieve folder. >> >> But it fails complaining like that: >> nov 29 15:55:39 muteriver.example.local dovecot[12549]: lmtp(12675, >> op1@example.local): CqNdF6sCH1qDMQAAcSFsIQ: sieve: msgid=< >> ded22f3d-f1e3-157e-0667-ca73d851d...@example.com>: discarding vacation >> response for implicitly delivered message; no known (envelope) recipient >> address found in message headers (recipient=<op1@example.local>, and >> additional `:addresses' are specified) >> > > your MTA does not pass the envelope sender to Dovecot. Do you use LMTP or > LDA to deliver the messages? > > - -- Steffen Kaiser > -BEGIN PGP SIGNATURE- > Version: GnuPG v1 > > iQEVAwUBWh+tI8QnQQNheMxiAQLi4AgAuTja/RGggap3E/EmqoDt42FNfPV/Tx+i > wYC/IoM9KG+IZE4YcVVQW15EMt3CYNWf8VFU4ln45yAPuE/QidZLBdV5P0Ob9CLn > uh7o02fc4RHQsmLeDNL3A9NpNTJR/Tj013fW2ZFvEA4hNU7f7IM07j28xZMWLI0Z > ToRXWptFmw4SYKuK3utPlE2D3H7kqxskY/736qEoW97p6KFzAre36BH1ANe25/dD > SygYJNEuh5B1VsKZg/NJjTpPbZwLCsqoP0lOW/tCG/SyPO991jPM1vzuI2A5r9fk > OsxjYnb4xnufiu3Xe0EUkFee3fen9EAQ1LZdDHaueKva3TQmPLb4ow== > =2Ex/ > -END PGP SIGNATURE- > > Steffen, Thanks, I use lmtp. > Greets. > I know by now that it's somewhat OT, but please could you give a clue to set postfix to pass the envelope? I have enable_original_recipient = yes in postfix, but it does not work either... Thanks in advance! -- -- Sergio Belkin LPIC-2 Certified - http://www.lpi.org
Re: Autoreplies are not sent
El 30 nov. 2017 4:02 a.m., "Steffen Kaiser" <skdove...@inf.h-brs.de> escribió: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On Wed, 29 Nov 2017, Sergio Belkin wrote: Now, I'd want to every mail was sent to support-...@example.com it triggers > an autoreply vacation style. > > So, I've wrote and compiled a sieve filter, something like that and put in > op1@example.local sieve folder. > > But it fails complaining like that: > nov 29 15:55:39 muteriver.example.local dovecot[12549]: lmtp(12675, > op1@example.local): CqNdF6sCH1qDMQAAcSFsIQ: sieve: msgid=< > ded22f3d-f1e3-157e-0667-ca73d851d...@example.com>: discarding vacation > response for implicitly delivered message; no known (envelope) recipient > address found in message headers (recipient=<op1@example.local>, and > additional `:addresses' are specified) > your MTA does not pass the envelope sender to Dovecot. Do you use LMTP or LDA to deliver the messages? - -- Steffen Kaiser -BEGIN PGP SIGNATURE- Version: GnuPG v1 iQEVAwUBWh+tI8QnQQNheMxiAQLi4AgAuTja/RGggap3E/EmqoDt42FNfPV/Tx+i wYC/IoM9KG+IZE4YcVVQW15EMt3CYNWf8VFU4ln45yAPuE/QidZLBdV5P0Ob9CLn uh7o02fc4RHQsmLeDNL3A9NpNTJR/Tj013fW2ZFvEA4hNU7f7IM07j28xZMWLI0Z ToRXWptFmw4SYKuK3utPlE2D3H7kqxskY/736qEoW97p6KFzAre36BH1ANe25/dD SygYJNEuh5B1VsKZg/NJjTpPbZwLCsqoP0lOW/tCG/SyPO991jPM1vzuI2A5r9fk OsxjYnb4xnufiu3Xe0EUkFee3fen9EAQ1LZdDHaueKva3TQmPLb4ow== =2Ex/ -END PGP SIGNATURE- Steffen, Thanks, I use lmtp. Greets.
Problem with dsync backup
Hi folks, Firstly, the first: dovecot --version 2.2.10 dovecot -n # 2.2.10: /etc/dovecot/dovecot.conf # OS: Linux 3.10.0-514.16.1.el7.x86_64 x86_64 CentOS Linux release 7.3.1611 (Core) auth_debug = yes auth_krb5_keytab = /var/lib/dovecot/krb5.keytab auth_master_user_separator = * auth_mechanisms = plain login gssapi auth_verbose = yes debug_log_path = /dev/null default_process_limit = 400 disable_plaintext_auth = no first_valid_uid = 988 imapc_features = rfc822.size fetch-headers imapc_host = mail.example-aid.com imapc_master_user = osstand imapc_password = secret imapc_ssl = starttls imapc_ssl_verify = no imapc_user = %u import_environment = TZ KRB5CCNAME last_valid_uid = 988 lmtp_save_to_detail_mailbox = yes mail_gid = vmail mail_location = maildir:~/Maildir mail_plugins = " acl listescape fts fts_lucene" mail_prefetch_count = 20 mail_shared_explicit_inbox = yes mail_uid = vmail 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 imapflags mbox_write_locks = fcntl namespace PUBLIC { list = children location = maildir:/var/lib/nethserver/vmail/vmail/Maildir:INDEXPVT=~/Maildir/public prefix = Public/ separator = / subscriptions = no type = public } namespace ROOT { inbox = yes location = mailbox Drafts { auto = no special_use = \Drafts } mailbox Sent { auto = no special_use = \Sent } mailbox "Sent Messages" { auto = no special_use = \Sent } mailbox Trash { auto = no special_use = \Trash } prefix = separator = / subscriptions = yes type = private } namespace SHARED_USERS { disabled = no list = children location = maildir:/var/lib/nethserver/vmail/%%u/Maildir:INDEXPVT=~/Maildir/shared/%%u prefix = Shared/%%n@example.local/ separator = / subscriptions = no type = shared } passdb { args = /etc/dovecot/master-users driver = passwd-file master = yes } passdb { args = dovecot-master driver = pam master = yes } passdb { args = /etc/dovecot/deny.passwd deny = yes driver = passwd-file } passdb { args = max_requests=100 failure_show_msg=yes blocking=yes driver = pam } plugin { acl = vfile acl_shared_dict = file:/var/lib/nethserver/vmail/shared-mailboxes.db antispam_backend = MAILTRAIN antispam_mail_notspam = ham antispam_mail_sendmail = /usr/libexec/nethserver/spam-training.sh antispam_mail_sendmail_args = %u antispam_mail_spam = spam antispam_spam = Junk antispam_trash = Trash fts = lucene fts_lucene = whitespace_chars=@. sieve_after = /var/lib/nethserver/sieve-scripts/after.sieve sieve_before = /var/lib/nethserver/sieve-scripts/before.sieve sieve_extensions = +imapflags } protocols = imap lmtp sieve pop3 service anvil { client_limit = 1603 } service auth { client_limit = 2000 unix_listener /var/spool/postfix/private/smtpauth { group = postfix mode = 0660 user = postfix } unix_listener auth-userdb { group = vmail mode = 0660 } } service dict { unix_listener dict { mode = 0600 user = vmail } } service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 } unix_listener imap-ipc { group = root mode = 0600 user = $default_internal_user } } service imap-postlogin { executable = script-login /usr/libexec/nethserver/dovecot-postlogin user = $default_internal_user } service imap { executable = imap imap-postlogin } service lmtp { client_limit = 1 unix_listener lmtp { group = vmail mode = 0660 user = vmail } user = vmail } service managesieve { executable = managesieve sieve-postlogin } service pop3-postlogin { executable = script-login /usr/libexec/nethserver/dovecot-postlogin user = $default_internal_user } service pop3 { executable = pop3 pop3-postlogin } service sieve-postlogin { executable = script-login /usr/libexec/nethserver/dovecot-postlogin user = $default_internal_user } ssl_cert = ): unknown user Please could you help to know where is the error? Thanks in advance!! -- -- Sergio Belkin LPIC-2 Certified - http://www.lpi.org