<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>30135</bug_id>
          
          <creation_ts>2014-06-24 06:21:12 +0400</creation_ts>
          <short_desc>Postfix SASL authentication broken after upgrade to libsasl2-3</short_desc>
          <delta_ts>2016-06-28 14:12:58 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>cyrus-sasl2</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>NOTABUG</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ivan Adzhubey">iadzhubey</reporter>
          <assigned_to name="Sergey Y. Afonin">asy</assigned_to>
          <cc>asy</cc>
    
    <cc>evg</cc>
    
    <cc>george</cc>
    
    <cc>lav</cc>
    
    <cc>taf</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>146848</commentid>
    <comment_count>0</comment_count>
    <who name="Ivan Adzhubey">iadzhubey</who>
    <bug_when>2014-06-24 06:21:12 +0400</bug_when>
    <thetext>После установки libsasl2-3-2.1.26-alt5 SASL Postfix authentication поломался:

warning: SASL authentication failure: Internal Error -4 in server.c near line 1757
Jun 24 06:15:49 protein last message repeated 2 times
Jun 24 06:15:49 protein postfix/smtpd[21089]: warning: xsasl_cyrus_server_get_mechanism_list: no mechanism available
Jun 24 06:15:49 protein postfix/smtpd[21089]: fatal: no SASL authentication mechanisms

Судя по всему, это вот этот баг:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=638045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146849</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan Adzhubey">iadzhubey</who>
    <bug_when>2014-06-24 07:27:46 +0400</bug_when>
    <thetext>Нет, это оказалось другое.

Исправил так:

# cd /usr/lib
# rm -rf sasl2/
# ln -sT sasl2-3 sasl2
# service saslauthd restart
# service courier-authdaemon restart

После чего SASL authentication заработала нормально (это на i32 архитектуре). 
То есть проблема в том, что cyrus-sasl2-2.1.26-alt5 не знает про 
/usr/lib/sasl2-3/ от libsasl2-3-2.1.26-alt5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146850</commentid>
    <comment_count>2</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2014-06-24 10:25:39 +0400</bug_when>
    <thetext>Это результат исправления bug #30113.

То есть, сломался saslauthd, получается ? pluginviewer плагины показывает ? У меня показывает. И с libsasl2-3 тоже всё в порядке: у меня Curus-IMAP через mysql-плагин работает.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146854</commentid>
    <comment_count>3</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2014-06-24 13:51:31 +0400</bug_when>
    <thetext>И courier-authdaemon тоже через sasl авторизует ? А он работал без симлинка, или, тоже, нет ?

И, ещё: Postfix и Courier перезапускались после обновления libsasl2-3, или со старой библиотекой в памяти так и продолжали работать ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146858</commentid>
    <comment_count>4</comment_count>
    <who name="Ivan Adzhubey">iadzhubey</who>
    <bug_when>2014-06-24 18:07:09 +0400</bug_when>
    <thetext>(In reply to comment #2)
&gt; Это результат исправления bug #30113.
&gt; 
&gt; То есть, сломался saslauthd, получается ?

Да, похоже cyrus-sasl2 тут ни причем. Я даже не помню, зачем он у меня стоит - пользуюсь связкой Postfix, Courier-IMAP, SASL, MySQL (auxprop).

&gt; pluginviewer плагины показывает ?

Сейчас он все, что надо показывает, а как оно было до ручной правки симлинков в системе - этого я не знаю.

&gt; У меня показывает. И с libsasl2-3 тоже всё в порядке: у меня Curus-IMAP через
&gt; mysql-плагин работает.

У меня Courier-IMAP с аутентикацией через MySQL auxprop плагин. SASL в Courier-IMAP работал и не вызывал проблем и после обновления. Это только Postfix smtpd падать на SASL auth начал.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146859</commentid>
    <comment_count>5</comment_count>
    <who name="Ivan Adzhubey">iadzhubey</who>
    <bug_when>2014-06-24 18:08:44 +0400</bug_when>
    <thetext>(In reply to comment #3)
&gt; И courier-authdaemon тоже через sasl авторизует ? А он работал без симлинка,
&gt; или, тоже, нет ?
&gt; 
&gt; И, ещё: Postfix и Courier перезапускались после обновления libsasl2-3, или со
&gt; старой библиотекой в памяти так и продолжали работать ?

Все перезапускалось и сервер перезагружался тоже. Не помогало. Зато простой симлинк на старое имя пути к библиотекам - помогло сразу.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146860</commentid>
    <comment_count>6</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2014-06-24 19:17:34 +0400</bug_when>
    <thetext>(In reply to comment #4)

&gt; &gt; То есть, сломался saslauthd, получается ?
&gt; 
&gt; Да, похоже cyrus-sasl2 тут ни причем. 

saslauthd в пакете cyrus-sasl2, как раз. Это если он под подозрением...

&gt; Сейчас он все, что надо показывает, а как оно было до ручной правки
&gt; симлинков в системе - этого я не знаю.

Так надо симлинк убрать и проверить. У меня никаких симлинков нет, Cyrus-IMAP работает нормально и pluginviewer всё показывает. 

# ls -dl /usr/lib/sa*
drwxr-xr-x 2 root root 4096 Jun 17 12:28 /usr/lib/sasl2-3

# rpm -qa|grep &quot;cyrus\|sasl&quot;
cyrus-imapd-2.4.17-alt1
libsasl2-3-2.1.26-alt5
cyrus-sasl2-2.1.26-alt5
libsasl2-plugin-sql-2.1.26-alt5

&gt; У меня Courier-IMAP с аутентикацией через MySQL auxprop плагин. SASL в
&gt; Courier-IMAP работал и не вызывал проблем и после обновления. Это только
&gt; Postfix smtpd падать на SASL auth начал.

Странно весьма. У одного пользователя библиотеки всё хорошо (Courier-IMAP), у другого - нет (Postfix). А Postfix в chroot ? chroot-окружение у него обновлялось ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146861</commentid>
    <comment_count>7</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2014-06-24 19:20:54 +0400</bug_when>
    <thetext>Ещё вопрос, а это вот зачем ?

# rm -rf sasl2/

Если всё правильно было, этого каталога, по идее, не должно было остаться. Никакого самосбора нет случайно ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146862</commentid>
    <comment_count>8</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2014-06-24 19:32:14 +0400</bug_when>
    <thetext>нужны консультанты по Postfix...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146863</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-06-24 21:09:53 +0400</bug_when>
    <thetext>(In reply to comment #8)
&gt; нужны консультанты по Postfix...

Когда я вас просил не ломать прямую и обратную совместимость, вы меня не услышали...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146864</commentid>
    <comment_count>10</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2014-06-24 21:20:59 +0400</bug_when>
    <thetext>(В ответ на комментарий №9)

&gt; Когда я вас просил не ломать прямую и обратную совместимость, вы меня не
&gt; услышали...

Если вчитаться, дело сейчас вовсе не в soname, а в упаковке в соответствии с 
http://www.altlinux.org/Shared_Libs_Policy

C libsasl2-3-2.1.26-alt3 никаких проблем не было, кроме конфликта с libsasl2. А делать в соответствии с Shared_Libs_Policy пришлось бы рано или поздно. Я считаю, что лучше это делать раньше.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146865</commentid>
    <comment_count>11</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2014-06-24 21:32:50 +0400</bug_when>
    <thetext>(В ответ на комментарий №10)

&gt;  кроме конфликта с libsasl2.

В смысле в спеке:

 2014-06-04 Gleb F-Malinovskiy &lt;glebfm at altlinux.org&gt; 2.1.26-alt4

    - Drop Conflicts: libsasl2 to comply SharedLibs Policy.

Ну и CVE-2013-4122 можно было исправить не дожидаясь, пока за cyrus-sasl я возьмусь, если что. Так что, предлагаю думать, почему все работают (Courier-IMAP и Cyrus-IMAP, по крайней мере), а Postfix - нет, а не заниматься обвинениями.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146897</commentid>
    <comment_count>12</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2014-06-29 20:15:27 +0400</bug_when>
    <thetext>Смотрю, делается попытка старый soname вернуть в сборке 2.1.26-alt6 ? В общем-то, это неправильно, так как именно сейчас soname совпадает с апстримным и является правильным. Это раз. А два - soname когда-нибудь ещё раз сменится. Беда не из-за soname, а из-за выноса плагинов в %libdir/sasl2-3 из %libdir/sasl2. Причём, на сколько я понимаю, проблему это вызвало только у Postfix: вот на этот вопрос никто не ответил пока:

http://lists.altlinux.org/pipermail/sisyphus/2014-June/362434.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146898</commentid>
    <comment_count>13</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2014-06-29 20:19:21 +0400</bug_when>
    <thetext>Эта неделя у меня посвободнее ожидается, попробую себе Postfix поставить куда-нибудь и воспроизвести проблему, особенно, если мне кто-нибудь пример проблемной конфигурации в почту пошлёт.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147043</commentid>
    <comment_count>14</comment_count>
    <who name="Ivan Adzhubey">iadzhubey</who>
    <bug_when>2014-07-09 09:52:40 +0400</bug_when>
    <thetext>(In reply to comment #7)
&gt; Ещё вопрос, а это вот зачем ?
&gt; 
&gt; # rm -rf sasl2/
&gt; 
&gt; Если всё правильно было, этого каталога, по идее, не должно было остаться.
&gt; Никакого самосбора нет случайно ?

Нет, никакой сомосборки не было. Но в процессе настройки постфикса и всей почтовой связки, на каком-то этапе, в этот каталог были скопированы (возможно - руками) несколько левых файлов (pem сертификаты). Когда и зачем - не вспомнить уже, у меня этот сервер с 2006 года стоит. Только эти файлы там и оставались после обновления. Возможно, скрипт инсталляции не смог их удалить и молча упал? В логах обновления никаких ошибок не было, это я точно помню. Удаление каталога и старых pem-файлов описанное выше никак не повредило аутентификации (они давно уже в другом месте ищутся SASL-ом).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147044</commentid>
    <comment_count>15</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2014-07-09 10:02:05 +0400</bug_when>
    <thetext>(In reply to comment #14)

&gt; несколько левых файлов (pem сертификаты).

Понятно. Это, действительно, причина, чтобы каталог /usr/lib/sasl2 остался: rpm не удаляет непустые каталоги. Но на работоспособность нового пакета повлиять это было не должно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147062</commentid>
    <comment_count>16</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2014-07-11 12:27:01 +0400</bug_when>
    <thetext>Проверил &quot;saslauthd -o pam&quot; (-o rimap изначально использовался) с таким конфигом /etc/sasl2/Sendmail.conf:

============
pwcheck_method: saslauthd
mech_list: LOGIN PLAIN
============

SQL проверил с таким конфигом Sendmail.conf (опции запуска saslauthd тут не влияют уже):

============
pwcheck_method: saslauthd
mech_list: LOGIN PLAIN

allow_plaintext: true
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: xxxx
sql_passwd: xxxx
sql_database: xxxx
sql_select: select passwd.passwd from passwd,usergroup where username=&apos;%u&apos; and passwd.device=64 and passwd.deleted=0
=============

SQL-запрос, конечно, под мою базу. Всё работает. Так что баг, вероятно, именно в Postfix. Sendmail пересобирался последний раз раньше, чем cyrus-sasl2, который вызвал проблему с Postfix, Sendmail-у изменения в alt5 не повредили.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147252</commentid>
    <comment_count>17</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2014-08-05 11:22:01 +0400</bug_when>
    <thetext>&gt; warning: SASL authentication failure: Internal Error -4 in server.c near line
1757

А кто вот это вот написал ? Что-то я это сообщение у себя в логе получить не могу. Оно к Postfix относится, или к saslauthd ?

Пока в коде Postfix обнаружилось такое вот место:

#if SASL_VERSION_MAJOR &gt;= 2
    *path = strdup(&quot;/etc/postfix/sasl:@libdir@/sasl2&quot;);
#else
    *path = strdup(&quot;/etc/postfix/sasl:@libdir@/sasl&quot;);
#endif

Как без жёсткой ссылки обходятся остальные клиенты, не знаю пока. С другой стороны, это даёт возможность вынести символьную ссылку /usr/lib/sasl2 в /etc, что несколько более удобно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147494</commentid>
    <comment_count>18</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2014-09-01 12:12:16 +0400</bug_when>
    <thetext>Предлагаю сделать так: bug 30270. Этот баг перевешивать не стал для удобства поиска.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154555</commentid>
    <comment_count>19</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2016-01-13 14:16:36 +0300</bug_when>
    <thetext>В общем, похоже, что Postfix - единственный клиент, который не учитывает возможность сборки cyrus-sasl2 с --with-plugindir=</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>