Expand PMF_FN_* macros.
[netbsd-mini2440.git] / external / ibm-public / postfix / dist / man / man5 / ldap_table.5
blob27499a5a1e8cc69fd352f1c9e05dbcd859495f18
1 .\"     $NetBSD$
2 .\"
3 .TH LDAP_TABLE 5 
4 .ad
5 .fi
6 .SH NAME
7 ldap_table
8 \-
9 Postfix LDAP client configuration
10 .SH "SYNOPSIS"
11 .na
12 .nf
13 \fBpostmap -q "\fIstring\fB" ldap:/etc/postfix/filename\fR
15 \fBpostmap -q - ldap:/etc/postfix/\fIfilename\fR <\fIinputfile\fR
16 .SH DESCRIPTION
17 .ad
18 .fi
19 The Postfix mail system uses optional tables for address
20 rewriting or mail routing. These tables are usually in
21 \fBdbm\fR or \fBdb\fR format.
23 Alternatively, lookup tables can be specified as LDAP databases.
25 In order to use LDAP lookups, define an LDAP source as a lookup
26 table in main.cf, for example:
28 .nf
29     alias_maps = ldap:/etc/postfix/ldap-aliases.cf
30 .fi
32 The file /etc/postfix/ldap-aliases.cf has the same format as
33 the Postfix main.cf file, and can specify the parameters
34 described below. An example is given at the end of this manual.
36 This configuration method is available with Postfix version
37 2.1 and later.  See the section "BACKWARDS COMPATIBILITY"
38 below for older Postfix versions.
40 For details about LDAP SSL and STARTTLS, see the section
41 on SSL and STARTTLS below.
42 .SH "BACKWARDS COMPATIBILITY"
43 .na
44 .nf
45 .ad
46 .fi
47 For backwards compatibility with Postfix version 2.0 and earlier,
48 LDAP parameters can also be defined in main.cf.  Specify
49 as LDAP source a name that doesn't begin with a slash or
50 a dot.  The LDAP parameters will then be accessible as the
51 name you've given the source in its definition, an underscore,
52 and the name of the parameter.  For example, if the map is
53 specified as "ldap:\fIldapsource\fR", the "server_host"
54 parameter below would be defined in main.cf as
55 "\fIldapsource\fR_server_host".
57 Note: with this form, the passwords for the LDAP sources are
58 written in main.cf, which is normally world-readable.  Support
59 for this form will be removed in a future Postfix version.
61 Postfix 2.2 has enhanced query interfaces for MySQL and PostgreSQL.
62 These include features that were previously available only in the
63 Postfix LDAP client. This work also created an opportunity for
64 improvements in the LDAP interface. The primary compatibility
65 issue is that \fBresult_filter\fR (a name that has caused some
66 confusion as to its meaning in the past) has been renamed to
67 \fBresult_format\fR.  For backwards compatibility with the pre
68 2.2 LDAP client, \fBresult_filter\fR can for now be used instead
69 of \fBresult_format\fR, when the latter parameter is not also set.
70 The new name better reflects the function of the parameter. This
71 compatibility interface may be removed in a future release.
72 .SH "LIST MEMBERSHIP"
73 .na
74 .nf
75 .ad
76 .fi
77 When using LDAP to store lists such as $mynetworks,
78 $mydestination, $relay_domains, $local_recipient_maps,
79 etc., it is important to understand that the table must
80 store each list member as a separate key. The table lookup
81 verifies the *existence* of the key. See "Postfix lists
82 versus tables" in the DATABASE_README document for a
83 discussion.
85 Do NOT create tables that return the full list of domains
86 in $mydestination or $relay_domains etc., or IP addresses
87 in $mynetworks.
89 DO create tables with each matching item as a key and with
90 an arbitrary value. With LDAP databases it is not uncommon to
91 return the key itself.
93 For example, NEVER do this in a map defining $mydestination:
95 .nf
96     query_filter = domain=*
97     result_attribute = domain
98 .fi
100 Do this instead:
103     query_filter = domain=%s
104     result_attribute = domain
106 .SH "GENERAL LDAP PARAMETERS"
111 In the text below, default values are given in parentheses.
112 Note: don't use quotes in these variables; at least, not until the
113 Postfix configuration routines understand how to deal with quoted
114 strings.
115 .IP "\fBserver_host (default: localhost)\fR"
116 The name of the host running the LDAP server, e.g.
119     server_host = ldap.example.com
122 Depending on the LDAP client library you're using, it should
123 be possible to specify multiple servers here, with the library
124 trying them in order should the first one fail. It should also
125 be possible to give each server in the list a different port
126 (overriding \fBserver_port\fR below), by naming them like
129     server_host = ldap.example.com:1444
132 With OpenLDAP, a (list of) LDAP URLs can be used to specify both
133 the hostname(s) and the port(s):
136     server_host = ldap://ldap.example.com:1444
137                 ldap://ldap2.example.com:1444
140 All LDAP URLs accepted by the OpenLDAP library are supported,
141 including connections over UNIX domain sockets, and LDAP SSL
142 (the last one provided that OpenLDAP was compiled with support
143 for SSL):
146     server_host = ldapi://%2Fsome%2Fpath
147                 ldaps://ldap.example.com:636
149 .IP "\fBserver_port (default: 389)\fR"
150 The port the LDAP server listens on, e.g.
153     server_port = 778
155 .IP "\fBtimeout (default: 10 seconds)\fR"
156 The number of seconds a search can take before timing out, e.g.
159     timeout = 5
161 .IP "\fBsearch_base (No default; you must configure this)\fR"
162 The RFC2253 base DN at which to conduct the search, e.g.
165     search_base = dc=your, dc=com
168 With Postfix 2.2 and later this parameter supports the
169 following '%' expansions:
171 .IP "\fB\fB%%\fR\fR"
172 This is replaced by a literal '%' character.
173 .IP "\fB\fB%s\fR\fR"
174 This is replaced by the input key.
175 RFC 2253 quoting is used to make sure that the input key
176 does not add unexpected metacharacters.
177 .IP "\fB\fB%u\fR\fR"
178 When the input key is an address of the form user@domain, \fB%u\fR
179 is replaced by the (RFC 2253) quoted local part of the address.
180 Otherwise, \fB%u\fR is replaced by the entire search string.
181 If the localpart is empty, the search is suppressed and returns
182 no results.
183 .IP "\fB\fB%d\fR\fR"
184 When the input key is an address of the form user@domain, \fB%d\fR
185 is replaced by the (RFC 2253) quoted domain part of the address.
186 Otherwise, the search is suppressed and returns no results.
187 .IP "\fB\fB%[SUD]\fR\fR"
188 For the \fBsearch_base\fR parameter, the upper-case equivalents
189 of the above expansions behave identically to their lower-case
190 counter-parts. With the \fBresult_format\fR parameter (previously
191 called \fBresult_filter\fR see the COMPATIBILITY section and below),
192 they expand to the corresponding components of input key rather
193 than the result value.
194 .IP "\fB\fB%[1-9]\fR\fR"
195 The patterns %1, %2, ... %9 are replaced by the corresponding
196 most significant component of the input key's domain. If the
197 input key is \fIuser@mail.example.com\fR, then %1 is \fBcom\fR,
198 %2 is \fBexample\fR and %3 is \fBmail\fR. If the input key is
199 unqualified or does not have enough domain components to satisfy
200 all the specified patterns, the search is suppressed and returns
201 no results.
203 .IP "\fBquery_filter (default: mailacceptinggeneralid=%s)\fR"
204 The RFC2254 filter used to search the directory, where \fB%s\fR
205 is a substitute for the address Postfix is trying to resolve,
206 e.g.
209     query_filter = (&(mail=%s)(paid_up=true))
212 This parameter supports the following '%' expansions:
214 .IP "\fB\fB%%\fR\fR"
215 This is replaced by a literal '%' character. (Postfix 2.2 and later).
216 .IP "\fB\fB%s\fR\fR"
217 This is replaced by the input key.
218 RFC 2254 quoting is used to make sure that the input key
219 does not add unexpected metacharacters.
220 .IP "\fB\fB%u\fR\fR"
221 When the input key is an address of the form user@domain, \fB%u\fR
222 is replaced by the (RFC 2254) quoted local part of the address.
223 Otherwise, \fB%u\fR is replaced by the entire search string.
224 If the localpart is empty, the search is suppressed and returns
225 no results.
226 .IP "\fB\fB%d\fR\fR"
227 When the input key is an address of the form user@domain, \fB%d\fR
228 is replaced by the (RFC 2254) quoted domain part of the address.
229 Otherwise, the search is suppressed and returns no results.
230 .IP "\fB\fB%[SUD]\fR\fR"
231 The upper-case equivalents of the above expansions behave in the
232 \fBquery_filter\fR parameter identically to their lower-case
233 counter-parts. With the \fBresult_format\fR parameter (previously
234 called \fBresult_filter\fR see the COMPATIBILITY section and below),
235 they expand to the corresponding components of input key rather
236 than the result value.
238 The above %S, %U and %D expansions are available with Postfix 2.2
239 and later.
240 .IP "\fB\fB%[1-9]\fR\fR"
241 The patterns %1, %2, ... %9 are replaced by the corresponding
242 most significant component of the input key's domain. If the
243 input key is \fIuser@mail.example.com\fR, then %1 is \fBcom\fR,
244 %2 is \fBexample\fR and %3 is \fBmail\fR. If the input key is
245 unqualified or does not have enough domain components to satisfy
246 all the specified patterns, the search is suppressed and returns
247 no results.
249 The above %1, ..., %9 expansions are available with Postfix 2.2
250 and later.
253 The "domain" parameter described below limits the input
254 keys to addresses in matching domains. When the "domain"
255 parameter is non-empty, LDAP queries for unqualified
256 addresses or addresses in non-matching domains are suppressed
257 and return no results.
259 NOTE: DO NOT put quotes around the \fBquery_filter\fR parameter.
260 .IP "\fBresult_format (default: \fB%s\fR)\fR"
261 Called \fBresult_filter\fR in Postfix releases prior to 2.2.
262 Format template applied to result attributes. Most commonly used
263 to append (or prepend) text to the result. This parameter supports
264 the following '%' expansions:
266 .IP "\fB\fB%%\fR\fR"
267 This is replaced by a literal '%' character. (Postfix 2.2 and later).
268 .IP "\fB\fB%s\fR\fR"
269 This is replaced by the value of the result attribute. When
270 result is empty it is skipped.
271 .IP "\fB%u\fR
272 When the result attribute value is an address of the form
273 user@domain, \fB%u\fR is replaced by the local part of the
274 address. When the result has an empty localpart it is skipped.
275 .IP "\fB\fB%d\fR\fR"
276 When a result attribute value is an address of the form
277 user@domain, \fB%d\fR is replaced by the domain part of
278 the attribute value. When the result is unqualified it
279 is skipped.
280 .IP "\fB\fB%[SUD1-9]\fR\fB"
281 The upper-case and decimal digit expansions interpolate
282 the parts of the input key rather than the result. Their
283 behavior is identical to that described with \fBquery_filter\fR,
284 and in fact because the input key is known in advance, lookups
285 whose key does not contain all the information specified in
286 the result template are suppressed and return no results.
288 The above %S, %U, %D and %1, ..., %9 expansions are available with
289 Postfix 2.2 and later.
292 For example, using "result_format = smtp:[%s]" allows one
293 to use a mailHost attribute as the basis of a transport(5)
294 table. After applying the result format, multiple values
295 are concatenated as comma separated strings. The expansion_limit
296 and size_limit parameters explained below allow one to
297 restrict the number of values in the result, which is
298 especially useful for maps that should return a single
299 value.
301 The default value \fB%s\fR specifies that each
302 attribute value should be used as is.
304 This parameter was called \fBresult_filter\fR in Postfix
305 releases prior to 2.2. If no "result_format" is specified,
306 the value of "result_filter" will be used instead before
307 resorting to the default value. This provides compatibility
308 with old configuration files.
310 NOTE: DO NOT put quotes around the result format!
311 .IP "\fBdomain (default: no domain list)\fR"
312 This is a list of domain names, paths to files, or
313 dictionaries. When specified, only fully qualified search
314 keys with a *non-empty* localpart and a matching domain
315 are eligible for lookup: 'user' lookups, bare domain lookups
316 and "@domain" lookups are not performed. This can significantly
317 reduce the query load on the LDAP server.
320     domain = postfix.org, hash:/etc/postfix/searchdomains
323 It is best not to use LDAP to store the domains eligible
324 for LDAP lookups.
326 NOTE: DO NOT define this parameter for local(8) aliases.
328 This feature is available in Postfix 1.0 and later.
329 .IP "\fBresult_attribute (default: maildrop)\fR"
330 The attribute(s) Postfix will read from any directory
331 entries returned by the lookup, to be resolved to an email
332 address.
335     result_attribute = mailbox, maildrop
337 .IP "\fBspecial_result_attribute (default: empty)\fR"
338 The attribute(s) of directory entries that can contain DNs
339 or URLs. If found, a recursive subsequent search is done
340 using their values.
343     special_result_attribute = memberdn
346 DN recursion retrieves the same result_attributes as the
347 main query, including the special attributes for further
348 recursion. URI processing retrieves only those attributes
349 that are included in the URI definition and are *also*
350 listed in "result_attribute". If the URI lists any of the
351 map's special result attributes, these are also retrieved
352 and used recursively.
353 .IP "\fBterminal_result_attribute (default: empty)\fR"
354 When one or more terminal result attributes are found in an LDAP
355 entry, all other result attributes are ignored and only the terminal
356 result attributes are returned. This is useful for delegating expansion
357 of group members to a particular host, by using an optional "maildrop"
358 attribute on selected groups to route the group to a specific host,
359 where the group is expanded, possibly via mailing-list manager or
360 other special processing.
363     terminal_result_attribute = maildrop
366 This feature is available with Postfix 2.4 or later.
367 .IP "\fBleaf_result_attribute (default: empty)\fR"
368 When one or more special result attributes are found in a non-terminal
369 (see above) LDAP entry, leaf result attributes are excluded from the
370 expansion of that entry. This is useful when expanding groups and the
371 desired mail address attribute(s) of the member objects obtained via
372 DN or URI recursion are also present in the group object. To only
373 return the attribute values from the leaf objects and not the
374 containing group, add the attribute to the leaf_result_attribute list,
375 and not the result_attribute list, which is always expanded. Note,
376 the default value of "result_attribute" is not empty, you may want to
377 set it explicitly empty when using "leaf_result_attribute" to expand
378 the group to a list of member DN addresses. If groups have both
379 member DN references AND attributes that hold multiple string valued
380 rfc822 addresses, then the string attributes go in "result_attribute".
381 The attributes that represent the email addresses of objects
382 referenced via a DN (or LDAP URI) go in "leaf_result_attribute".
385     result_attribute = memberaddr
386     special_result_attribute = memberdn
387     terminal_result_attribute = maildrop
388     leaf_result_attribute = mail
391 This feature is available with Postfix 2.4 or later.
392 .IP "\fBscope (default: sub)\fR"
393 The LDAP search scope: \fBsub\fR, \fBbase\fR, or \fBone\fR.
394 These translate into LDAP_SCOPE_SUBTREE, LDAP_SCOPE_BASE,
395 and LDAP_SCOPE_ONELEVEL.
396 .IP "\fBbind (default: yes)\fR"
397 Whether or not to bind to the LDAP server. Newer LDAP
398 implementations don't require clients to bind, which saves
399 time. Example:
402     bind = no
405 If you do need to bind, you might consider configuring
406 Postfix to connect to the local machine on a port that's
407 an SSL tunnel to your LDAP server. If your LDAP server
408 doesn't natively support SSL, put a tunnel (wrapper, proxy,
409 whatever you want to call it) on that system too. This
410 should prevent the password from traversing the network in
411 the clear.
412 .IP "\fBbind_dn (default: empty)\fR"
413 If you do have to bind, do it with this distinguished name. Example:
416     bind_dn = uid=postfix, dc=your, dc=com
418 .IP "\fBbind_pw (default: empty)\fR"
419 The password for the distinguished name above. If you have
420 to use this, you probably want to make the map configuration
421 file readable only by the Postfix user. When using the
422 obsolete ldap:ldapsource syntax, with map parameters in
423 main.cf, it is not possible to securely store the bind
424 password. This is because main.cf needs to be world readable
425 to allow local accounts to submit mail via the sendmail
426 command. Example:
429     bind_pw = postfixpw
431 .IP "\fBcache (IGNORED with a warning)\fR"
432 .IP "\fBcache_expiry (IGNORED with a warning)\fR"
433 .IP "\fBcache_size (IGNORED with a warning)\fR"
434 The above parameters are NO LONGER SUPPORTED by Postfix.
435 Cache support has been dropped from OpenLDAP as of release
436 2.1.13.
437 .IP "\fBrecursion_limit (default: 1000)\fR"
438 A limit on the nesting depth of DN and URL special result
439 attribute evaluation. The limit must be a non-zero positive
440 number.
441 .IP "\fBexpansion_limit (default: 0)\fR"
442 A limit on the total number of result elements returned
443 (as a comma separated list) by a lookup against the map.
444 A setting of zero disables the limit. Lookups fail with a
445 temporary error if the limit is exceeded.  Setting the
446 limit to 1 ensures that lookups do not return multiple
447 values.
448 .IP "\fBsize_limit (default: $expansion_limit)\fR"
449 A limit on the number of LDAP entries returned by any single
450 LDAP search performed as part of the lookup. A setting of
451 0 disables the limit.  Expansion of DN and URL references
452 involves nested LDAP queries, each of which is separately
453 subjected to this limit.
455 Note: even a single LDAP entry can generate multiple lookup
456 results, via multiple result attributes and/or multi-valued
457 result attributes. This limit caps the per search resource
458 utilization on the LDAP server, not the final multiplicity
459 of the lookup result. It is analogous to the "-z" option
460 of "ldapsearch".
461 .IP "\fBdereference (default: 0)\fR"
462 When to dereference LDAP aliases. (Note that this has
463 nothing do with Postfix aliases.) The permitted values are
464 those legal for the OpenLDAP/UM LDAP implementations:
466 .IP 0
467 never
468 .IP 1
469 when searching
470 .IP 2
471 when locating the base object for the search
472 .IP 3
473 always
476 See ldap.h or the ldap_open(3) or ldapsearch(1) man pages
477 for more information. And if you're using an LDAP package
478 that has other possible values, please bring it to the
479 attention of the postfix-users@postfix.org mailing list.
480 .IP "\fBchase_referrals (default: 0)\fR"
481 Sets (or clears) LDAP_OPT_REFERRALS (requires LDAP version
482 3 support).
483 .IP "\fBversion (default: 2)\fR"
484 Specifies the LDAP protocol version to use.
485 .IP "\fBdebuglevel (default: 0)\fR"
486 What level to set for debugging in the OpenLDAP libraries.
487 .SH "LDAP SSL AND STARTTLS PARAMETERS"
492 If you're using the OpenLDAP libraries compiled with SSL
493 support, Postfix can connect to LDAP SSL servers and can
494 issue the STARTTLS command.
496 LDAP SSL service can be requested by using a LDAP SSL URL
497 in the server_host parameter:
500     server_host = ldaps://ldap.example.com:636
503 STARTTLS can be turned on with the start_tls parameter:
506     start_tls = yes
509 Both forms require LDAP protocol version 3, which has to be set
510 explicitly with:
513     version = 3
516 If any of the Postfix programs querying the map is configured in
517 master.cf to run chrooted, all the certificates and keys involved
518 have to be copied to the chroot jail. Of course, the private keys
519 should only be readable by the user "postfix".
521 The following parameters are relevant to LDAP SSL and STARTTLS:
522 .IP "\fBstart_tls (default: no)\fR"
523 Whether or not to issue STARTTLS upon connection to the
524 server.  Don't set this with LDAP SSL (the SSL session is setup
525 automatically when the TCP connection is opened).
526 .IP "\fBtls_ca_cert_dir (No default; set either this or tls_ca_cert_file)\fR"
527 Directory containing X509 Certificate Authority certificates
528 in PEM format which are to be recognized by the client in
529 SSL/TLS connections. The files each contain one CA certificate.
530 The files are looked up by the CA subject name hash value,
531 which must hence be available. If more than one CA certificate
532 with the same name hash value exist, the extension must be
533 different (e.g. 9d66eef0.0, 9d66eef0.1 etc). The search is
534 performed in the ordering of the extension number, regardless
535 of other properties of the certificates. Use the c_rehash
536 utility (from the OpenSSL distribution) to create the
537 necessary links.
538 .IP "\fBtls_ca_cert_file (No default; set either this or tls_ca_cert_dir)\fR"
539 File containing the X509 Certificate Authority certificates
540 in PEM format which are to be recognized by the client in
541 SSL/TLS connections. This setting takes precedence over
542 tls_ca_cert_dir.
543 .IP "\fBtls_cert (No default; you must set this)\fR"
544 File containing client's X509 certificate to be used by
545 the client in SSL/ TLS connections.
546 .IP "\fBtls_key (No default; you must set this)\fR"
547 File containing the private key corresponding to the above
548 tls_cert.
549 .IP "\fBtls_require_cert (default: no)\fR"
550 Whether or not to request server's X509 certificate and
551 check its validity when establishing SSL/TLS connections.
552 The supported values are \fBno\fR and \fByes\fR.
554 With \fBno\fR, the server certificate trust chain is not checked,
555 but with OpenLDAP prior to 2.1.13, the name in the server
556 certificate must still match the LDAP server name. With OpenLDAP
557 2.0.0 to 2.0.11 the server name is not necessarily what you
558 specified, rather it is determined (by reverse lookup) from the
559 IP address of the LDAP server connection. With OpenLDAP prior to
560 2.0.13, subjectAlternativeName extensions in the LDAP server
561 certificate are ignored: the server name must match the subject
562 CommonName. The \fBno\fR setting corresponds to the \fBnever\fR
563 value of \fBTLS_REQCERT\fR in LDAP client configuration files.
565 Don't use TLS with OpenLDAP 2.0.x (and especially with x <= 11)
566 if you can avoid it.
568 With \fByes\fR, the server certificate must be issued by a trusted
569 CA, and not be expired. The LDAP server name must match one of the
570 name(s) found in the certificate (see above for OpenLDAP library
571 version dependent behavior). The \fByes\fR setting corresponds to the
572 \fBdemand\fR value of \fBTLS_REQCERT\fR in LDAP client configuration
573 files.
575 The "try" and "never" values of \fBTLS_REQCERT\fR have no equivalents
576 here. They are not available with OpenLDAP 2.0, and in any case have
577 questionable security properties. Either you want TLS verified LDAP
578 connections, or you don't.
580 The \fByes\fR value only works correctly with Postfix 2.5 and later,
581 or with OpenLDAP 2.0. Earlier Postfix releases or later OpenLDAP
582 releases don't work together with this setting. Support for LDAP
583 over TLS was added to Postfix based on the OpenLDAP 2.0 API.
584 .IP "\fBtls_random_file (No default)\fR"
585 Path of a file to obtain random bits from when /dev/[u]random
586 is not available, to be used by the client in SSL/TLS
587 connections.
588 .IP "\fBtls_cipher_suite (No default)\fR"
589 Cipher suite to use in SSL/TLS negotiations.
590 .SH "EXAMPLE"
595 Here's a basic example for using LDAP to look up local(8)
596 aliases.
597 Assume that in main.cf, you have:
600     alias_maps = hash:/etc/aliases,
601             ldap:/etc/postfix/ldap-aliases.cf
604 and in ldap:/etc/postfix/ldap-aliases.cf you have:
607     server_host = ldap.example.com
608     search_base = dc=example, dc=com
611 Upon receiving mail for a local address "ldapuser" that
612 isn't found in the /etc/aliases database, Postfix will
613 search the LDAP server listening at port 389 on ldap.example.com.
614 It will bind anonymously, search for any directory entries
615 whose mailacceptinggeneralid attribute is "ldapuser", read
616 the "maildrop" attributes of those found, and build a list
617 of their maildrops, which will be treated as RFC822 addresses
618 to which the message will be delivered.
619 .SH "SEE ALSO"
622 postmap(1), Postfix lookup table manager
623 postconf(5), configuration parameters
624 mysql_table(5), MySQL lookup tables
625 pgsql_table(5), PostgreSQL lookup tables
626 .SH "README FILES"
631 Use "\fBpostconf readme_directory\fR" or
632 "\fBpostconf html_directory\fR" to locate this information.
635 DATABASE_README, Postfix lookup table overview
636 LDAP_README, Postfix LDAP client guide
637 .SH "LICENSE"
642 The Secure Mailer license must be distributed with this software.
643 .SH "AUTHOR(S)"
648 Carsten Hoeger,
649 Hery Rakotoarisoa,
650 John Hensley,
651 Keith Stevenson,
652 LaMont Jones,
653 Liviu Daia,
654 Manuel Guesdon,
655 Mike Mattice,
656 Prabhat K Singh,
657 Sami Haahtinen,
658 Samuel Tardieu,
659 Victor Duchovni,
660 and many others.