[Dovecot] dovecot 2.0 -> 2.1 sieve problem
I had a completely working setup before. I upgraded, now I get:
Error: 7LUaNYqHklG6EAAApwKjnA: sieve: execution of script (null) failed, but implicit keep was successful
sieve = /home/vmail/%Ld/%Ln/.dovecot.sieve sieve_dir = /home/vmail/%Ld/%Ln/sieve (this was ~/sieve)
I am not quite sure what is going on. Is anyone else seeing this? Any idea on what has changed? (I am not readily seeing it in changelogs or mailing lists.)
Thank you, Trever
"A right is not what someone gives you; it's what no one can take from you." -- Ramsey Clark
On 5/14/2013 8:54 PM, Trever L. Adams wrote:
I had a completely working setup before. I upgraded, now I get:
Error: 7LUaNYqHklG6EAAApwKjnA: sieve: execution of script (null) failed, but implicit keep was successful
sieve = /home/vmail/%Ld/%Ln/.dovecot.sieve sieve_dir = /home/vmail/%Ld/%Ln/sieve (this was ~/sieve)
I am not quite sure what is going on. Is anyone else seeing this? Any idea on what has changed? (I am not readily seeing it in changelogs or mailing lists.)
What is the exact version of Pigeonhole you're upgrading to?
Regards,
Stephan.
On 05/14/2013 01:29 PM, Stephan Bosch wrote:
On 5/14/2013 8:54 PM, Trever L. Adams wrote:
I had a completely working setup before. I upgraded, now I get:
Error: 7LUaNYqHklG6EAAApwKjnA: sieve: execution of script (null) failed, but implicit keep was successful
sieve = /home/vmail/%Ld/%Ln/.dovecot.sieve sieve_dir = /home/vmail/%Ld/%Ln/sieve (this was ~/sieve)
I am not quite sure what is going on. Is anyone else seeing this? Any idea on what has changed? (I am not readily seeing it in changelogs or mailing lists.)
What is the exact version of Pigeonhole you're upgrading to?
Regards,
Stephan.
dovecot-2.2.1-2.fc19.x86_64 dovecot-pigeonhole-2.2.1-2.fc19.x86_64
It won't run ANY sieves even the sieve_before, directory or specific sieve file.
Trever
"Concentrate all your thoughts upon the work at hand. The sun's rays do not burn until brought to a focus." -- Alexander Graham Bell
On 5/14/2013 9:35 PM, Trever L. Adams wrote:
On 05/14/2013 01:29 PM, Stephan Bosch wrote:
On 5/14/2013 8:54 PM, Trever L. Adams wrote:
I had a completely working setup before. I upgraded, now I get:
Error: 7LUaNYqHklG6EAAApwKjnA: sieve: execution of script (null) failed, but implicit keep was successful
sieve = /home/vmail/%Ld/%Ln/.dovecot.sieve sieve_dir = /home/vmail/%Ld/%Ln/sieve (this was ~/sieve)
I am not quite sure what is going on. Is anyone else seeing this? Any idea on what has changed? (I am not readily seeing it in changelogs or mailing lists.) What is the exact version of Pigeonhole you're upgrading to? dovecot-2.2.1-2.fc19.x86_64 dovecot-pigeonhole-2.2.1-2.fc19.x86_64
That is not 2.1, right?
It won't run ANY sieves even the sieve_before, directory or specific sieve file.
The error you see is a bug in any case because of the '(null)' script location.
You can enable mail_debug to see more information.
Could you also provide dovecot -n output here?
Regards,
Stephan.
On 05/14/2013 02:56 PM, Stephan Bosch wrote:
On 5/14/2013 9:35 PM, Trever L. Adams wrote:
On 05/14/2013 01:29 PM, Stephan Bosch wrote:
On 5/14/2013 8:54 PM, Trever L. Adams wrote:
I had a completely working setup before. I upgraded, now I get:
Error: 7LUaNYqHklG6EAAApwKjnA: sieve: execution of script (null) failed, but implicit keep was successful
sieve = /home/vmail/%Ld/%Ln/.dovecot.sieve sieve_dir = /home/vmail/%Ld/%Ln/sieve (this was ~/sieve)
I am not quite sure what is going on. Is anyone else seeing this? Any idea on what has changed? (I am not readily seeing it in changelogs or mailing lists.) What is the exact version of Pigeonhole you're upgrading to? dovecot-2.2.1-2.fc19.x86_64 dovecot-pigeonhole-2.2.1-2.fc19.x86_64
That is not 2.1, right? Sorry, I had been at it for many hours when I looked at the version. You are correct.
I have been racking my brain trying to figure out why some may not see what I am seeing. The only odd part of my configuration that others may not have is:
import_environment = TZ KRB5CCNAME=...
This was added, if I remember right, at the request of myself and another so that LDAP configuration could identify with GSSAPI base kerberos. I do use it.
It won't run ANY sieves even the sieve_before, directory or specific sieve file.
The error you see is a bug in any case because of the '(null)' script location.
You can enable mail_debug to see more information.
Could you also provide dovecot -n output here?
Regards,
Stephan.
# 2.2.1: /etc/dovecot/dovecot.conf # OS: Linux 3.9.1-301.fc19.x86_64 x86_64 Fedora release 19 (Schrödinger’s Cat) auth_gssapi_hostname = MX.DOMAIN auth_mechanisms = gssapi gss-spnego login plain auth_realms = DOMAIN auth_username_format = %u import_environment = TZ KRB5CCNAME=/etc/dovecot/krb5.cc lda_mailbox_autocreate = yes lda_mailbox_autosubscribe = yes mail_gid = vmail mail_home = /home/vmail/%Ld/%Ln mail_location = maildir:~/Maildir 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 mbox_write_locks = fcntl namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox INBOX.Dangerous { auto = subscribe } mailbox INBOX.Infected { auto = subscribe } mailbox Junk { special_use = \Junk } mailbox SPAM { auto = subscribe } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } passdb { driver = pam } plugin { antispam_backend = dspam antispam_dspam_args = --client;--user;%u;--source=error;--signature=%%s antispam_dspam_result_header = X-DSPAM-Result antispam_signature = X-DSPAM-Signature antispam_spam = SPAM antispam_trash = trash;Trash;Deleted Items sieve = /home/vmail/%Ld/%Ln/.dovecot.sieve sieve_before = /etc/dovecot/sieve sieve_dir = /home/vmail/%Ld/%Ln/sieve sieve_global_dir = /etc/dovecot/sieve/ } protocols = imap lmtp service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } unix_listener auth-userdb { group = vmail mode = 0660 } } service imap-login { inet_listener imap { port = 0 } } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0660 user = postfix } } ssl = required ssl_cert =
Thank you for your help, Trever
"'We have two ears and one mouth, so we may listen twice as much as we speak' -- Epictetus. Aha! This obviously explains many people's attitude to Usenet: 'We have ten fingers and two eyes, so we may type five times as much drivel as we actually bother to read.'" -- alt.humor.best-of-usenet
On 15.5.2013, at 18.05, Trever L. Adams trever@middleearth.sapphiresunday.org wrote:
I have been racking my brain trying to figure out why some may not see what I am seeing. The only odd part of my configuration that others may not have is:
import_environment = TZ KRB5CCNAME=...
This was added, if I remember right, at the request of myself and another so that LDAP configuration could identify with GSSAPI base kerberos. I do use it.
Can't really be related.
userdb { args = /etc/dovecot/dovecot-ldap.conf.ext driver = ldap }
What does this file contain?
What do you get in logs with auth_debug=yes and mail_debug=yes?
On 05/15/2013 09:18 AM, Timo Sirainen wrote:
On 15.5.2013, at 18.05, Trever L. Adams trever@middleearth.sapphiresunday.org wrote:
I have been racking my brain trying to figure out why some may not see what I am seeing. The only odd part of my configuration that others may not have is:
import_environment = TZ KRB5CCNAME=...
This was added, if I remember right, at the request of myself and another so that LDAP configuration could identify with GSSAPI base kerberos. I do use it. Can't really be related.
userdb { args = /etc/dovecot/dovecot-ldap.conf.ext driver = ldap } What does this file contain?
hosts = DOMAIN base = dc=middleearth,dc=sapphiresunday,dc=org ldap_version = 3 user_attrs = userPrincipalName=user user_filter = (&(objectClass=person)(|(mail=%u)(sAMAccountName=%u)(userPrincipalName=%u))) dn = MX$@DOMAIN sasl_bind = yes sasl_mech = GSSAPI sasl_realm = DOMAIN #sasl_authz_id = MX$@DOMAIN # For using doveadm -A: iterate_attrs = userPrincipalName=user iterate_filter = (objectClass=person)
This configuration works for everything but sieve. It used to work for everything.
What do you get in logs with auth_debug=yes and mail_debug=yes?
with auth_debug=yes and mail_debug=yes
May 15 09:20:17 MX postfix/cleanup[13965]: 695311409F9: message-id=20130515152017.695311409F9@MX.DOMAIN May 15 09:20:17 MX opendkim[650]: 695311409F9: DKIM-Signature header added (s=default, d=DOMAIN) May 15 09:20:17 MX postfix/qmgr[759]: 695311409F9: from=root@DOMAIN, size=562, nrcpt=1 (queue active) May 15 09:20:17 MX dovecot: lmtp(14233): Debug: none: root=, index=, indexpvt=, control=, inbox=, alt= May 15 09:20:17 MX dovecot: lmtp(14233): Connect from local May 15 09:20:17 MX dovecot: lmtp(14233): Debug: Loading modules from directory: /usr/lib64/dovecot May 15 09:20:17 MX dovecot: lmtp(14233): Debug: Module loaded: /usr/lib64/dovecot/lib90_sieve_plugin.so May 15 09:20:17 MX dovecot: auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth May 15 09:20:17 MX dovecot: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so May 15 09:20:17 MX dovecot: auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth May 15 09:20:17 MX dovecot: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libmech_gssapi.so May 15 09:20:17 MX dovecot: auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth May 15 09:20:17 MX dovecot: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libauthdb_ldap.so May 15 09:20:17 MX dovecot: auth: Debug: Read auth token secret from /var/run/dovecot/auth-token-secret.dat May 15 09:20:17 MX dovecot: auth: Debug: master in: USER#0111#011trever@DOMAIN#011service=lmtp May 15 09:20:17 MX dovecot: auth: Debug: ldap(trever@DOMAIN): user search: base=dc=middleearth,dc=sapphiresunday,dc=org scope=subtree filter=(&(objectClass=person)(|(mail=trever@DOMAIN)(sAMAccountName=trever@DOMAIN)(userPrincipalName=trever@DOMAIN))) fields=userPrincipalName May 15 09:20:17 MX dovecot: auth: Debug: ldap(trever@DOMAIN): result: userPrincipalName=trever@DOMAIN; userPrincipalName unused May 15 09:20:17 MX dovecot: auth: Debug: auth(trever@DOMAIN): username changed trever@DOMAIN -> trever@DOMAIN May 15 09:20:17 MX dovecot: auth: Debug: ldap(trever@DOMAIN): result: userPrincipalName=trever@DOMAIN May 15 09:20:17 MX dovecot: auth: Debug: userdb out: USER#0111#011trever@DOMAIN May 15 09:20:17 MX dovecot: lmtp(14233): Debug: auth input: trever@DOMAIN May 15 09:20:17 MX dovecot: lmtp(14233): Debug: changed username to trever@DOMAIN May 15 09:20:17 MX dovecot: lmtp(14233): Debug: Added userdb setting: plugin/=yes May 15 09:20:17 MX dovecot: lmtp(14233, trever@DOMAIN): Debug: Effective uid=500, gid=500, home=/home/vmail/DOMAIN/trever May 15 09:20:17 MX dovecot: lmtp(14233, trever@DOMAIN): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:~/Maildir May 15 09:20:17 MX dovecot: lmtp(14233, trever@DOMAIN): Debug: maildir++: root=/home/vmail/DOMAIN/trever/Maildir, index=, indexpvt=, control=, inbox=/home/vmail/DOMAIN/trever/Maildir, alt= May 15 09:20:17 MX dovecot: lmtp(14233, trever@DOMAIN): Debug: qDM7HrGnk1GZNwAApwKjnA: sieve: executed before user's personal Sieve script(1): (null) May 15 09:20:17 MX dovecot: lmtp(14233, trever@DOMAIN): Debug: qDM7HrGnk1GZNwAApwKjnA: sieve: executed before user's personal Sieve script(2): (null)
I don't think the above two lines are accurate that the scripts ran. I have one that should stuff anything from heirloom mail client into a folder (to test things) and it isn't working.
May 15 09:20:17 MX dovecot: lmtp(14233, trever@DOMAIN): Debug: qDM7HrGnk1GZNwAApwKjnA: sieve: using the following location for user's Sieve script: /home/vmail/DOMAIN/trever/.dovecot.sieve;name=main script May 15 09:20:17 MX dovecot: lmtp(14233, trever@DOMAIN): Debug: qDM7HrGnk1GZNwAApwKjnA: sieve: opening script (null) May 15 09:20:17 MX dovecot: lmtp(14233, trever@DOMAIN): Error: qDM7HrGnk1GZNwAApwKjnA: sieve: binary open: failed to open: open((null)) failed: Bad address May 15 09:20:17 MX dovecot: lmtp(14233, trever@DOMAIN): Error: qDM7HrGnk1GZNwAApwKjnA: sieve: failed to stat sieve script: stat((null)) failed: Bad address May 15 09:20:17 MX dovecot: lmtp(14233, trever@DOMAIN): Error: qDM7HrGnk1GZNwAApwKjnA: sieve: parse failed May 15 09:20:17 MX dovecot: lmtp(14233, trever@DOMAIN): Error: qDM7HrGnk1GZNwAApwKjnA: sieve: failed to open script (null) May 15 09:20:17 MX dovecot: lmtp(14233, trever@DOMAIN): qDM7HrGnk1GZNwAApwKjnA: sieve: msgid=20130515152017.695311409F9@MX.DOMAIN: stored mail into mailbox 'INBOX' May 15 09:20:17 MX dovecot: lmtp(14233, trever@DOMAIN): Error: qDM7HrGnk1GZNwAApwKjnA: sieve: execution of script (null) failed, but implicit keep was successful May 15 09:20:17 MX postfix/lmtp[14023]: 695311409F9: to=trever@DOMAIN, orig_to=<trever>, relay=MX.DOMAIN[/var/spool/postfix/private/dovecot-lmtp], delay=0.43, delays=0.25/0/0.01/0.17, dsn=2.0.0, status=sent (250 2.0.0 trever@DOMAIN qDM7HrGnk1GZNwAApwKjnA Saved) May 15 09:20:17 MX dovecot: lmtp(14233): Disconnect from local: Successful quit May 15 09:20:17 MX postfix/qmgr[759]: 695311409F9: removed
Thank you, Trever
On 5/15/2013 5:25 PM, Trever L. Adams wrote:
On 05/15/2013 09:18 AM, Timo Sirainen wrote:
What do you get in logs with auth_debug=yes and mail_debug=yes? with auth_debug=yes and mail_debug=yes
This looks like a rather old version of Pigeonhole (pre-release v0.4).
Due to the following change a Pigeonhole version should be logged when mail_debug is enabled:
http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/44721c50833e
I see nothing like that in your logs, so you're running something older.
This change is probably what fixes your trouble:
http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/f43c7609497c
From the package name you provided I cannot tell which version (or rather hg revision) of Pigeonhole you are running. The released v0.4.0 should work.
Regards,
Stephan.
On 05/15/2013 10:39 AM, Stephan Bosch wrote:
On 5/15/2013 5:25 PM, Trever L. Adams wrote:
On 05/15/2013 09:18 AM, Timo Sirainen wrote:
What do you get in logs with auth_debug=yes and mail_debug=yes? with auth_debug=yes and mail_debug=yes
This looks like a rather old version of Pigeonhole (pre-release v0.4).
Due to the following change a Pigeonhole version should be logged when mail_debug is enabled:
http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/44721c50833e
I see nothing like that in your logs, so you're running something older.
This change is probably what fixes your trouble:
http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/f43c7609497c
From the package name you provided I cannot tell which version (or rather hg revision) of Pigeonhole you are running. The released v0.4.0 should work.
Regards,
Stephan.
I am sorry for assuming that dovecot and pigeonhole were in the same respository. They are packaged from one SRPM in Fedora. It appears that the following is the hg information, so yes, it is old:
repo: d31c1c993bcf9897297b1c6a7d4fd3a7bbc4eff8 node: 99eec511aa2c03df4a7dcb2cd1506163b49e419b branch: default latesttag: 0.3.3 latesttagdistance: 22
I will file the appropriate bug there.
Thank you TImo and Stephan for your help!
Trever
-- "I have sworn upon the altar of God, eternal hostility against every form of tyranny over the mind of man." -- Thomas Jefferson"
On 05/15/2013 10:39 AM, Stephan Bosch wrote:
This looks like a rather old version of Pigeonhole (pre-release v0.4).
Due to the following change a Pigeonhole version should be logged when mail_debug is enabled:
http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/44721c50833e
I see nothing like that in your logs, so you're running something older.
This change is probably what fixes your trouble:
http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/f43c7609497c
From the package name you provided I cannot tell which version (or rather hg revision) of Pigeonhole you are running. The released v0.4.0 should work.
Regards,
Stephan.
When trying to compile this version, I am getting the following. I am not sure what is causing it. dovecot compiles fine. Pigeonhole is compiling, but then failing.
PASS: 2 tests succeeded.
Test case: ./tests/multiscript/conflicts.svtest:
testsuite(root): Panic: pool_data_stack_realloc(): stack frame changed testsuite(root): Error: Raw backtrace: /root/rpmbuild/BUILD/dovecot-2.2.1/src/lib-dovecot/.libs/libdovecot.so.0(+0x5e1c7) [0x7f4e5d4801c7] -> /root/rpmbuild/BUILD/dovecot-2.2.1/src/lib-dovecot/.libs/libdovecot.so.0(default_fatal_handler+0x2a) [0x7f4e5d48021a] -> /root/rpmbuild/BUILD/dovecot-2.2.1/src/lib-dovecot/.libs/libdovecot.so.0(i_fatal+0) [0x7f4e5d442025] -> /root/rpmbuild/BUILD/dovecot-2.2.1/src/lib-dovecot/.libs/libdovecot.so.0(+0x720da) [0x7f4e5d4940da] -> /root/rpmbuild/BUILD/dovecot-2.2.1/src/lib-dovecot/.libs/libdovecot.so.0(+0x5a8ed) [0x7f4e5d47c8ed] -> /root/rpmbuild/BUILD/dovecot-2.2.1/src/lib-dovecot/.libs/libdovecot.so.0(buffer_write+0xa3) [0x7f4e5d47cc73] -> /root/rpmbuild/BUILD/dovecot-2.2.1/dovecot-2-2-pigeonhole-a32b12ab5ea6/src/lib-sieve/.libs/libdovecot-sieve.so.0(rfc2822_header_append+0x146) [0x7f4e5dc1fb46] -> /root/rpmbuild/BUILD/dovecot-2.2.1/dovecot-2-2-pigeonhole-a32b12ab5ea6/src/lib-sieve/.libs/libdovecot-sieve.so.0(rfc2822_header_printf+0xb1) [0x7f4e5dc1fd21] -> /root/rpmbuild/BUILD/dovecot-2.2.1/dovecot-2-2-pigeonhole-a32b12ab5ea6/src/lib-sieve/.libs/libdovecot-sieve.so.0(sieve_action_reject_mail+0x35f) [0x7f4e5dc3c7df] -> /root/rpmbuild/BUILD/dovecot-2.2.1/dovecot-2-2-pigeonhole-a32b12ab5ea6/src/lib-sieve/.libs/libdovecot-sieve.so.0(+0x43093) [0x7f4e5dc41093] -> /root/rpmbuild/BUILD/dovecot-2.2.1/dovecot-2-2-pigeonhole-a32b12ab5ea6/src/lib-sieve/.libs/libdovecot-sieve.so.0(sieve_result_execute+0x248) [0x7f4e5dc34468] -> /root/rpmbuild/BUILD/dovecot-2.2.1/dovecot-2-2-pigeonhole-a32b12ab5ea6/src/testsuite/.libs/lt-testsuite(testsuite_result_execute+0x21) [0x7f4e5e0b6f31] -> /root/rpmbuild/BUILD/dovecot-2.2.1/dovecot-2-2-pigeonhole-a32b12ab5ea6/src/testsuite/.libs/lt-testsuite(+0x10c84) [0x7f4e5e0bac84] -> /root/rpmbuild/BUILD/dovecot-2.2.1/dovecot-2-2-pigeonhole-a32b12ab5ea6/src/lib-sieve/.libs/libdovecot-sieve.so.0(sieve_interpreter_continue+0xce) [0x7f4e5dc3179e] -> /root/rpmbuild/BUILD/dovecot-2.2.1/dovecot-2-2-pigeonhole-a32b12ab5ea6/src/lib-sieve/.libs/libdovecot-sieve.so.0(sieve_interpreter_run+0x2b) [0x7f4e5dc3192b] -> /root/rpmbuild/BUILD/dovecot-2.2.1/dovecot-2-2-pigeonhole-a32b12ab5ea6/src/testsuite/.libs/lt-testsuite(main+0x2d4) [0x7f4e5e0b3eb4] -> /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f4e5ce7fb75] -> /root/rpmbuild/BUILD/dovecot-2.2.1/dovecot-2-2-pigeonhole-a32b12ab5ea6/src/testsuite/.libs/lt-testsuite(+0xa075) [0x7f4e5e0b4075]
make: *** [tests/multiscript/conflicts.svtest] Aborted
Thank you, Trever
On 5/15/2013 9:37 PM, Trever L. Adams wrote:
On 05/15/2013 10:39 AM, Stephan Bosch wrote: When trying to compile this version, I am getting the following. I am not sure what is causing it. dovecot compiles fine. Pigeonhole is compiling, but then failing.
PASS: 2 tests succeeded.
Test case: ./tests/multiscript/conflicts.svtest:
testsuite(root): Panic: pool_data_stack_realloc(): stack frame changed
Oh. Well, it is a good thing we have a test suite.
This should fix it:
http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/04ad3c2f0765
Regards,
Stephan.
On 05/15/2013 02:01 PM, Stephan Bosch wrote:
On 5/15/2013 9:37 PM, Trever L. Adams wrote:
On 05/15/2013 10:39 AM, Stephan Bosch wrote: When trying to compile this version, I am getting the following. I am not sure what is causing it. dovecot compiles fine. Pigeonhole is compiling, but then failing.
PASS: 2 tests succeeded.
Test case: ./tests/multiscript/conflicts.svtest:
testsuite(root): Panic: pool_data_stack_realloc(): stack frame changed
Oh. Well, it is a good thing we have a test suite.
This should fix it:
http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/04ad3c2f0765
Regards,
Stephan.
That did the trick. Thank you very much. For Fedora users who may find this: https://bugzilla.redhat.com/show_bug.cgi?id=963417
Again, thank you! Trever
participants (3)
-
Stephan Bosch
-
Timo Sirainen
-
Trever L. Adams