---
name: "Authen::NTLM"
section: "3pm"
platform: "linux"
package: "perl-ntlm"
version: "1.09-12"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Authen::NTLM"
---

# Authen::NTLM(3pm)

An NTLM authentication module

## NAME

Authen::NTLM - An NTLM authentication module

## SYNOPSIS

```
    use Mail::IMAPClient;
    use Authen::NTLM;
    my $imap = Mail::IMAPClient->new(Server=>'imaphost');
    ntlm_user($username);
    ntlm_password($password);
    $imap->authenticate("NTLM", Authen::NTLM::ntlm);
    :
    $imap->logout;
    ntlm_reset;
    :
```

or

```
    ntlmv2(1);
    ntlm_user($username);
    ntlm_host($host);
    ntlm_password($password);
    :
```

or

```
    my $ntlm = Authen::NTLM-> new(
        host     => $host,
        user     => $username,
        domain   => $domain,
        password => $password,
        version  => 1,
    );
    $ntlm-> challenge;
    :
    $ntlm-> challenge($challenge);
```

## DESCRIPTION

```
    This module provides methods to use NTLM authentication.  It can
    be used as an authenticate method with the Mail::IMAPClient module
    to perform the challenge/response mechanism for NTLM connections
    or it can be used on its own for NTLM authentication with other
    protocols (eg. HTTP).
    The implementation is a direct port of the code from F<fetchmail>
    which, itself, has based its NTLM implementation on F<samba>.  As
    such, this code is not especially efficient, however it will still
    take a fraction of a second to negotiate a login on a PII which is
    likely to be good enough for most situations.
```

### FUNCTIONS

- **ntlm\_domain()**

  ```
      Set the domain to use in the NTLM authentication messages.
      Returns the new domain.  Without an argument, this function
      returns the current domain entry.
  ```

- **ntlm\_user()**

  ```
      Set the username to use in the NTLM authentication messages.
      Returns the new username.  Without an argument, this function
      returns the current username entry.
  ```

- **ntlm\_password()**

  ```
      Set the password to use in the NTLM authentication messages.
      Returns the new password.  Without an argument, this function
      returns the current password entry.
  ```

- **ntlm\_reset()**

  ```
      Resets the NTLM challenge/response state machine so that the next
      call to C<ntlm()> will produce an initial connect message.
  ```

- **ntlm()**

  ```
      Generate a reply to a challenge.  The NTLM protocol involves an
      initial empty challenge from the server requiring a message
      response containing the username and domain (which may be empty).
      The first call to C<ntlm()> generates this first message ignoring
      any arguments.
      The second time it is called, it is assumed that the argument is
      the challenge string sent from the server.  This will contain 8
      bytes of data which are used in the DES functions to generate the
      response authentication strings.  The result of the call is the
      final authentication string.
      If C<ntlm_reset()> is called, then the next call to C<ntlm()> will
      start the process again allowing multiple authentications within
      an application.
  ```

- **ntlmv2()**

  ```
      Use NTLM v2 authentication.
  ```

### OBJECT API

- new %options

  Creates an object that accepts the following options: `"user"`, `"host"`, `"domain"`, `"password"`, `"version"`.

- challenge \[$challenge\]

  If `$challenge` is not supplied, first-stage challenge string is generated. Otherwise, the third-stage challenge is generated, where `$challenge` is assumed to be extracted from the second stage of NTLM exchange. The result of the call is the final authentication string.

## AUTHOR

```
    David (Buzz) Bussenschutt <davidbuzz@gmail.com> - current maintainer
    Dmitry Karasik <dmitry@karasik.eu.org> - nice ntlmv2 patch, OO extensions.
    Andrew Hobson <ahobson@infloop.com> - initial ntlmv2 code
    Mark Bush <Mark.Bush@bushnet.demon.co.uk> - perl port
    Eric S. Raymond - author of fetchmail
    Andrew Tridgell and Jeremy Allison for SMB/Netbios code
```

## SEE ALSO

perl, Mail::IMAPClient, LWP::Authen::Ntlm

## HISTORY

```
    1.09 - fix CPAN ticket # 70703
    1.08 - fix CPAN ticket # 39925
    1.07 - not publicly released
    1.06 - relicense as GPL+ or Artistic
    1.05 - add OO interface by Dmitry Karasik
    1.04 - implementation of NTLMv2 by Andrew Hobson/Dmitry Karasik
    1.03 - fixes long-standing 1 line bug L<http://rt.cpan.org/Public/Bug/Display.html?id=9521> - released by David Bussenschutt 9th Aug 2007
    1.02 - released by Mark Bush 29th Oct 2001
```
