Outlook, не могущий соединяться с почтовым ящиком, который скрыт в GAL

Вы не первый человек, который столкнется с этой проблемой с iconv. Кто-то записал сценарий Perl для решения его.

iconv не обрабатывает большие файлы хорошо. От glibc исходного кода, в iconv/iconv_prog.c:

/* Since we have to deal with
   arbitrary encodings we must read the whole text in a buffer and
   process it in one step.  */

Однако для Вашего особого случая, могло бы быть лучше записать Ваш собственный блок проверки допустимости UTF-8. Вы могли легко дистиллировать iconv -c -f utf8 -t utf8 вниз к маленькой программе C, с циклом, который звонит iconv(3). Так как UTF-8 является немодальным и самосинхронизация, можно обработать его в блоках.

#include 
#include 
#include 
#include 
#include 

#define BUFSIZE 4096

/* Copy STDIN to STDOUT, omitting invalid UTF-8 sequences */
int main() {
    char ib[BUFSIZE], ob[BUFSIZE], *ibp, *obp;
    ssize_t bytes_read;
    size_t iblen = 0, oblen;
    unsigned long long total;
    iconv_t cd;

    if ((iconv_t)-1 == (cd = iconv_open("utf8", "utf8"))) {
        perror("iconv_open");
        return 2;
    }

    for (total = 0;
         bytes_read = read(STDIN_FILENO, ib + iblen, sizeof(ib) - iblen);
         total += bytes_read - iblen) {

        if (-1 == bytes_read) {     /* Handle read error */
            perror("read");
            return 1;
        }
        ibp = ib; iblen += bytes_read;
        obp = ob; oblen = sizeof(ob);
        if (-1 == iconv(cd, &ibp, &iblen, &obp, &oblen)) {
            switch (errno) {
              case EILSEQ:          /* Invalid input multibyte sequence */
                fprintf(stderr, "Invalid multibyte sequence at byte %llu\n",
                        1 + total + sizeof(ib) - iblen);
                ibp++; iblen--;     /* Skip the bad byte next time */
                break;
              case EINVAL:          /* Incomplete input multibyte sequence */               
                break;
              default:
                perror("iconv");
                return 2;
            }
        }
        write(STDOUT_FILENO, ob, sizeof(ob) - oblen);

        /* There are iblen bytes at the end of ib that follow an invalid UTF-8
           sequence or are part of an incomplete UTF-8 sequence.  Move them to  
           the beginning of ib. */
        memmove(ib, ibp, iblen);
    }
    return iconv_close(cd);
}

1
задан 6 August 2010 в 21:12
2 ответа

Вы не собираетесь любить это немного лучше, чем ответ, который Вы имеете теперь (раскройте и повторно скройтесь), но определение legacyExchangeDN из почтового ящика пользователя позволит "Имени Проверки" функционировать, даже если объект будет скрыт (так как в основном это - то, что "Имя Проверки" делает - разрешение псевдонима пользователя в legacyExchangeDN).

У моего пользователя "EAnderson" на моей тестовой буровой установке здесь есть legacyExchangeDN "/o=Home/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=EAnderson". Я проверяю, что почтовый ящик скрыт от списков адресов, не разрешит с именем псевдонима "EAnderson", но "Проверяют, что Имя" хорошо работает, и почтовый ящик открывается, когда я использую legacyExchangeDN. (Этот прием работал полностью назад, по крайней мере, к Exchange 5.5 и был приемом, который я буду использовать, чтобы показать людям кто, хотя они были "экспертами Exchange", что, возможно, они не знали все, которое они думали, что сделали... heh heh...),

Где Вы получаете legacyExchangeDN? Используя инструмент как ADSIEDIT позволит Вам видеть его, как будет любые другие инструменты, которые позволяют запросы "свободной формы" базы данных Active Directory.

После того как Вы знаете формат атрибутов legacyExchangeDN своих пользователей, можно, вероятно, сформулировать их из головы. Они стали намного более ужасными в обмен 2007, потому что у них есть ссылка на "/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)" AG в них.

3
ответ дан 3 December 2019 в 17:24

Раскройте его в GAL, настройте Outlook, повторно скройте его в GAL.

2
ответ дан 3 December 2019 в 17:24
  • 1
    +1, насколько я знаю, нет способа соединиться со скрытыми объектами, но Вы будете оставаться на связи, если его скрытое после соединения. –  DanBig 6 August 2010 в 21:33
  • 2
    @Dan: это неправильно. Существует путь. @joewqwerty: это будет работать, но в плакате уже было сказано, что он знает, как сделать это тот путь. –  Evan Anderson 6 August 2010 в 21:34

Теги

Похожие вопросы